电子说
XCP的主要应用于测量和标定ECU内部参数。此协议能够使数据采集工作与ECU内部运行的任务和中断同步,从而保证每当ECU软件更新参数时,能快速采集到所需的参数值。
根据标定数据要实现掉电存储的要求,需要为RAM中的标定参数建立一个RAM-EEPROM的关联列表。
列表中的具体元素为:EEPROM地址(相对于起始地址的偏移量)、RAM地址(标定参数在ECU中的地址,“&+变量名”的形式可直接获得)、标定参数的长度和标定参数的数据类型。
数据标定任务可细分为三部分。上电标定参数更新读入、上位机对ECU中RAM地址的直接标定和运行过程中RAM-EEPROM参数关联列表的更新。
上电时,标定参数处于初始化状态,其参数直接来源于程序烧写完成时的数值。断电之前标定的参数需要更新到RAM中才能保证之后运行的参数值是上次标定后的数值。
因此数据更新时,将EEPROM中的存储值直接读出更新到RAM中即可。
但若标定参数都未被标定过,则不需要标定参数的读出更新。如下图所示,处理的方法是在数据读出更新之前,读出EEPROM特定位置的标定更新标志位,若标定更新标志不存在,则不需要将数据读出更新到RAM。
该任务在主函数初始化处被调用一次。
上位机对ECU中RAM地址的直接标定主要是在CCP命令指导下完成的。
数据在RAM中标定更新后可满足正常的控制运行,但数据仍需要更新到对应的EEPROM中才可实现掉电存储。如下图所示,在主函数中查询更新EEPROM标志位,以判断是否需要更新数据到EEPROM。
在数据更新到EEPROM之前,向EEPROM的特定地址处写入一个标志,表示有数据更新到EEPROM,以方便下次上电时辨别标志读取最新的标定数据。
读入RAM-EEPROM关联列表的信息,将地址偏移、数据类型、数据长度、数据值写入缓存,置写EEPROM中断标志,在中断函数中完成数据更新EEPROM的操作。
整个任务在主函数中被调用,设定任务时间为100ms,减少不必要更新查询
审核编辑:刘清
全部0条评论
快来发表一下你的评论吧 !