UDS學習筆記(四)——ISO15765

前面的文章說過了ISO15765在幀的封裝的時候,在首位加了一個02表示幀的有效數據是兩個,但如果僅僅表示有效數據位的話,CAN總線協議上也有表示數據長度代碼。實際上ISO15765有很多的功能,在CAN總線的基礎上,主要實現單幀傳輸以及多幀傳輸。首先上一張圖:

第一眼看這張圖,肯定會很蒙,這是什麼呢?表格從上到下,可以瞭解到有4類幀:單幀(SF),首幀(FF),連續幀(CF),流控幀(FC)。我們用上節中使用到的例子來做講解吧。上節中說到了02(這是一個十六進制的書,因此其二進制爲00000010)是根據ISO15765產生的,那爲什麼會是02呢?上節中說的2是表示有兩位有效數據。那麼那個0用來表示什麼呢?根據上面的圖裏面可以瞭解到,第一個字節的前四位剛好是用來表示幀的類型的。因此我們可以推理得到,”請求”是一個單幀。

請求    02 10 02 xx xx xx xx xx

那我們就會想到,這四種幀有什麼功能呢?

最容易理解是就是單幀(SF),很多隻需要一幀就能完成就可以使用單幀傳輸了,像之前說的“請求”,”肯定響應“什麼的就是單幀。

而後面的首幀(FF),連續幀(CF),流控幀(FC)。都與多幀傳輸有關。當需要傳輸的數據量比較多時,一幀的數據無法完全包含所有的數據。例如燒寫固件時,就必須使用到多幀傳輸。多幀傳輸的方式如上圖,發送端先發送首幀(FF),接受端接收到後返回一個流控幀(FC)給發送端,之後全部都是連續幀(CF)了。那麼首幀(FF),連續幀(CF),流控幀(FC)。它們具體內容是些什麼呢?因此我們要回到第一張圖去:

對於首幀(FF)來說,它主要發送兩個字節的數據,第一個字節的高四位自然爲1了,低四位和第二個字節共同表示多幀傳輸的字節數。那麼我們可以得到一次性最多可以發送2的12次方-1個字節。那就是4095個字節了。

對於連續幀(CF),它有一個叫SN的代碼區域,這SN表示的是包的連續號,從0到15後,又置零。其功能是說明幀的連續順序。需要注意的是,首幀雖然沒有SN的區域,但是在首幀也佔一個SN,因此首幀之後的連續幀需要從1開始計數

對於流控幀(FC),它有三個區域:FS,BS,STmin。FS表示的是流控狀態參數。例如0表示的是繼續發送,1表示的是等待,2表示溢出。BS表示的是塊的大小,即發送端一次性能夠發送多少個連續幀。要注意的是,BS表示的是在發送端沒有接受到流控信號時,能夠發生的幀的數目。而當BS爲0則表示,在數據傳輸的時,接收端不再發送流控幀了。發送端應當連續不斷的發送數據。STmin表示的是兩個連續幀的時間間隔。

簡單的介紹ISO15675就到這裏了,有什麼問題之後進行補充

https://zhuanlan.zhihu.com/p/44857562

https://www.jianshu.com/p/319a4a432f81

https://www.cnblogs.com/pujj199sz/p/10038448.html

https://blog.csdn.net/dop102/article/details/80318141

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章