打印

一个单片机和40个单片机通过232通信的问题

[复制链接]
楼主: jhc8711
手机看帖
扫描二维码
随时随地手机跟帖
21
jhc8711|  楼主 | 2014-10-14 14:33 | 只看该作者 回帖奖励 |倒序浏览
1.单片机之间不用通信,所有单片机的接收线并联,发送线也并联,各发送线要接一个缓冲电阻防止发送冲突,通信原理是:PC发有地址的数据,所有单片机接收到数据包后比较地址是否和本身地址相同,每次只能有一个是相同的,此单片机发送数据,和stm32通信。
只有发送的单片机才把发送线端口置成强推拉方式,平时则为悬空或弱上拉方式以缓解发送单片机的驱动压力。
2.是用双串口单片机,将多个单片机串口两两级联起来,最后和PC连接,通信原理是PC机发送带有单片机地址的数据时从第一个一直往下传直到和地址相同的单片机结束,当地址不同时,就转发上一级单片机传下来的数据。
3.用可以并接多个端子的通信协议方式,然后转成RS232格式给单片机。这个协议不是232的,因为232不能接多个且有相互通信功能,

使用特权

评论回复
22
jhc8711|  楼主 | 2014-10-14 14:34 | 只看该作者
这个是我网上看到的pc 232多机通讯

使用特权

评论回复
23
jhc8711|  楼主 | 2014-10-14 14:36 | 只看该作者
1.单片机之间不用通信,所有单片机的接收线并联,发送线也并联,各发送线要接一个缓冲电阻防止发送冲突,通信原理是:PC发有地址的数据,所有单片机接收到数据包后比较地址是否和本身地址相同,每次只能有一个是相同的,此单片机发送数据,和stm32通信。
只有发送的单片机才把发送线端口置成强推拉方式,平时则为悬空或弱上拉方式以缓解发送单片机的驱动压力。
2.是用双串口单片机,将多个单片机串口两两级联起来,最后和PC连接,通信原理是PC机发送带有单片机地址的数据时从第一个一直往下传直到和地址相同的单片机结束,当地址不同时,就转发上一级单片机传下来的数据。
3.用可以并接多个端子的通信协议方式,然后转成RS232格式给单片机。这个协议不是232的,因为232不能接多个且有相互通信功能,

使用特权

评论回复
24
joyme| | 2014-10-14 15:05 | 只看该作者
数据量不大,19200左右的波特率,应该没有问题,加三极管可以增强带载能力,之前做过1带10的,现在的是1带16,协议自己规划好

使用特权

评论回复
25
jhc8711|  楼主 | 2014-10-14 15:05 | 只看该作者
我是40个单片机只收不发,主控板上一个单片机来发送指令

使用特权

评论回复
26
BadWolf| | 2014-10-14 15:29 | 只看该作者
LZ,用232来实现你的需求是没有问题的.但为了系统稳定,建议将232芯片换成485/422,实现起来完全是一样的.
系统设计中采用一个主机,其他为从机,每个从机分配一个地址,协议中加入地址信息即可.

使用特权

评论回复
27
jhc8711|  楼主 | 2014-10-14 15:37 | 只看该作者
dirtwillfly 发表于 2014-10-14 13:37
必须要使用232通讯吗?

一个单片机只发不收是主机,另外40个单片机只收不发是丛机,所有单片机通过max3232的接收线并联,发送线也并联,我想先发送地址如果和拨码不同,引脚变高阻态,一共是24个单片机,您看这样行不?

使用特权

评论回复
28
chen_jhhb| | 2014-10-14 15:39 | 只看该作者
行,就是很麻烦

使用特权

评论回复
29
jhc8711|  楼主 | 2014-10-14 15:42 | 只看该作者
BadWolf 发表于 2014-10-14 15:29
LZ,用232来实现你的需求是没有问题的.但为了系统稳定,建议将232芯片换成485/422,实现起来完全是一样的.
系 ...

多谢回复,我觉得也可以,就是没具体做过,只听人搞过4个的,40个不知道行不行了,没有做成功过这类232通信的朋友吗

使用特权

评论回复
30
jhc8711|  楼主 | 2014-10-14 15:47 | 只看该作者
joyme 发表于 2014-10-14 15:05
数据量不大,19200左右的波特率,应该没有问题,加三极管可以增强带载能力,之前做过1带10的,现在的是1带1 ...

能具体上个图吗?三极管来增强带载能力

使用特权

评论回复
31
BadWolf| | 2014-10-14 15:49 | 只看该作者
jhc8711 发表于 2014-10-14 15:42
多谢回复,我觉得也可以,就是没具体做过,只听人搞过4个的,40个不知道行不行了,没有做成功过这类232通 ...

其实只要考虑主机的驱动能力,将波特率降下来就OK了.另外,通讯最好要有收有发,这样系统才稳定,要不主机怎么知道从机接收了没.

使用特权

评论回复
32
joyme| | 2014-10-14 16:03 | 只看该作者
TXD驱动三极管拉低从机RXD(可线与)

使用特权

评论回复
33
dirtwillfly| | 2014-10-14 16:06 | 只看该作者
jhc8711 发表于 2014-10-14 15:37
一个单片机只发不收是主机,另外40个单片机只收不发是丛机,所有单片机通过max3232的接收线并联,发送线 ...

应该可以。23楼那个方法可以参考

使用特权

评论回复
34
joyme| | 2014-10-14 16:07 | 只看该作者
从机TXD接个二极管隔离,相当于或电路,只有发送那个的那个单片机对总线有影响,其他不工作的单片机不对总线有影响

使用特权

评论回复
35
xuryan| | 2014-10-14 16:19 | 只看该作者
不行的,我试过,带3个都不行,高电平不够

使用特权

评论回复
36
hanyafeng| | 2014-10-14 16:22 | 只看该作者
可以的,主要看怎么驱动nrz的信息,还有就是软件如何调配通信时序。cctalk协议,在短距离里支持多设备通信,当然还要看波特率设置,以及你总线怎么架构的。

使用特权

评论回复
37
joyme| | 2014-10-14 16:23 | 只看该作者
3个都不行肯定是你电路设计的问题,10个、16个(1个3.3V TTL带16个5V TTL,单片机内部UART)的都验证过可行,

使用特权

评论回复
38
jhc8711|  楼主 | 2014-10-14 16:47 | 只看该作者
我可不可以这样做,似乎就不用在去考虑驱动能力的问题了,是用双串口单片机,将多个单片机串口两两级联起来,比如主单片机发送给第一个单片机先接受数据包,然后判断地址,如果和本单片机的地址不同,把数据包用从另外一个串口发给第二个单片机,如此一个一个下去?

使用特权

评论回复
39
jhc8711|  楼主 | 2014-10-14 16:48 | 只看该作者
dirtwillfly 发表于 2014-10-14 16:06
应该可以。23楼那个方法可以参考

我可不可以这样做,似乎就不用在去考虑驱动能力的问题了,是用双串口单片机,将多个单片机串口两两级联起来,主单片机发送给第一个单片机先接受数据包,然后判断地址,如果和本单片机的地址不同,把数据包用从另外一个串口发给第二个单片机,如此一个一个下去?

使用特权

评论回复
40
失控的单片机| | 2014-10-14 19:07 | 只看该作者
建议用485通讯吧。我在用STM32下带80个16单片机就是用RS485通的。。。

使用特权

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

本版积分规则