
uart总线 一对多通信
简介
利用二极管实现uart一对多通信
简介:利用二极管实现uart一对多通信开源协议
:GPL 3.0
描述
详细介绍:https://blog.csdn.net/Ajisa_i/article/details/124731439?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22124731439%22%2C%22source%22%3A%22Ajisa_i%22%7D&ctrtid=EKJuC
验证方案可行。type-c不接电源不影响串口总线的使用,接入电源的时候可以引出5v与3.3v接口给模块供电。板子简陋,你们知道原理就行,可以用到自己的工程里。
原理:
1.硬件层改造
当我们使用的单片机uart接口不足,我们可以利用UART实现总线型一主多从通讯结构,如图所示。
图1 UART总线型通讯结构
如果直接将从机的TX连接到主机的RX,那么从机之间的TX引脚就连接在一起,如图2所示。当Slave1尝试向Master发送信息时,由于UART以低电平为起始标志,Slave1的TX引脚为低电平,而Slave2的TX引脚为高电平。此时电流由Slave2的TX引脚流向Slave1的TX引脚,Slave1的TX引脚灌电流升高。由于器件存在内阻,电流增大导致节点p电压升高,最终我们看到Slave1的TX引脚电平升高了。
由于引脚电平升高,Master的RX端接收不到Slave1的TX端发来的低电平,串口通信也就无从开始。
图2 灌电流引起引脚电平升高
解决方案的其中之一是将从机的通信引脚设置为开漏输出。在开漏输出模式下,引脚在高电平逻辑下既不输出高电平,也不输出低电平,而是高阻态,需要外接上拉电阻以输出高电平。由于上拉电阻的存在,灌电流非常小,也就避免了引脚电平升高的问题。但是,我们往往无法对从机进行二次开发,即无法改变其通信引脚的输出模式。
图3展示了另外一种解决方案,此方案中,从机的TX引脚与二极管阴极相连,二极管阳极连接到主机的RX引脚。由于二极管的单向导通性,灌电流将被限制在一个极小的范围,相当于断路,从而避免了引脚低电平升高的问题。由于主机的RX引脚是一个上拉输入的状态,因此二极管截止的时候也不会影响高电平的采样。
图3 使用二极管限制灌电流
实际上根据原理,N+1个从机只需要N个二极管,这个就留给你们去验证吧。
设计图
BOM
ID | Name | Designator | Footprint | Quantity |
---|---|---|---|---|
1 | 10u | C1 | C0603 | 1 |
2 | 0.1u | C10,C13 | C0603 | 2 |
3 | 1N4148WS_C908249 | D1,D2,D3 | SOD-323_L1.8-W1.3-LS2.5-RD | 3 |
4 | HDR-M-2.54_1x3 | J1,J2,J3,J4,J5,J6,J7 | HDR-M-2.54_1X3 | 7 |
5 | LED-0603_R | LED1 | LED0603_RED | 1 |

评论