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