二总线通信设计专栏
- 《二总线,替代传统485总线通讯,选型及应用-CSDN博客》
- 《二总线,替代传统485总线通讯,低成本直流载波方案实现及原理-CSDN博客》
- 《二总线,替代传统485总线通讯,调试避坑指南之最大的电流环路坑-CSDN博客》
- 《二总线,替代传统485总线通讯,从站设计关注一个地方十倍提升-CSDN博客》
- 《二总线,替代传统485总线通讯,主动上报方案简易实现方法-CSDN博客》
- 《二总线,替代传统485总线通讯,地址自动分配或主动上报方案-CSDN博客》
- 《二总线,替代传统485总线通信,商用高效从机掉线检测方案-CSDN博客》
- 《二总线,替代传统485总线通信,线材选型及避坑-CSDN博客》
- 《二总线,替代传统485总线通讯,主站设计-CSDN博客》
- 《二总线,替代传统485总线通讯,直流载波主机设计方案-CSDN博客》
- 《二总线,替代传统485总线通讯,低成本直流载波PCB设计要点总结-CSDN博客》
- 《二总线,替代传统485总线通讯,在线地址分配商用方案解析-CSDN博客》
- 《二总线,替代传统485总线通讯,高速直流载波通信应用-CSDN博客》
一、概述
二总线通讯和传统485通讯类似,不能像CAN一样,在物理层面实现总线冲突检测,但在实际产品需求中,确实存在少量的偶发性上报,但又有即时性要求的需求,这种少量、偶发性主动上报功能利用软件也同样可以实现。
二、本文类容
本文主要利用XM2BUS的从站芯片XM332芯片的CSMA端口引脚,配合软件逻辑来实现主动上报的原理讲解,本文所涉及的主动上报主要针对少量、偶发性的主动上报,比如电子围栏、货架、生产线传感器异常报警、车库系统车位传感器检测等。
三、XM332功能介绍
在博文《二总线,选型及应用-CSDN博客》中以及介绍了XM620+XM332的基本原理,有需要可以先去了解,XM620为主站,XM332为从站,其通讯方式为半双工主从模式,即主站下发数据所有从站均可收到,从站上传数据,只有主站能够收到。
XM332引脚说明如下所示,其中第4脚为CSMA载波监听引脚,主要监控总线当前数据(包括主站下发和其它从站上传),有数据(低电平),空闲(高电平);但是要注意的是由于二总线通讯波特率是2400bps/9600bps,本身单字节数据就超过1ms以上,所以仍然会产生数据冲突,需要理解这点,才能设计比较靠谱的冲突检测逻辑。
引脚 | 名称 | 输入 | 输出 | 说明 |
1 | VCC | 电压输入:(2.7~5.0)V | ||
2 | TX | √ | 芯片串口发送端 | |
3 | RX | √ | 芯片串口接收端,建议串联100Ω电阻 | |
4 | CSMA | √ | 载波监听,有数据(低电平);空闲(高电平) | |
5 | PO | √ | 总线信号输出,外接三极管控制100欧电阻接入总线 | |
6 | NC2 | 预留,请悬空或者与7脚短接 | ||
7 | PI | √ | 总线信号输入,需要外接分压电阻 | |
8 | GND | 电源地 |
四、主动上报实现方法
主从通讯中,由于主动上报的内容只是偶发性的,即时性要求高,更多的是对即时性要求不高的巡检操作,首先要区分轮询命令上报和主动上报;在主机轮询命令下,XM332的CSMA引脚有2~3byte的延迟释放时间,从机应改在这个时段内尽快回复,以抢占总线,这样就能避免主动上报和轮询上报的冲突,如果从机无法及时上报,那也可以先回复已经收到指令的上报内容,下次再轮询查询结果。
主机轮询上报区分后,那么在主动上报中最大的坑就是切忌不要等CSMA一空闲马上上报,因为前面提到CSMA是有单字节延迟的,如果系统中若有2台设备同时需要上报,那么就必然会在这1ms内产生冲突;而是要等CSMA引脚释放后,随机等待N Byte,若还空闲则进行上报。
如果做到随机数产生,一般简单的方案是采用的就是TIM定时器,不分频的计数值,在产生串口中断/人工触发中断来产生,也可以利用某个AD口采样的bit0,多次采样组合成8 bit形成一个随机值。
疑问:若还是运气不好,产生了冲突怎么办?主动上报数据增加CRC校验即可;首先主机收到从机的主动上报数据,并进行CRC校验正确,则告知从机数据已经收到,避免从机多次重复上报,若从机未收到主机成功收到,那可以到下一轮再主动上报,并主动延长N Byte延时值减小冲突概率,这些细节问题可以根据产品实际情况而调整,也可以和我一起相互讨论。
五、总结
本文主要针对XM2BUS二总线对偶发性的主动上报提供解决方案思路,而对于更复杂的多从机,大量并发性主动上报,如自动地址分配,采用的策略则完全不同,当然还有即时性的设备掉线检测等方案,后续也会发布出来,希望一起相互讨论学习,也希望大家多多关注和收藏,谢谢啦。