打印
[STM8]

关于STM8使用TTL电平串口多机通信无法发送的问题

[复制链接]
4767|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 cod1239 于 2016-4-3 20:42 编辑

一个TTL电平的串口总线,一个主机,多个从机,双工
出现了问题,只能一对一的通信,如果多个从机那么从机就无法///正常发送(从机可以正常接收)
根据网络上的资料,这是因为TX口驱动能力的问题,应配置为开漏输出,但STM8如果使用了串口,那么IO口是不需要自己配置的,在手动配置TX为开漏后问题依旧(是否使能内部上拉电阻问题均依旧);在STM32上曾经做过相似的串口多机通信,可以正常收发,当时没有这个问题
现在的办法是在软件层修改,在需要发送数据的时候才打开串口的发送功能,否则关闭
这种办法可以解决,但始终感觉不是一个好办法,大家有没有什么好办法
法///正这个词为什么会被屏蔽,这不是人名吗

沙发
zyj9490| | 2016-4-3 21:41 | 只看该作者
外接上拉电阻即可。串口驱动内阻太大(拉出电流有限)看高电平时,实际的电压值是多少。《2V了,肯定是驱动不够导致。

使用特权

评论回复
板凳
玄德| | 2016-4-4 15:48 | 只看该作者

主机发给从机,可能是TX驱动能力有限,这个好办;
多个机器同时发送,怎么考虑的?


使用特权

评论回复
地板
zyj9490| | 2016-4-4 16:57 | 只看该作者
本帖最后由 zyj9490 于 2016-4-4 16:59 编辑

参考下STC的多机通信,也是主从结构。最好外部加一个上拉电阻为更好,在主机RX端。防止主机的RX端没有配制成上拉电阻

捕获8.PNG (87.71 KB )

捕获8.PNG

使用特权

评论回复
5
cod1239|  楼主 | 2016-4-5 09:43 | 只看该作者
zyj9490 发表于 2016-4-4 16:57
参考下STC的多机通信,也是主从结构。最好外部加一个上拉电阻为更好,在主机RX端。防止主机的RX端没有配制 ...

二极管是朝着TX引脚的,那还能有信号出来吗?

使用特权

评论回复
6
zyj9490| | 2016-4-5 09:49 | 只看该作者
cod1239 发表于 2016-4-5 09:43
二极管是朝着TX引脚的,那还能有信号出来吗?

可以看出,RX端内部有上拉电阻,还有我上一楼建议的外加上拉电阻,是怕内部上拉电阻的内阻过大,导致速度不够快,通过外加上拉电阻加速。

使用特权

评论回复
7
zyj9490| | 2016-4-5 09:51 | 只看该作者
玄德 发表于 2016-4-4 15:48
主机发给从机,可能是TX驱动能力有限,这个好办;
多个机器同时发送,怎么考虑的?

需要协议约束,这是由主机控制的,主机下发命令,从机响应,是有地址编号的,如MODBUS协议。

使用特权

评论回复
评论
玄德 2016-4-5 10:04 回复TA
希望LZ理解。 
8
cod1239|  楼主 | 2016-4-5 10:04 | 只看该作者
zyj9490 发表于 2016-4-5 09:49
可以看出,RX端内部有上拉电阻,还有我上一楼建议的外加上拉电阻,是怕内部上拉电阻的内阻过大,导致速度 ...

谢谢!上拉电阻我懂了,只是这个二极管不是很懂,如果是负极对着TX的话,那岂不是相当于断路,不会有任何信号变化啊,这种情况上拉还有用吗

使用特权

评论回复
9
cod1239|  楼主 | 2016-4-5 10:07 | 只看该作者
zyj9490 发表于 2016-4-5 09:51
需要协议约束,这是由主机控制的,主机下发命令,从机响应,是有地址编号的,如MODBUS协议。 ...

控制协议我已经设计好了,理解,谢谢!

使用特权

评论回复
10
zyj9490| | 2016-4-5 11:43 | 只看该作者
本帖最后由 zyj9490 于 2016-4-5 13:32 编辑
cod1239 发表于 2016-4-5 10:04
谢谢!上拉电阻我懂了,只是这个二极管不是很懂,如果是负极对着TX的话,那岂不是相当于断路,不会有任何 ...

输出0时,二极管导通,RX端被拉低到低电平,输出1时,二极管不导通,RX端通过上拉电阻电平被提升到高电平。这也叫高电平隔离。这样可在硬件上避了多个TX同时输出有高电平和低电平相竟争而损坏TX端口的状况。特别是PP输出配置的TX端口。

使用特权

评论回复
11
Harvard| | 2016-10-14 22:55 | 只看该作者
太精彩了  正需要 板级\多机通信, 跑个modbus

使用特权

评论回复
12
Harvard| | 2016-10-14 22:59 | 只看该作者
不知道二极管的存在是否会通信的速率产生限制.

使用特权

评论回复
13
wishriver| | 2017-6-27 21:44 | 只看该作者
看起来时间这么久了,并没有人详细的试验过串口多机通讯问题
stm8s是支持多机通信的,地址配置 msb为1即可,平时静默
说实话不太好用
因为初始化串口之后,TXD的模式就默认设定为了GPIO_MODE_OUT_PP_HIGH_FAST模式,是不能额外配置的
推完模式是不支持线与的
所以,串口初始化的时候,设定为只接,不使能发送,然后再设置一下GPIO_Init(GPIOA , GPIO_PIN_5 , GPIO_MODE_OUT_OD_HIZ_FAST);就可以了

这样左右的子机全是of,支持线与
多机通信可以自己更灵活的配置了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

5

帖子

0

粉丝