各种通信协议速度分析
协议 | 最高速度(btis/s) |
---|---|
I2C | 400K |
CAN | 1M |
CAN-FD | 5M |
485 | 10M |
SPI | 36M |
CAN协议图和通信帧
CubeMX CAN配置说明
CAN通信波特率 = APB1频率 / 分频系数 /(BS1 + BS2 + 同步通信段)* 1000
= 42 / 1 / (1+1+1) * 1000
= 14,000 KHz
= 14000000 bit/s
CAN最高只有1M,支持CAN-FD的单片机可以为8M
Time Triggered Communication Mode:
时间触发模式,用于生成时间戳,可以实现分时同步功能
Automatic Bus-Off Management
自动离线管理,当节点检测到它发送错误或接收错误超过一定值时,会自动进入离线状态
Automatic Wake-Up Mode
自动唤醒功能,CAN 外设可以使用软件进入低功耗的睡眠模式,如果使能了这个自动唤醒功能,当 CAN 检测到总线活动的时候,会自动唤醒
Automatic Retransmission
报文自动重传功能,设置这个功能后,当报文发送失败时会自动重传至成功为止
Receive Fifo Locked Mode
FIFO 锁定模式,该功能用于锁定接收 FIFO。锁定后,当接收 FIFO 溢出时,会丢弃下一个接收的报文。若不锁定,则下一个接收到的报文会覆盖原报文
Transmit Fifo Priority
报文发送优先级的判定方法,ID 优先级还是报文存进邮箱的顺序来发送
Operating Mode:
CAN模式
自发自收模式配置
示例程序
如果是GD32系列单片机需要在stm32f4xx_hal_can.c文件中添加如下代码,解决初始化CAN死机问题
CLEAR_BIT(hcan->Instance->MCR, CAN_MCR_SLEEP);