假設從機節點所選擇的時鐘(精度不高的時鐘)精度為±14%時,(13–11.18)/13 = 14%,即是說當精度為±14%時,主機節點發送13個位數據,從機節點最差只能接收到11.18位(此值為上限),因此,只有當識別閾值設置為小于11.18時,才能識別到同步間隔,若識別閾值高于11.18位,就會出現主機發送同步間隔,而從機檢測不到的情況。由于在除同步間隔段以外,幀中任何其余部分都不會發送超過9位的顯性電平,(10.26 - 9) / 9 = 14%,即是說主機節點發送9個位數據時,從機節點可能最多收到10.26位(此值為下限),因此,為了避免將其他字段識別為同步間隔,判斷閾值必須大于10.26位,綜上,識別閾值可設為11。
假設從機節點選擇的時鐘(精度較高的時鐘)在容限范圍內(±1. 5%)時,按照上面的計算方法,識別閾值應設在9.135位(由(9.135 - 9) / 9 = 1.5%計算而來)到12.805 位(由(13–12.805) / 13 =1.5%計算而來)之間。具體設定閾值會隨著所選時鐘的精度,取值范圍在9.135位到12.805位之間浮動。
LIN同步是以幀為單位,每幀進行一次同步。LIN接收節點在接收數據時,可以自動修正總線上通訊的波特率偏差,因為協議中帶有一個字節域的同步段(如圖6所示),采用固定的字節055(轉換為二進制為01010101b),會自動根據同步段計算主機節點的波特率來調整自身的時鐘,達到同步的效果。
圖6 LIN同步段
主機節點發送位速率計算公式如下:
通過計算,可以得到主機節點實際傳輸1位所用的時間,即位速率。
當計算出位速率之后,就可以使用這個速率,基于UART采集原理,獲取到LIN的報文數據。
總結
其實LIN的本質就是基于串口的通訊,常規串口需要知道波特率,但是在LIN通訊中,只有主機能夠設置通訊波特率,從機需要解析報文得到波特率,所以,LIN的同步其實就是解析波特率的過程。
CANDTU系列車載CAN-bus數據記錄儀,集成了1-2路符合ISO11898標準的獨立CAN-bus通道,可以長時間記錄CAN2.0A或CAN2.0B格式的CAN報文信息。另外,設備集成1路LIN總線接口,可支持LIN總線的數據收發測試。