完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
CAN模块初始化代码如下:
void MSCAN_Init(void) { CANCTL1 =0X80; //enable the MSCAN ,no loopback mode CANCTL0 =0X01; while(!CANCTL1_INITAK); CANBTR0 =0X43; //波特率500K CANBTR1 =0X14; CANIDAC =0X00; //two 32bit filter for extended id CANIDAR0 = 0xff; CANIDAR1 = 0xfe|(SlaveID & 0x80)>>7; CANIDAR2 = 0x01|(SlaveID & 0x7f)<<1; CANIDAR3 = 0xff; CANIDMR0 = 0xff; CANIDMR1 = 0xfe; CANIDMR2 = 0x01; CANIDMR3 = 0xff; CANIDAR4 = 0xff; CANIDAR5 = 0xfe|(BroadCastiD & 0x80)>>7; CANIDAR6 = 0x01|(BroadCastID & 0x7f)<<1; CANIDAR7 = 0xff; CANIDMR4 = 0xff; CANIDMR5 = 0xfe; //debug CANIDMR6 = 0x01; //debug CANIDMR7 = 0xff; CANCTL0 =0; //exit init mode while(CANCTL1_INITAK); while(!CANCTL0_SYNCH); //wait until the synchronous with the bus CANRFLG =0XC3;//reset Rx flag 发送代码如下: while(!CANTFLG); CANTBSEL =CANTFLG; txbuffer =CANTBSEL; CANTXIDR0 =0xc0; CANTXIDR1 =0X0A; CANTXIDR2 =0X23; CANTXIDR3 =0XFA; CANTXDSR0 =0X56; CANTXDLR =0X01; CANTXTBPR =0X80; CANTFLG =txbuffer; while(!(CANTFLG & txbuffer)); TURN_ON_LED1; 一个很简单的CAN模块测试程序,通过CAN总线发送一个数0x56发送出去,但是程序运行时会死在 while(!(CANTFLG & txbuffer));这一句,经过硬件仿真后发现是因为清零CANTFLG的相应位使能发送后寄存器CANRFLG里的TSTAT0,TSTAT1这两个标志位一直在10和11之间跳动,导致单片机的CAN模块一直在bus-off和主动错误状态之间跳变,导致数据发不出去,波特率设置没有问题,因为能正常接收到CAN数据,通过请问各位大神有没有遇到过这种情况,怎么解决??? |
|
相关推荐
13个回答
|
|
谢谢大家,问题解决了,CAN配置没有问题,是CAN所在的IO口没有配置
在程序里将PM0(RXCAN0)配置成输入,将PM1(TXCAN0)配置成输出,再将PM0设置成上拉输入,并在PORT M的数据寄存器里PM0,PM1位写1就可以正常收发了。 |
|
|
|
BUS-OFF, 表示TEC>255,说明连续发送失败;
主动错误是到达BUS-OFF后,在总线上检测到128次11个连续的隐性位就会回到主动错误,并有恢复时间,大约200ms. 因此大致问题是你的线路有问题,你可以检查一下你的线路是否有问题,CAN是否通畅,120欧的终端电阻是否存在,是否有其他非CAN设备连接在一起。 希望对你有用。问题解决了吗?最后发现是什么问题了吗?
最佳答案
|
|
|
|
自己顶一下。。。。。。。。。。。
|
|
|
|
zhyii 发表于 2016-5-26 17:04 还没有解决,我也怀疑线路有问题,准备拿个示波器看一下,我的驱动芯片用的是TJA1042,但是接收正常啊,没理由啊。。。。。。兄台有没有S12单片机的CAN模块发送程序,发给我对比一下,562371938@qq.com |
|
|
|
谢谢大家,问题解决了,CAN配置没有问题,是CAN所在的IO口没有配置
在程序里将PM0(RXCAN0)配置成输入,将PM1(TXCAN0)配置成输出,再将PM0设置成上拉输入 |
|
|
|
大家如果遇到相同的问题的话可以参考下
|
|
|
|
楼主你好,我现在刚好在做S12Z的CAN底层配置,你能提供一下你的初始化配置思路和发送接收函数吗。万分感谢
|
|
|
|
楼主!有MC9S12G64好一点的资料么,最好是中文的,怎么官方资料怎么官方资料都那么多错误?
|
|
|
|
不好意思,这个属于公司的机密,不方便透露 |
|
|
|
没有,不过还是建议你看英文资料,更权威 |
|
|
|
还是看英文的吧,刚开始很难懂,看到第三遍就能明白一些
|
|
|
|
我有关于CAN总线的一些资料,需要的话可以私信我。
|
|
|
|
好ONIU HAONIU好牛。
|
|
|
|
只有小组成员才能发言,加入小组>>
1912个成员聚集在这个小组
加入小组我的项目我做主,使用GN+Ninja来完成构建系统(VSCode开发RT106X)
36362 浏览 0 评论
NXP IMX8应用处理器快速入门必备:技巧、使用、设计指南
4400 浏览 0 评论
6055 浏览 1 评论
6765 浏览 0 评论
NXP i.MX6UL开发板(linux系统烧录+规格+硬件+模块移植)使用手册
4217 浏览 0 评论
620浏览 2评论
求助,S32G上Core M启动后如何让Core A在Flash指定位置加载uboot?
618浏览 2评论
ESP32-WROVER-IE + LAN8720以太网,GPIO0电压只有1.6v,无法正常进入spi flash boot模式如何解决?
609浏览 2评论
求分享适用于PN7160 Android的NFC工厂测试应用程序
696浏览 2评论
799浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-26 07:45 , Processed in 1.342194 second(s), Total 109, Slave 92 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号