历史上的今天
今天是:2025年04月02日(星期三)
2021年04月02日 | 飞思卡尔MC9S12XEP100 CAN学习总结(三) 滤波器配置
2021-04-02 来源:eefocus
标准帧和扩展帧
标准帧格式:具有11位标识符;
扩展帧格式:具有29位标识符;
两种帧格式可以出现在同一总线上。

标准帧
CAN 标准帧的ID结构

标准帧发送相关代码
msg.id = 0x5C;
CAN0TXIDR0 = (unsigned char)(msg.id>>3);
CAN0TXIDR1 = (unsigned char)(msg.id<<5);
标准帧接收相关代码
msg->id = (unsigned int)(CAN0RXIDR0<<3) | (unsigned char)(CAN0RXIDR1>>5);
后续补充
扩展帧
CAN 扩展帧的ID结构

在我们给的ID里没包含SRR与IDE与RTT,比如扩展帧ID:0x10F81099,展开为:
0001 0000 1111 1000 0001 0000 1001 1001,这个ID里的标准帧11位于扩展后的18位直接相连的,我们需要把SRR与IDE和RTR加进去就是我们滤波的CANIDAR寄存器的值;
具体方法为,从第19位开始向左移3位,空出SRR和IDE;低18位向左移一位,空出RTR
1 0000 1111 10 xx 00 0001 0000 1001 1001 x
绿色的’x’为移动后空出的位
整理下为:1000 0111 110x x000 0010 0001 0011 001x
空出的位,根据帧类型填就行,也可随便填,我们CANIDMR的值,在该位取1,不关心该为就好了;
例如我们需要过滤出扩展帧0x10F81099;
则根据上面的,得出AR值为: 1000 0111 110x x000 0010 0001 0011 001x,把x取1,则为
1000 0111 1101 1000 0010 0001 0011 0011 即AR寄存器值为 0x87D82133 ,那么MR值只把SRR,IDE,RTR位取1
0000 0000 0001 1000 0000 0000 0000 0001 即MR寄存器值为 0x00180001 ,这样就能过滤出扩展帧ID0xF81099
转载于:https://blog.csdn.net/youmeichifan/article/details/80346990
扩展帧发送相关代码
msg.id = 0x10F81099
CAN0TXIDR0 = (unsigned char)(msg.id>>21);
CAN0TXIDR1 = (((unsigned char)(msg.id>>13))&0xe0)|0x18|(((unsigned char)(msg.id>>15))&0x07);
CAN0TXIDR2 = (unsigned char)(msg.id>>7);
CAN0TXIDR3 = ((unsigned char)(msg.id<<1));
扩展帧接收相关代码
msg->id = (((unsigned long)CAN0RXIDR0)<<21)|((unsigned long)(CAN0RXIDR1&0xe0)<<13)|
((unsigned long)(CAN0RXIDR1&0x07)<<15)|(((unsigned long)CAN0RXIDR2)<<7)|
((unsigned long)(CAN0RXIDR3&0xfe)>>1);
史海拾趣
|
avr中的twi协议有误么?? 在主机接收模式的状态码里:的0x40 .。 No TWDR action or No TWDR action 我认为应该是 Read data byte or Read data byte。。 这个时候是来了一个ack信号,但是紧接着来了个8个字节的数据在twdr中 ...… 查看全部问答> |
|
刚涉足嵌入式,老大给了我一份MCP2510的官方手册,我觉得看得差不多了 他说我没看懂,然后问我如果启用报文接收满中断,且开启RXnBF引脚并配置为中断请求模式 那么当有报文收到时,CTRLINTF.RXnIF被置为,从而使INT引脚和RXnIF引脚都变为低电平了 ...… 查看全部问答> |
|
程序用到STM32的TIM1功能,在用MDK软件调试时,发现在运行到TIM1_DeInit()时MDK软件卡死了,单步运行进一步发现程序跳到如下(1)时卡死了,刚开始怀疑是哪个外设时钟没配置好,但检查了好 ...… 查看全部问答> |
|
ADC12MCTLx的最高位EOS代表的含义是什么? 还有那个Veref+和Veref-在没有外接电压的情况下处于什么电平?我量了Veref-在0.95v~1.05V之间变动?那是为何? :o… 查看全部问答> |




