一、问题背景
1.1 硬件连接框图
如图1所示是简化的硬件连接框图,本来有18个SLAVE设备,问题的复现只需要两个所以只画了两个SLAVE设备。MASTER和SLAVE1、SLAVE2使用485总线进行通信,其中MONITOR是一个监听设备,用于监听所有在总线上的数据,监听数据并分析是在调试各类总线型通信时常用的手段,两个120欧电阻是首尾匹配电阻所以485总线的阻抗是60欧。
其中SLAVE1、SLAVE2、MONITOR都是使用STM32F207+ADM2682扩展出来485,接收方式是使用帧中断;MASTER是对方设计的所以不清楚使用的主控芯片、中断方式是帧中断接收还是字节中断接收,通过图6可以分析出来应该是字节中断,因为MASTER反应时间t2是远小于SLAVE的反应时间t1。
双方约定命令主要有两种:①、MASTER会定时20ms向SLAVE发送取数指令,SLAVE向MASTER返回传感器测试值Y;②、如果MASTER解析出来传感器测试值Y在[-X,X]范围内,MASTER会向SLAVE发送清零指令,SLAVE需要将Y值清零,SLAVE不需要返回任何数据。
图1 硬件连接框图
|