测试过GD32E103,GD32F303,都有这个问题,其它型号有待确认,大概率GD32全系CAN外
设都有这个问题。
CAN状态寄存器的bit9 RS表示接收状态,实际测试,CAN初始化退出睡眠模式以后RS位就
是1,进入初始化模式以后RS位清零,退出初始化模式以后RS=1
然后整个使用过程中这个RS位一直都是1,本来这个位是指示CAN硬件有没有在接收数据
的,现在完全失去了意义。
CAN的一帧很长,需要上百个位,持续数百微秒,硬件接收完了完整一帧才会放入FIFO,
软件才能查询到,所以如果软件想知道硬件是否在接收数据,这个接收指示位就很重要
,如果这个位行为异常,软件通过RX管脚来判断是否CAN正在接收数据非常困难。
实测STM32和AT32的这个RS位行为是正常的,只有接收数据的时候才会置1,可以判断CAN的
接收状态。
联系过GD原厂,确认了这个问题,GD32的CAN外设无法通过硬件判断CAN外设是否在接收
数据,还有更坏的消息:原厂不认为这是bug,也不打算在新产品型号中更改。
好消息是他们的CAN IP是自研的,所以这个bug应该是GD32芯片独有的,不会影响其它厂
商的产品。
--
修改:spadger FROM 222.90.95.*
FROM 222.90.95.*