您现在的位置是:首页 > 行业发展
AT90CAN128之CAN通信中断问题解决
智慧创新站
2025-04-06【行业发展】72人已围观
简介上个月公司的一款基于AT90CAN128的产品现场使用发现运行半个小时以上之后通信就中断。于是赶紧在公司复现故障,发现设备运行半小时之后可能出现的现象是:1.串口接收器死掉;2.CAN的发送失败。于是乎进行了大量的实验,直到这周才解决问题。图一程序代码最后发现问题就出在了if(CANGSTA(1RX...
上个月公司的一款基于AT90CAN128的产品现场使用发现运行半个小时以上之后通信就中断。于是赶紧在公司复现故障,发现设备运行半小时之后可能出现的现象是:
1.串口接收器死掉;
2.CAN的发送失败。
于是乎进行了大量的实验,直到这周才解决问题。
图一程序代码
最后发现问题就出在了if(CANGSTA(1RXBSY))这行代码上。只要把这行代码注释掉,那么设备运行就正常,不会再出现通信中断的问题。百思不得其解,我们来看看数据手册是如何描述的。
图二数据手册对RXBSY的描述
我的理解就是这个状态寄存器的RXBSY位在检测到数据帧的时候会被硬件置位,那么用它来检测是否收到数据无可厚非,但是实际上它会导致CAN的发送失败,还可能会导致串口的接收死掉,真是奇葩了。
图三修改后的程序
修改后的程序其实就只是删掉了if(CANGSTA(1RXBSY))这行判断语句,这还是偶尔不小心注释掉之后发现的,要不然坑还会折腾更久。或许是我对这个寄存的RXBSY位理解有问题?
有老铁用个AT90CAN128的CAN通信的一起探讨一下。
很赞哦!(160)
相关文章
- 通宇通讯取得宽波束高增益双极化定向天线专利,提供宽带宽、高增益、超宽波束的定向基站天线
- 罚款1万!无锡鸿康环保科技有限公司随意倾倒建筑垃圾受处罚
- 上海奥多信息科技有限公司因组织策划传销行为被罚60万元
- 数字电笔的使用方法,上面显示12/36/220是什么意思?
- 华灿光电0元收购格盛科技33.4%股权 加入国资阵营寻求安全感?
- 铁建重工申请设备控制方法、主设备、从设备及存储介质专利,降低了设备控制的复杂度
- 瞄准医疗、工业两大市场,「佰为深科技」推出超微点式MEMS光纤传感器
- 上海润达医疗科技股份有限公司董事会决议公告
- 冠军之选,“表哥”的致胜法宝——STAGES LR R8000双边功率计评测
- 小米路由器4A千兆版拆机,有独立PA和LNA?