车载网络CAN/LIN知识总结
STM32F1开发板测试
STM32测试程序
/*
* CAN 通信报文内容设置
*/
void CAN_SetMsg(void)
{
#if CAN_STD
TxMessage.StdId = 0x12;
TxMessage.IDE = CAN_ID_STD;
#else
TxMessage.ExtId = 0x1314; //使用的扩展ID
TxMessage.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_STD
printf( "\r\n***** CAN 标准ID号: 0x%x, 数据段内容: Data[0]=0x%x, Data[1]=0x%x\r\n", TxMessage.StdId, TxMessage.Data[0], TxMessage.Data[1]);
#else
printf( "\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_STD
printf( "\r\n***** CAN 标准ID号: 0x%x, 数据段内容: Data[0]=0x%x, Data[1]=0x%x \r\n", RxMessage.StdId, RxMessage.Data[0], RxMessage.Data[1]);
#else
printf( "\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输出
标准帧
扩展帧