This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
您好专家、
我的客户在 F280049上的应用程序中遇到 driverlib API CAN_readMessage 问题。
他们正在执行测试以将 CAN RX 接地并观察 CAN_readMessage 的行为。
测试一:
在启动 CAN 模块之前将 CAN RX 接地、并调用 CAN_readMessage 以获取数据。 在这种情况下、将返回"false" 、表示寄存器 CAN_IF2MCTL 的 NewDat 位未置位。
测试二:
在正常的 CAN 发送和接收会话中、突然将 CAN RX 接地。 在这种情况下、将返回"true"、这表示 寄存 器 CAN_IF2MCTL 的 NewDat 位被置位。
这是合理还是正常的? 为什么这两个测试会产生相反的结果?
谢谢
谢尔登
他们希望尝试 是否可以使用 CAN_readMessage 来检测 CAN 通信中的错误(RX 接地短路)。
[引用]在启动 CAN 模块之前将 CAN RX 接地、并调用 CAN_readMessage 以获取数据。 在这种情况下、将返回"false"、表示寄存 器 CAN_IF2MCTL 的 NewDat 位未设置。[/QUERP]
通过"启动"、我假设您是"初始化"。 由于未收到数据、因此您看到的"false"是意料之中的。
[引用]在正常的 CAN 发送和接收会话中、突然将 CAN RX 接地。 在这种情况下、将返回"true"、这表示 寄存 器 CAN_IF2MCTL 的 NewDat 位被置位。 [/报价]
定义"突然"。 如果您通过手动短接 CANRX 引脚来实现此目的、则不知道当时总线发生了什么情况(因为您说 CAN 正在发送和接收)。 可能是您在实际接收到帧后短路、在这种情况下、函数不会返回"false"。 除非您在没有人工干预的情况下(以自动方式)进行此测试并精确控制将 CANRX 连接到 GND 的时刻(即实际未接收到任何数据时)、否则您无法保证测试结果与测试一相同。
[报价]他们希望尝试是否可以使用 CAN_readMessage 来检测 CAN 通信中的错误(RX 接地短路)。 [/报价]
这将由已经内置于模块中的错误检测功能检测。 无需单独测试。 只要相同的位值出现超过5位时间、就会标记位填充错误。