车载网络CAN/LIN知识总结
STM32F1开发板测试
STM32测试程序
/** CAN 通信报文内容设置*/
void CAN_SetMsg(void)
{
#if CAN_STDTxMessage.StdId = 0x12;TxMessage.IDE = CAN_ID_STD;
#elseTxMessage.ExtId = 0x1314; //使用的扩展IDTxMessage.IDE = CAN_ID_EXT; //扩展模式
#endif TxMessage.RTR = CAN_RTR_DATA; //发送的是数据TxMessage.DLC = 2; //数据长度 2 字节TxMessage.Data[0] = 0xAB;TxMessage.Data[1] = 0xCD;
}/*CAN测试函数*/
void CAN_Test(void)
{printf( "\r\n***** CAN 通讯实验(回环测试): ******** \r\n");/*设置通过can发送的消息*/CAN_SetMsg();printf( "\r\n***** CAN 发送报文内容: ********");
#if CAN_STDprintf( "\r\n***** CAN 标准ID号: 0x%x, 数据段内容: Data[0]=0x%x, Data[1]=0x%x\r\n", TxMessage.StdId, TxMessage.Data[0], TxMessage.Data[1]);
#elseprintf( "\r\n***** CAN 扩展ID号: 0x%x, 数据段内容: Data[0]=0x%x, Data[1]=0x%x\r\n", TxMessage.ExtId, TxMessage.Data[0], TxMessage.Data[1]);
#endif/* 发送消息 “ABCD” */CAN_Transmit(CAN1, &TxMessage);while (0xff == can_flag);printf( "\r\n***** CAN 接收报文内容: ********");
#if CAN_STDprintf( "\r\n***** CAN 标准ID号: 0x%x, 数据段内容: Data[0]=0x%x, Data[1]=0x%x \r\n", RxMessage.StdId, RxMessage.Data[0], RxMessage.Data[1]);
#elseprintf( "\r\n***** CAN 扩展ID号: 0x%x, 数据段内容: Data[0]=0x%x, Data[1]=0x%x \r\n", RxMessage.ExtId, RxMessage.Data[0], RxMessage.Data[1]);
#endif
}
完整代码见: https://download.csdn.net/download/liuxu324/89374616
串口工具输出
标准帧
扩展帧
PCAN-View输出
标准帧
扩展帧