特点:
1.传输方式:广播式和请求式
2.高速CAN 125-1Mbps 40m 低速CAN 10k-125kbps 1km
3.11/29帧ID 区分消息功能 同时决定优先级
4.半双工 异步 差分 多对多
区别:
硬件电路:
CAN收发器作用:输出电平转换 输出驱动 输入采样 与单片机相连 无需交叉
高速CAN使用闭环网络,CAN_H 和 CAN_L两端加120欧电阻
低速CAN使用开环网络,CAN_H和CAN_L其中一端加2.2k电阻
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.BaudRatePrescaler = CAN_BAUDRATEPRESCALER;//波特率预分频器
/*Initializes the CAN */
CAN_Init(CAN1, &CAN_InitStructure);
CAN_Filter_Init();
CAN数据协议格式