twodiamond 发表于 2024-2-2 14:19:58

H743中FDCAN相关错误寄存器ECR和状态寄存器PSR

请教:

当CAN总线发生错误时,ECR和PSR相关位会发生变化,在ECR中,读该寄存器会复位CEL域,但其它的域怎么样才能复位呢;PSR的状态位能复位不?

谢谢!

yunqi 发表于 2024-2-2 14:37:40

在FDCAN(Flexible Data-Rate Controller Area Network)中,当CAN总线发生错误时,ECR(Error Counter Register)和PSR(Protocol Status Register)相关的位会发生变化。

ECR寄存器复位CEL域:读取ECR寄存器会自动复位CEL(Error Logging)域。CEL域包含错误计数器的低8位,用于记录CAN总线上的错误次数。通过读取ECR寄存器可以获取这些错误计数器的值,并将CEL域复位为0。但是,其他域如TEC(Transmit Error Counter)和REC(Receive Error Counter)不能直接复位,需要进行特定操作才能重置它们的值。

PSR寄存器状态位复位:PSR寄存器包含了一些状态位,用于指示CAN总线的状态和错误情况。这些状态位包括错误状态、仲裁丢失、接收溢出等。当CAN总线发生错误时,这些状态位会更新。但是,这些状态位通常不会自动复位,需要手动进行复位操作来清除它们的值。

具体的复位操作取决于使用的FDCAN控制器和相应的软件库。一般而言,通过写入特定的值或调用相应的函数来清除PSR寄存器中的状态位。请参考相关的FDCAN文档和软件库手册,以了解如何正确地复位PSR寄存器中的状态位。

需要注意,对于TEC和REC计数器,通常有硬件机制或软件功能可以在达到一定阈值时自动进行重置。这样可以及时处理错误情况并恢复CAN总线的正常运行。具体的阈值和重置机制也会根据不同的FDCAN控制器而有所不同。

twodiamond 发表于 2024-2-2 15:07:53

yunqi 发表于 2024-2-2 14:37
在FDCAN(Flexible Data-Rate Controller Area Network)中,当CAN总线发生错误时,ECR(Error Counter Reg ...

最后一句中 “需要注意,对于TEC和REC计数器,通常有硬件机制或软件功能可以在达到一定阈值时自动进行重置。这样可以及时处理错误情况并恢复CAN总线的正常运行。具体的阈值和重置机制也会根据不同的FDCAN控制器而有所不同。”

不知道H743的ECR中的TEC和REC重置机制哪里有提到?

谢谢!

yunqi 发表于 2024-2-3 09:35:24

twodiamond 发表于 2024-2-2 15:07
最后一句中 “需要注意,对于TEC和REC计数器,通常有硬件机制或软件功能可以在达到一定阈值时自动进行重 ...

你可试试RCC复位CAN。
页: [1]
查看完整版本: H743中FDCAN相关错误寄存器ECR和状态寄存器PSR