TransmitMailbox可能返回的返回值可能是0.1.2和4,你可以看看你发送完以后收到的这个TransmitMailbox是不是等于4,等于4就没有必要执行你上面的这个循环了,当返回4时表示当前CAN控制器无空闲邮箱。CAN是需要至少两个正常节点才能通信的。
stm32是一块单片机,就是一块控制芯片.
CAN总线是一种通讯协议,就像咱们的串口,是用于器件之间通讯用的.
就像咱们的串口需要一块MAX232芯片作逻辑转换一样,CAN也需要一块专门的CAN芯片支持.
单片机普通IO脚接CAN芯片,单片机发出通讯信号给CAN芯片作逻辑转换后,CAN芯片将信号放到CAN总线上去传输,信号到了目的地后进入另一块CAN芯片,CAN芯片将处理好的信号给予目标芯片.
使用stm32can控制器自带的回环模式测试收发功能看是否正常
若正常,那就是另一个接收数据的对象接收驱动没写好
若不正常,那就说明至少此stm32can的发送驱动没写好
如果以上示例都完成后stm32仍然无法正常通信,那就是硬件的原因,可以先查看芯片电压等是否配置正常,是否损坏等。
ps:can通信距离近的情况下不建议接120欧姆终端电阻,否则可能出现通信过程中丢帧或通信失败情况
本文标签:stm32换了芯片can不工作