CANFD通信协议详解与修订历史

需积分: 26 16 下载量 53 浏览量 更新于2024-06-30 收藏 4.96MB PDF 举报
"CANFD-Communication_protocol,CANFD通信协议" CANFD(Controller Area Network with Flexible Data-rate)是一种高速通信协议,它扩展了传统的CAN(Controller Area Network)协议,允许更高的数据传输速率和更大的数据段长度。CANFD协议在汽车电子、工业自动化和其他嵌入式系统中广泛应用,因为它能提供更快的通讯速度和更高的灵活性。 CANFD协议的主要特点包括: 1. **增强的数据传输速率**:与CAN协议相比,CANFD可以达到更高的数据传输速率,最高可达5 Mbps,这使得实时数据交换更为迅速。 2. **可变数据段长度**:CAN协议的数据段长度固定为0-8字节,而CANFD允许数据段长度从0-64字节,提高了数据传输的效率和多样性。 3. **报文格式**:CANFD报文分为标准帧和扩展帧两种格式,其中标准帧包含11位标识符(ID),扩展帧则包含29位ID,提供了更多的标识符空间。 4. **报文结构**:CANFD报文由帧起始、仲裁场、控制场、数据场、CRC(循环冗余校验)、ACK(确认)域和帧结束组成。其中,控制场包含了一个标志,表示报文是否使用CANFD模式。 5. **报文类型**:CANFD协议中的报文类型包括数据帧、远程帧、错误帧和过载帧。其中,错误帧用于检测和报告总线上的错误,过载帧用于同步网络上的节点。 6. **错误处理**:CANFD协议具有强大的错误检测和恢复机制,包括位错误、填充错误、CRC错误等,并且增加了总线负载上报,以便于监控网络健康状况。 7. **定时发送与实时更新**:CANFD设备支持定时发送功能,可以预先设定报文的发送时间和频率,同时支持实时更新,确保关键数据的及时传输。 8. **请求-应答机制**:CANFD网络设备通信协议中,认证数据包被分为请求和应答包,这种机制增强了网络的安全性和可靠性。 9. **扩展功能**:随着版本的升级,CANFD协议不断添加新的功能,如报文压缩传输、GPS数据包、动态配置请求等,以适应更多样化的应用场景。 10. **设备状态管理**:协议中包含了设备状态包,允许设备报告其当前的状态,便于网络管理和故障诊断。 CANFD协议通过提升通信速度和增强数据传输能力,为需要高速、高效通信的系统提供了优秀的解决方案。其丰富的报文格式、错误处理机制和不断演进的功能集,使其在各种领域中保持了高度的竞争力。

解释代码extern u16 ONE_SECOND_REACH_FLAG; extern u32 time_times; extern u32 alarm_delay_time; extern u16 alarm_delay_flag; extern uint32_t INPUT_DATA; u16 FARAWAY_SWTICH_FLAG = 0; u16 LOCAL_SWTICH_FLAG = 0; extern u16 CONTROL_COIL_DATA; u16 local_control_flag = 0; u16 far_control_flag = 0; extern u16 SET_PWM_DATA[4]; int main(void) { SystemInit(); NVIC_Configuration(); FLASH_Unlock(); RELAY_OUTPUT_IO_Init(); Adc_Init(); WWDG_NVIC_Init(); Timer2_Init(); CAN_Config(); SWITCH_INPUT_GPIO_Config(); USART5_Initialise(38400); NETIP_to_mcu_Initialise(9600); USART422_Initialise(9600); USART232_Initialise(9600); //初始化 RTU模式 从机地址为1 UART2 9600 无校验 eMBInit(MB_RTU, 0x01, 0x01, 9600, MB_PAR_NONE); //启动FreeModbus eMBEnable(); while (1) { // INPUT_DATA = 0x00000004; Calcu_FP_TEMP(); eMBPoll(); //modbus if (ONE_SECOND_REACH_FLAG) //1s { ONE_SECOND_REACH_FLAG = 0; // get422_ready_data(); //422 // netip_get_work_state_data(); //网口 // get232_ready_register(); //232 getusart5_ready_data(); } // SET_PWM_DATA[0] = 50; // SET_PWM_DATA[1] = 50; // SET_PWM_DATA[2] = 50; // SET_PWM_DATA[3] = 50; // scheduled_can_transmission();//can scan_input_state(); // communication485_protocol_solution();//485 //通信收发机 协议 方案 communicationusart5_protocol_solution(); //103 // getusart5_ready_data(); //获取485准备指示 get485_ready_register(); // communication422_protocol_solution(); // netip_communication_protocol_solution(); // communication_uart3_protocol_solution(); //232 //测试板 test_board_prog(); //控制 线圈 CONTROL_COIL(); } }

2023-03-26 上传