ISO-14229 之 请求下载 34

  • 请求下载 

#1  请求下载SID  

#2  数据格式标识符

高效半字节指定“compressionMethod(压缩法)”,
低效半字节指定“encryptingMethod(加密法)”。
字节值0x00不得使用压缩法或加密法。0x00以外的字节值由车辆制造商规定。

#3  地址和长度标识符

bit 3 - 0:参数memoryAddress的长度(Bytes)
bit 7 - 4:参数memorySize的长度(Bytes)

#4~ #(m-1)+4   开始下载数据的起始地址

#n-(k-1) ~#n  内存大小   这个参数用来把传输数据和内存进行对比,这种操作增加了下载数据的安全性

eg. 

发送:10 0B 34 00 44 00 00 00 00(起始地址) 00 00 04 98(内存大小) 数据有0x0498 = 1176字节

  • 肯定响应

#1  响应SID

#2 长度格式标识符 

bit 7 - 4:参数maxNumberOfBlockLength的长度(Bytes)的长度
bit 3 - 0:保留位,设为0

#3 ~#n 一个块的带载能力

这个参数用来通知客户端在每次数据传输请求中包含了多少字节的数据(包括ID和 块号)。

响应 

04 74 20 00 82(每次 数据传输包能接收130个字节)

  • 否定响应

参考代码

void Service34Handle(uint8_t type, uint16_t length, uint8_t *messageData)
{
    g_NRC = PR;
    if(length == 11)
    {
        uint8_t dataFormat = *(MessageData + 1);
        uint8_t addLength = *(MessageData + 2);
        if(dataFormat == 0 && addLength == 0x44)
        {
            ProgramAddress = *((uint32_t*)(messageData + 3));
            ProgramLength = *((uint32_t*)(messageData + 7));
            if(MemValidRange( ProgramAddress,ProgramLength) == 1) //Memary can use
            {
                if(g_UpdateStep == DOWNLOAD_FLASH_DRIVER_34)
                {
                    DiagnosticBuffTX[0] = (*(MessageData + 1)) + 0x40; //0x74
                    DiagnosticBuffTX[1] = 0x20;
                    DiagnosticBuffTX[2] = (uint8_t)(MAX_SIZE >> 8); // can receive max 
                    DiagnosticBuffTX[3] = (uint8_t)(MAX_SIZE);
                    ResponseLength = 4;
                    g_BlockIndex = 1; // the first blck is 1
                    ProgramLengthComplete = 0;
                    g_UpdateStep = DOWNLOAD_FLASH_DRIVER_36; // next step
                }
                else
                {
                    g_NRC = RSE; //request sequence error
                }
            }
       }
       else
       {
            g_NRC = IMLOIF; //incorrect message length or invalid format
        }
}

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: ISO 14229-5是国际标准化组织(International Organization for Standardization)制定的一个标准,主要涉及汽车诊断通信接口(Diagnostic Communication Interface,简称DCI)的通信协议。 ISO 14229-5规定了诊断通信接口和诊断仪之间的通信协议,用于实现汽车故障诊断的功能。该标准定义了一套基于标准网络通信协议的通信规则,包括消息格式、数据传输方式、消息ID的定义等,并且规定了支持特定功能的具体实现方法。 通过遵循ISO 14229-5标准,诊断仪可以与汽车的电子控制单元(Electronic Control Units,简称ECUs)进行通信,实现故障码的读取、故障检测、参数调整等功能。这个标准的制定使得不同厂家的诊断仪能够与各种品牌的汽车进行通信,提高了汽车维修的效率和准确性。 ISO 14229-5标准的实施对于汽车制造商、诊断设备供应商以及汽车维修技术人员都具有重要意义。制造商可以根据该标准开发诊断接口硬件和软件,保证其与诊断仪的兼容性。供应商则可以根据该标准提供诊断设备,满足市场需求。而对于维修技术人员来说,熟悉该标准可以帮助他们更好地进行汽车故障诊断和维修工作。 总之,ISO 14229-5是一个重要的标准,对于汽车诊断通信接口的发展和应用具有重要意义,有助于提高汽车维修的效率和质量。 ### 回答2: ISO 14229-5是国际标准化组织ISO设立的汽车电子通信协议,用于诊断汽车电子控制单元(ECU)之间的通信。它是汽车行业的一项重要标准,旨在确保不同的汽车ECU可以互相通信并进行故障诊断。 ISO 14229-5的主要目标是定义诊断通信的规范,包括通信协议、数据格式、错误处理机制等。它提供了一种统一的框架,使不同制造商的ECU能够使用相同的通信协议进行故障诊断。 此标准规定了ECU之间的通信应使用统一诊断服务(UDS)协议。UDS是一种基于标准汽车通信协议CAN或其他物理层协议的高层协议。它定义了一套通用的诊断服务和通信机制,包括读取和写入数据、清除故障码、执行特殊功能等。 在ISO 14229-5中,还定义了ECU之间的消息格式和通信协议。消息格式包括了各种诊断服务的请求和响应,如读取数据、写入数据、执行诊断服务、请求下载和上传等。通信协议则规定了消息的传输方式、速率、错误检测和纠正等。 ISO 14229-5对于汽车制造商和汽车诊断设备供应商非常重要。它确保了不同厂家的汽车ECU可以在统一的通信标准下进行故障诊断,提高了诊断的效率和准确性。同时,它也促进了汽车行业的标准化和互操作性,为汽车电子系统的开发和维护提供了支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值