一般在汽車電子中給ECU刷寫程序的時候艺玲,由于程序過大括蝠,超過多幀允許發(fā)送的最大字節(jié)數(shù),就需要分塊了饭聚,分塊的大小按照嵌入式底層和上位機約定的大小忌警,一般為1024個字節(jié)的整數(shù)倍。
按照多幀發(fā)送的規(guī)則秒梳,
大致回顧以下過程法绵,
首先上位機發(fā)送請求,02 27 03
02:字節(jié)大小
27:服務(wù)號
03:子功能
下位機回復(fù)多幀發(fā)送
其中100A
1:表示多幀(多幀同樣適用于程序刷寫酪碘,依然是這個格式朋譬,當(dāng)下位機通過該報文讀取到字節(jié)數(shù)和塊大小一樣,那么發(fā)送BS為0兴垦,表示不分塊)
00A:表示多幀的字節(jié)數(shù)A表示一共10個字節(jié)
下位機發(fā)送
上位機發(fā)送流控幀
30 08 0A
30:其中3表示流控幀徙赢;0(FS):表示流狀態(tài),繼續(xù)發(fā)送探越,等待狡赐,還是其他
08(BS):表示塊大小
0A:間隔時間
流控幀一般上位機和下位機約定固定值
流控幀發(fā)送:21表示多幀發(fā)送,第一個多幀應(yīng)為在10 0A的時候已經(jīng)發(fā)送一次了钦幔,所以從21開始枕屉;
一般多幀發(fā)送從20~2F依次循環(huán),直到發(fā)送完該塊的大薪诨薄搀庶;
舉例:
一個程序有2048個字節(jié),那么我們規(guī)定一個塊發(fā)送1024個字節(jié)铜异,那么我們發(fā)送兩個塊就可以發(fā)送完畢該程序到下位機哥倔;
那么理論一個塊需要發(fā)送幾次循環(huán)的多幀呢?
1024/(7*16)=9
及就是循環(huán)20~2F一共9次就可以講程序發(fā)送完畢揍庄;
20~2F一共有16幀咆蒿,注意這個時候幀與幀之間的時間間隔,不能太短一般定為50ms