第一次使用STM32F407的芯片。调试CAN通讯,首先按照库函数,分别配置了125k,100k的波特率。能够使用CAN分析仪接收到数据。但是发现接收的数据不是自己想要的标准的数据帧,而是拓展的远程帧。
于是查看芯片手册,找到了CAN 发送邮箱标识符寄存器 (CAN_TIxR) (x=0..2)。然后仿真,发现发送邮箱里的TIR寄存器不受控制。。。 。。。 所以发出的数据不对。为什么TIR寄存器不受控制呢?代码:发送时赋值的情况。
u8 mbox;
u16 i=0;
CanTxMsg TxMessage;
TxMessage.StdId=0x12; // ±ê×¼±ê궷û
TxMessage.ExtId=0x12; // éèÖÃà©Õ1±êê¾·û
TxMessage.IDE=CAN_Id_Standard; // ±ê×¼Ö¡
// TxMessage.RTR=CAN_RTR_Data; // êy¾YÖ¡
// TxMessage.IDE=CAN_Id_Extended; // ±ê×¼Ö¡
TxMessage.RTR=CAN_RTR_Data; // êy¾YÖ¡
TxMessage.DLC=len; // òa·¢ËíμÄêy¾Y3¤¶è
for(i=0;i<len;i++)
TxMessage.Data=msg;
仿真时监控的图片:
求高手!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
1、CAN1是主,CAN2是从。
2、例子教程里用的都是CAN1。我用开发板测试也没有问题。
现在使用的这块板子只用了CAN2,CAN1预留,刚开始没有初始化CAN1,现在加上CAN1初始化就好了~
图片地址在这里,刚才发帖出了点问题
一周热门 更多>