- 🍅 我是蚂蚁小兵,专注于车载诊断领域,尤其擅长于对CANoe工具的使用
- 🍅 寻找组织 ,答疑解惑,摸鱼聊天,博客源码,点击加入👉【相亲相爱一家人】
- 🍅 玩转CANoe,博客目录大全,点击跳转👉
目录
- 📙 RequestDownload (0x34) service
- 请求格式
- 正响应格式:
- 负响应格式:
- 📙 TransferData (0x36) service
- 请求格式
- 正响应格式:
- 负响应格式:
- 📙 RequestTransferExit (0x37) service
- 正响应格式:
- 负响应格式:
- 🌎总结
📙 RequestDownload (0x34) service
- Tester向目标ECU请求下载服务
请求格式
dataFormatIdentifier
:这是第二个字节的参数,其中高4个bit表示压缩方法
,低4个bit表示加密方法
,一般情况就是0x00addressAndLengthFormatIdentifier
:请求刷写地址和长度格式,高4个bit
表示下面的memorySize
参数占几个字节,低4个bit表示下面的memoryAddress
参数占几个字节。常规就是0x44,就是memorySize
和memoryAddress
各占4个字节。memoryAddress
:请求刷写的首地址,这个参数占几个字节由addressAndLengthFormatIdentifier
参数的低4个bit决定的memorySize
: 请求刷写的字节长度,这个参数占几个字节由addressAndLengthFormatIdentifier
参数的高4个bit决定的
如下图的实例Trace : 34 00 44 52 80 90 00 00 00 16 00
正响应格式:
lengthFormatIdentifier
:高4个bit
表示下面的maxNumberOfBlockLength
参数占几个字节,低4个bit默认0maxNumberOfBlockLength
: 目标ECU允许Tester传输最大的字节数- 比如下面34服务响应的
maxNumberOfBlockLength
等于0x0802,下面36服务就传输了0x0802个字节(包括36 01) - 0x1802的解释:CAN TP层的第一个字节的高4bit表示帧类型,1就表示是首帧,2是连续帧,3是流控帧,0是单帧。
- 实际上,36服务传输可以小于
maxNumberOfBlockLength
,但不能大于,
负响应格式:
- 0x13 :36服务传输字节大于
maxNumberOfBlockLength
时 - 0x22 :当目标ECU正在接受数据,发送S34服务请求,ECU应该响应CNC(0x22)
- 0x31 :请求参数中,参数不对
- 0x33 :没有进入指定的安全会话
- 0x70:
没事先擦除内存会报这个NRC
📙 TransferData (0x36) service
- 刷写过程,即Tester向ECU中下载数据的过程叫
download
- Teser向ECU请求返回数据,即ECU向Tester传输数据的过程叫
upload
请求格式
blockSequenceCounter
:数据传输计数器,第一帧从1开始,到了0xFF后,再从0开始,循环往复,直到下载完毕transferRequestParameterRecord
:传输数据,正常来说就是(maxNumberOfBlockLength - 2)
正响应格式:
blockSequenceCounter
: 响应的结果和请求时一样- transferRequestParameterRecord : 刷写过程是没有这个参数的,35服务请求数据时,才有这个参数
- 34和35服务,互为逆过程,36服务的请求和响应也是互逆的。
负响应格式:
- 0x24 : 不先请求34或者35服务,会响应这个NRC
- 0x71:xxxxx
- 0x72:xxxxx
- 0x73:传输Block计数器错误,比如第一帧传输时不是1,或者,不连续
- 0x92/0x93: 刷写时电压过高或者过低
📙 RequestTransferExit (0x37) service
正响应格式:
transferResponseParameterRecord
:从没见过
负响应格式:
🌎总结
- 🚩要有最朴素的生活,最遥远的梦想,即使明天天寒地冻,路遥马亡!
- 🚩如果这篇博客对你有帮助,请 “点赞” “评论”“收藏”一键三连 哦!码字不易,大家的支持就是我坚持下去的动力。