大家好,
我有关于在另一端设置为错误比特率后重置 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 ini
tialisieren
/* 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__);
}
}