STM32F103的TXD和RXD是否要接上拉电阻?

[复制链接]
 楼主| diyiyuzhousu 发表于 2012-3-29 08:59 | 显示全部楼层 |阅读模式
请教各位大侠,我在用MAX3232芯片连接单片机时,一开始用PC接收数据有N多乱码。之后正常工作。
我用示波器查看管脚,接收乱码时,我的CPU的TXD并没有向外发送数据。单片机是用的STM32103F的。

怀疑是ST的芯片管脚初始化没有做好。用的是推挽输出。。。

这个乱码是怎么形成的呢?是不是一开始CPU管脚初始化的时候TXD,RXD管脚上时未知信号导致的?

所以CPU管脚处,TXD、RXD一定要接上拉电阻吗?
为什么呢?

感觉问题好低级啊。。。。。。

谢谢大家了。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
清风致影 发表于 2012-3-29 10:34 | 显示全部楼层
觉得可以不加 如果pc端发乱码 可以用软件过滤掉的啊
waszyaw 发表于 2012-3-29 11:49 | 显示全部楼层
不用加,有用过,
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;
waszyaw 发表于 2012-3-29 11:51 | 显示全部楼层
RX配置为:
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;
TX配置为:
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;
 楼主| diyiyuzhousu 发表于 2012-3-30 13:49 | 显示全部楼层
谢谢楼主回复呵。不加不可以的。我原来是想不加的。TX和RX都用开漏和推挽输出试过了。都不行。
现象是在开机上电时,PC端有N多乱码。
以为是ST芯片的问题。但是。当我把ST片子程序擦除之后还是有乱码。我估计是232芯片的问题。。。
就是说一开机上电,如果TX和RX电平不确定,默认的就会有乱码出现。

其实,如果是只有1个乱码我也就认了。现在是N多。所以很无语啊。。。
Ryanhsiung 发表于 2012-3-30 15:36 | 显示全部楼层
这个乱码我也想去掉,我也说一下:
加上拉、推挽只能减少乱码的个数,没有办法彻底解决。
告诉你两个方法:
  1、找一个片子有通断RX TX功能(像2483中的RTEN TXEN脚)
  2、找一个继电器,串在RX TX脚上,上电默认RX TX断开(前提要知道芯片开机后IO的状态,可能还要加上拉、下拉)。单片机初始化后再接通。

评论

通信线上用继电器控制通断?成本多少了?  发表于 2020-12-24 16:31
ningling_21 发表于 2012-3-30 15:56 | 显示全部楼层
两路UART用一个232芯片,容易互相干扰...
也就出现乱码...
mohanwei 发表于 2012-3-30 16:07 | 显示全部楼层
LS两位都很有才……
dqyubsh 发表于 2012-3-30 16:17 | 显示全部楼层
单片机的TXD并没有向外发送数据,并不等于232芯片的TXD没有向外发送数据,为什么这里不做下测量?

现在散件市场上的3232都烂街了,出各种问题都不奇怪,这个芯片是不能从电子市场拿货的。如果商家说是国产的,立即扔掉,然后去正规代理商那买。。
qq65411253 发表于 2012-3-30 19:12 | 显示全部楼层
8楼把我想说的话都说了。
doit12345 发表于 2012-5-24 10:49 | 显示全部楼层
我在实际产品中也遇到此类问题,经过反复实验,在单片机的RX与TX引脚上连接一个弱上拉电阻,电阻取值在51K左右,通讯一切正常!
ayb_ice 发表于 2012-5-24 11:58 | 显示全部楼层
应该是不需要的,TXD是输出信号,自己控制,RXD是输入信号,外部控制
总之连接的双方一个是输出,一个是输入
接一个也不嫌多
gx_huang 发表于 2012-5-24 12:41 | 显示全部楼层
上电时,GPIO的状态不确定,所以有乱码。加上拉会有好处,正常不需要加。
开机的乱码需要软件协议处理,如果软件没有容错措施,说明设计有问题。
经常补钙 发表于 2012-5-25 18:47 | 显示全部楼层
TXD下拉,RXD上拉,阻值10K。还是不行检测一下3232芯片的电容是否错误
 楼主| diyiyuzhousu 发表于 2012-11-9 09:29 | 显示全部楼层
这个问题最后我还是没有完全明确。不过按照惯有的思路,我还是在txd和rxd上面加了上拉电阻。然后txd和rxd设置为了上拉电阻模式。因为出现的乱码基本不影响通讯结果。因此我没有太过于专注这个问题。暂时没有出什么问题。以后再好好解决了。谢谢大家。:)
 楼主| diyiyuzhousu 发表于 2012-11-9 09:32 | 显示全部楼层
各位老师,分不够了。。。抱歉了。。。
 楼主| diyiyuzhousu 发表于 2012-11-9 09:39 | 显示全部楼层
[img][/img]
另外再给大家一个我们调试出来的232电路。
RS232_RX_IN和RS232_TX_IN接PC端。这个tx 和rx 是CPU的管脚。RS232_RX和RS232_TX是另一个CPU的管脚。这个可以实现两个CPU都使用该接PC端口的232管脚。不过,2个CPU不能同时使用串口通讯,只能由一个进行通讯,另一个处于高阻态设置。
 楼主| diyiyuzhousu 发表于 2012-11-9 09:43 | 显示全部楼层
电路图是这样,TX RX就按照单片机标示的连接即可。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
marsaire 发表于 2013-9-5 19:47 | 显示全部楼层
可能是上电的时候RS232TX端口接的管脚是高阻,然后它的值是0,0代表uart协议的起始位,所以开始传输数据了,不知是不是这个道理。
坐等大神解答。
marsaire 发表于 2013-9-5 19:51 | 显示全部楼层
还有就是看管脚初始化前是什么复用状态,tx,rx都接个上拉,保证上电的时候是连续的1,这样串口认为还没开始传输数据,应该就没问题了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

14

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部