特点:
1.传输方式:广播式和请求式
2.高速CAN 125-1Mbps 40m 低速CAN 10k-125kbps 1km
3.11/29帧ID 区分消息功能 同时决定优先级
4.半双工 异步 差分 多对多
5.高速和低速,主要区别是配置波特率不同,一般推荐250K,保证距离和传输速度
6.CAN最多挂载110个节点,但一般控制在30-50个
7.CAN使用位同步的方式来抗干扰、吸收误差,提高通讯能力
8.不支持使用DMA进行数据收发
9、三个发送邮箱,最多同时缓存三个报文
区别:
硬件电路:
CAN收发器作用:输出电平转换 输出驱动 输入采样 与单片机相连 无需交叉
高速CAN使用闭环网络,CAN_H 和 CAN_L两端并上120欧电阻
低速CAN使用开环网络,CAN_H和CAN_L其中一端加2.2k电阻
实际电路测试:
H和L两端电阻是否是60欧姆,L对地,2.4V左右,H对地在2.6V左右
CAN电平标准:
显性0电压差v | 隐性1电压差v | |
高速CAN | 2 | 0 |
低速CAN | 3 | -1.5 |
CAN的数据帧格式:
数据帧RTR位必须为显性电平,远程帧RTR位必须为隐形电平
CAN通讯相关配置
CAN_InitStructure.TTCM = DISABLE; //时间触发通信,无时间触发功能
CAN_InitStructure.ABOM = ENABLE; //自动总线管理,自动尝试连接总线,用于总线故障后的恢复
CAN_InitStructure.AWKUM = ENABLE;//总线唤醒,总线由活动时会从休眠中唤醒总线
CAN_InitStructure.NART = ENABLE;//启用禁用自动重发,enable表示禁止重新发送未成功发送的消息,避免总线阻塞
CAN_InitStructure.RFLM = DISABLE;//新的报文是否会覆盖旧的报文消息,适合实时更新数据的系统
CAN_InitStructure.TXFP = ENABLE;//优先级由发送请求的顺序决定 禁用表示按照标识符确定优先级
CAN_InitStructure.OperatingMode = OPERATINGMODE;//工作模式,正确
CAN_InitStructure.RSJW = CAN_BIT_RSJW;//时间再同步,调整收发产生的时间偏差,维持CAN同步
CAN_InitStructure.TBS1 = CAN_BIT_BS1;//
CAN_InitStructure.TBS2 = CAN_BIT_BS2;
CAN_InitStructure.BaudRatePres