我正在尝试对来自模型飞机喷气涡轮机的 ECU/GSU 协议进行逆向工程,以制作遥测适配器。过去我解码了其他几种协议并取得了很好的成功,但这个特别困难,所以我想我会寻求帮助。
我有一个 Arduino Nano 作为 GSU 仿真器,带有一个 LIN 收发器并在 Saleae 逻辑分析仪上验证通信。
ECU 使用 LIN 接口,但使用我不知道的专有协议。为了阅读它,我使用了一个带有电平转换器的 Arduino,我验证了输入的数据是正确的。
当 ECU 是独立的时,它会发送几个字符串,这些字符串似乎是对总线节点的询问,但显然没有人回复。
0x0A 0x00 0x00 0x00 0x00 0x0A
0x14 0x00 0x00 0x00 0x00 0x14
0x1E 0x00 0x00 0x00 0x00 0x1E
0x28 0x00 0x00 0x00 0x00 0x28
当 GSU 连接到 ECU 时,它会0.2
在第一个字符串 ( 0x0A 0x00 0x00 0x00 0x00 0x0A
)后立即响应 ( ms ),以6
字节回复。每次都是略有不同的回复。
这样的回复之后是ECU发送一个数据流,这就是我需要读取的数据。
我尝试用 Arduino 模拟这些 GSU 回复中的一些,但是如果 arduino 正在询问它,ECU 永远不会将数据流发送回总线;它只是忽略它并继续询问,好像什么也没发生。随着 GSU 的询问,ECU 做出回应。
我附上了一个 Excel 表格,其中显示了一些回复和我玩过的一些数据处理。似乎回复是一个6
字节流,其中每个字节的 MSB(最高有效位)是0
或1
。我不确定这里的规则以及它为什么会改变。
这对任何人都有意义吗?任何逆向工程专家可以分享一些想法吗?到目前为止还没有能够让 ECU 回答 Arduino。
谢谢你的帮助。