CAN 读取ACK知对方是否接收成功 |
您所在的位置:网站首页 › 发送成功对方接不到验证信息 › CAN 读取ACK知对方是否接收成功 |
首先,了解一下CAN的ACK段 上图是一个数据帧,其ACK段用来确认是否正常接收。由 ACK 槽(ACK Slot)和 ACK 界定符 2 个位构成。 当发送单元发送到CRC段后,会在ACK段发送2个隐性位。 而接收单元正确接收到数据后,会在ACK槽(ACK Slot)发送显性位,通知发送单元正常接收结束。这称作“发送 ACK”或者“返回 ACK”。 发送 ACK 的是在既不处于总线关闭态也不处于休眠态的所有接收单元中,接收到正常消息的单元(发送单元不发送 ACK)。所谓正常消息是指不含填充错误、格式错误、 CRC 错误的消息。 代码修改 在CAN_TransmitStatus(CAN_TypeDef* CANx, uint8_t TransmitMailbox)函数添加代码 if((CANx->ESR & (CAN_ESR_LEC_0 | CAN_ESR_LEC_1)) == (CAN_ESR_LEC_0 | CAN_ESR_LEC_1))state = CAN_TxStatus_Failed;//ACK错
这样就能实时的知道对方是否接收成功 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |