|
stm32串口通信支持地址唤醒,但是地址位只有4位,也就是说最多连接16个..在很多情况下都不够用。
除此以外还有其他问题,比如,对于1号地址,接收的数据必须以0x81开头,但是如果给2号地址发送:
82 05 05 81 02 02
那么一号机就会收到81 02 02...
我设想的解决办法是:
1,地址扩展,地址唤醒后再增加一句扩展地址判断,如果扩展地址匹配失败,则进入静默状态。
并且增加校验位,针对第二个问题,在数据帧后面增加校验位 ,比如CRC16,就算一号机接收到错误的数据,也不能通过校验..(但是这样的话,效率很低的样子啊)
2,不使用地址唤醒,使用总线空闲唤醒,从机被唤醒后,检测第一位为地址位,如果地址位不匹配则进入静默状态
大家有没有什么更好的办法?
(还有个问题是,已经被唤醒的情况下,通过软件判断是被错误地唤醒了,怎么设置它再次进入静默状态??RWU要怎么设置?)
|
|