完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
大家好,
我有关于在另一端设置为错误比特率后重置 CAN 总线的问题: 例子: 我的系统正在发送 500 kBit 的数据。但是接收器设置为 1 MBit。 这当然会导致发送数据时出错。 我通过在几次错误后重置 CAN 总线端口来处理这个问题。 一旦接收器切换到 500 kBit 的正确比特率,我的系统就会正常工作,但它仍然会出现错误中断 - 即使在另一次重置之后也是如此。 调试器进入“错误警告”和“错误被动”中断状态。并且只有一小部分消息会被传输。 有时它会按预期工作,但大多数时候它仍然会收到错误中断。 我怎样才能安全地返回工作的 CAN 接口? 这是我重置 CAN 总线的方法: HAL_CAN_DeInit(&hcan1); MX_CAN1_Init(); // Je nach Konfig aus SysInfo für Baudrate initialisieren /* CAN1 初始化函数 */ void MX_CAN1_Init(void) { hcan1.pTxMsg = &CANTxMessage; hcan1.pRxMsg = &CANRxMessage; hcan1.Instance = CAN1; hcan1.Init.Prescaler = 9; hcan1.Init.Mode = CAN_MODE_NORMAL; hcan1.Init.SJW = CAN_SJW_1TQ; hcan1.Init.BS1 = CAN_BS1_3TQ; hcan1.Init.BS2 = CAN_BS2_1TQ; hcan1.Init.TTCM = 禁用; hcan1.Init.ABOM = ENABLE; hcan1.Init.AWUM = 禁用; hcan1.Init.NART = 禁用; hcan1.Init.RFLM = 禁用; hcan1.Init.TXFP = 禁用; 如果 (HAL_CAN_Init(&hcan1) != HAL_OK) { _Error_Handler(__FILE__, __LINE__); } } |
|
相关推荐
1个回答
|
|
由于重置 REC 计数器对于消除错误中断是必要的,而且系统不能期望其他系统正在发送数据,所以我在环回模式下初始化了 CAN 控制器。(我昨天以另一种方式尝试了环回模式,但这可能不足以重置计数器。)
现在发送的数据将在重置计数器的 CAN 接收器中接收。 我什至不需要重置 CAN 端口来让总线再次工作。 |
|
|
|
只有小组成员才能发言,加入小组>>
请教:在使用UDE STK时,单片机使用SPC560D30L1,在配置文件怎么设置或选择?里面只有SPC560D40的选项
2642 浏览 1 评论
3208 浏览 1 评论
请问是否有通过UART连接的两个微处理器之间实现双向值交换的方法?
1783 浏览 1 评论
3611 浏览 6 评论
5989 浏览 21 评论
939浏览 4评论
1316浏览 4评论
在Linux上安装Atollic TRUEStudio的步骤有哪些呢?
584浏览 3评论
使用DMA激活某些外设会以导致外设无法工作的方式生成代码是怎么回事
1303浏览 3评论
1361浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 00:24 , Processed in 1.023461 second(s), Total 77, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号