欢迎光临
我们一直在努力

【CANdelaStudio-从入门到深入到实战】36 0x37请求退出传输:校验和与ECU的“消化”艺术

上回咱们聊完了0x36传输数据,你学会了如何用序列号递增+动态块大小构建一条可靠的数据流水线。

但数据发完只是第一步——ECU收到最后一块数据后,会做什么?它会说“OK,我收完了”,还是“校验和不匹配,重来”?这就是0x37请求退出传输要解决的问题。

先讲个真实故事。去年我调试一个OTA升级项目,每次传完数据ECU都回复0x77(正确响应),但到了刷写阶段却报错“数据损坏”。

我反复检查0x36的序列号和块大小,都没问题。后来才发现,0x37请求里我忘了带校验和——ECU虽然收完了数据,但无法确认完整性,最终在内部校验时发现了错误。这个坑,让我理解了0x37的“收尾”工作远不止发一条指令那么简单。

痛点拆解:你以为发完0x36就结束了?

常见错误1:0x37只发个空请求

很多新手以为0x37就是告诉ECU“我发完了”,然后ECU就该乖乖回复肯定应答。实际上,0x37请求必须携带校验和(Checksum),而且是整个传输数据(0x34到0x36所有数据)的校验结果。

反例代码:

def send_0x37_wrong(uds_client)

赞(0)
未经允许不得转载:171主机测评 » 【CANdelaStudio-从入门到深入到实战】36 0x37请求退出传输:校验和与ECU的“消化”艺术
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址