完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我想要使用CAN总线滤波器来筛选自己需要的ID,但是我按照手册上设置的时候却不能正常运行。
下面是我的初始化代码 /* 初始化CAN0 */ void INIT_CAN0(void) { if(CAN0CTL0_INITRQ==0) // 查询是否进入初始化状态 CAN0CTL0_INITRQ =1; // 进入初始化状态 while (CAN0CTL1_INITAK==0); //等待进入初始化状态 CAN0BTR0_SJW = 0; //设置同步 CAN0BTR0_BRP = 7; //设置波特率 #if(CAN_BOUND_RATE == 500) CAN0BTR1 = 0x14; //设置时段1和时段2的Tq个数 ,总线频率为500kb/s #else if(CAN_BOUND_RATE == 250) CAN0BTR1 = 0x1c; //设置时段1和时段2的Tq个数 ,总线频率为250kb/s #endif CAN0IDAC_IDAM1 = 0; //bit4= 0和bit5= 1,Four 16-bit acceptance filters CAN0IDAC_IDAM0 = 1; //在这里我已经设置为4个十六位的滤波器,正常情况下应该能过通过四个ID的报文 //但是只能通过实际只能通过第一和第三个滤波器的两帧,我明明是按照手册设置的,很 //奇怪,然后我又将它设置为两个32位的滤波器,还是只能通过两个(通过的是标准帧), //当我写成扩展帧的时候却一个都通过不了,崩溃 //开启全部滤波器 CAN0IDMR0 = 0x00; CAN0IDMR1 = 0x00; CAN0IDMR2 = 0x00; CAN0IDMR3 = 0x00; CAN0IDMR4 = 0x00; CAN0IDMR5 = 0x00; CAN0IDMR6 = 0x00; CAN0IDMR7 = 0x00; //对相应ID进行滤波 CAN0IDAR0 = 0x80; CAN0IDAR1 = 0x60; CAN0IDAR2 = 0x8D; CAN0IDAR3 = 0x20; CAN0IDAR4 = 0x82; CAN0IDAR5 = 0x20; CAN0IDAR6 = 0x82; CAN0IDAR7 = 0x00; CAN0CTL1 = 0xC0; //使能MSCAN模块,设置为一般运行模式、使用总线时钟源 CAN0CTL0 = 0x00; //返回一般模式运行 while(CAN0CTL1_INITAK); //等待回到一般运行模式 while(CAN0CTL0_SYNCH==0); //等待总线时钟同步 CAN0RIER_RXFIE = 1; //使能接收中断 } |
|
相关推荐
5 个讨论
|
|
用codewarrior调试了吗,单步调试,看各个寄存器的状态
|
|
|
|
|
|
你是用板子调吗,下个手册上的例子程序,看是不是硬件原因
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
1904个成员聚集在这个小组
加入小组我的项目我做主,使用GN+Ninja来完成构建系统(VSCode开发RT106X)
36342 浏览 0 评论
NXP IMX8应用处理器快速入门必备:技巧、使用、设计指南
4391 浏览 0 评论
6043 浏览 1 评论
6757 浏览 0 评论
NXP i.MX6UL开发板(linux系统烧录+规格+硬件+模块移植)使用手册
4207 浏览 0 评论
615浏览 2评论
求助,S32G上Core M启动后如何让Core A在Flash指定位置加载uboot?
612浏览 2评论
ESP32-WROVER-IE + LAN8720以太网,GPIO0电压只有1.6v,无法正常进入spi flash boot模式如何解决?
602浏览 2评论
求分享适用于PN7160 Android的NFC工厂测试应用程序
692浏览 2评论
789浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-17 19:26 , Processed in 2.218620 second(s), Total 63, Slave 52 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号