衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

初學者如何快速學習LIN 總線(應用/分類/LIN報文/幀結構)

454398 ? 來源:面包板社區 ? 作者: 心機之花 ? 2020-10-22 12:21 ? 次閱讀

LIN總線是目前常見的一種A類網絡協議。LIN的全稱為Local Interconnect Network。LIN主要功能是為CAN總線網絡提供輔助功能,應用場合有智能傳感節點、自動車窗節點等。目前最新的LIN協議是LIN2.2,制定于2010年。LIN的一大優點是成本低,但其最大傳輸速率為20Kbps。建議的通信速率如下,低速2400bps,中速9600bps,高速19200bps。根據OSI參考模型,LIN總線僅規范了數據鏈路層和物理層。

LIN的部分應用LIN的特點如下:

1.采用單主多從的組網方式,無CAN總線那樣的仲裁機制,最多可連接16個節點(1主15從)。

2.對硬件要求簡單,僅需UART/SCI 接口,輔以簡單驅動程序便可實現 LIN 協議。故幾乎所有的MCU均支持LIN。

3.不需要單獨的晶振,便能完成主、從節點的同步,硬件成本大幅降低。

4.僅使用一根信號線便可完成信息的傳輸,即所謂的單總線設備。

5.傳輸速率最高可達20Kbps,符合A類網絡標準,滿足車身控制需要。

6.LIN 網絡中新節點的加入,對網絡中其他原有節點的軟硬件設計不會造成影響。

LIN網絡主從節點的功能

LIN網絡中的節點任務分為主機任務和從機任務兩類。其中,主機任務只在主機節點上運行,而從機任務在主機節點和從機節點上均可運行。也就是說,主機節點可以實現主機任務和從機任務。

A.主機任務主要執行以下功能:

1.定義總線上的通信速率。(同步場?待考)

2.發送報文幀頭,包含同步間隔場、同步場和標識符場三個部分。

3.監控總線通信,通過校驗和確定數據正確性與否。

4.使從機進入喚醒或睡眠狀態,并響應從機的喚醒要求。

B.從機任務既可運行于主機又可運行于從機,它主要完成以下功能:

1.等待主機任務發送的同步間隔,使從機與主機于同步場中獲得同步。

2.分析標識符場,若與自己相關,則接收或發送數據,若與自己無關則什么都不做。

3.檢查和發送校驗和。

4.接受主機任務的喚醒和睡眠請求。

綜上,主機報文的標識符能觸發與之對應的不同從機之間的通信。

LIN報文的幀結構

LIN 總線上具有“顯性”和“隱性”兩種互補的邏輯電平。其中,顯性電平(參考地電壓)是邏輯 0,隱性電平(電源電壓)是邏輯1。

LIN在總線上以具有固定格式的報文進行傳遞,但是這種報文數據段的長度是可以調整的。LIN網絡中的所有節點(包括主機節點)都具有從機任務,當接到主機任務的報文信息時,它們中的某一個要對報文做出響應。

報文頭僅可以由主機節點發出

LIN總線的一幀主要由兩部分組成,即報文頭(Header)和報文響應(Response)。其中,報文頭是由一個主機節點的主機任務發出的,而報文響應(以下簡稱響應)是由一個主機節點或從機節點的從機任務發出的。其中報文頭由同步間隔場(最小13個顯性位)、同步場(1個字節,數據不變,0x55)、和PID場(1個字節)三部分組成;報文響應由2/4/8個字節的數據場、校驗和場(1個字節)所組成。報文頭和響應之間有一個幀內空間分隔,最小空間為0。

LIN的幀結構(英文版)

LIN的幀結構(彩圖版)

LIN的幀結構

示波器采出來的LIN波形,能看出0x00和0x55

LIN 的字節場格式就是通常的“SCI”或“UART”串行數據格式(N81編碼)。即每個字節場的長度是10個位定時(BIT TIME):1bit起始位+8bits數據位+1bit停止位。

起始位(START BIT)是一個“顯性”位,它標志著字節場的開始。接著是8個數據位,首先發送最低位。停止位(STOP BIT)是一個“隱性”位,它標志著字節場的結束。LIN報文幀中的同步場、標識符場、數據場、校驗和場的格式都符合上述字節場的格式。

下面對幾個重要的部分詳細說明。

同步間隔場

間隔場是唯一一個不符合字節場格式的場。從節點需要檢測到至少連續11個顯性位才認為是間隔信號。

同步場

一個字節,即0x55。

LIN的被保護標識符場(PID場)

PID場定義了報文的內容和長度。如圖,PID場分為6個標識符位和2個ID奇偶校驗位。6個標識符位我們稱之為ID。如果加上2個奇偶校驗位就變成PID了,即Protected ID。6個標識符位中,標識符后兩位為數據長度控制位。總的來看,ID的范圍是0-0x3F。注意是ID,不是PID。要區分開。這一段要講的是我們需要將LIN的ID與PID分清楚,不能混淆。

上圖中的ID4和ID5為數據長度控制位(ID4是低位)。值為00或10時,數據長度為2個字節。值為01時,數據長度為4個字節。值為11時,數據長度為8個字節。在實際應用中,我并沒有發現ID4和ID5與真實的數據長度有什么關系。接觸到的LIN報文均為8個字節的數據。

P0和P1為奇偶校驗位,算法如下:

#include #include int main(){ short p0=0,p1=0; short LIN_ID=0x22,PID=0x00; p0 = (LIN_ID & 0x01) ^ ((LIN_ID & 0x02) >> 1) ^ ((LIN_ID & 0x04) >> 2) ^ ((LIN_ID & 0x10) >> 4); //按位異或 p0 = p0 & 0x01; p1 = ~(((LIN_ID & 0x02) >> 1) ^ ((LIN_ID & 0x08) >> 3) ^ ((LIN_ID & 0x10) >> 4) ^ ((LIN_ID & 0x20) >> 5)); p1 = p1 & 0x01; PID = (p1 << 7) | (p0 << 6) | LIN_ID;? ? ? ? printf("p0=%#x,p1=%#x,PID=%#X\n",p0,p1,PID);? ? ? ? system("pause");? ? ? ? return 0;}

所謂奇偶校驗就是在發送的每一個字節后都加上一位,使得每個字節中1的個數為奇數個或偶數個。接收方通過計算數據中1的個數是否滿足奇偶性來確定數據是否有錯。這個不用背,用的時候可以查表。

數據場

數據場主要需注意每個字節先傳輸的是最低位。即如果某一信號長度超過1個字節,采用低位在前的方式發送(小端)。

校驗和場(checksum)

校驗和場是數據場所有字節的和的反碼。所有數據字節的和的補碼,與校驗和字節相加所得的和必須是0xFF。

算法(Classical):累加所有字節。對每次加和進行判斷,如果和大于0xFF,那么就把高八位的1,與低八位相加,其實就是低八位加1(翻轉八位和)。得到最后的結果后,取其反碼,我們就得到了最后的校驗和。參照下圖理解一下。

如何算出LIN的校驗和場

講解一下上面的圖,0x4A+0x55 = 0x9F這個沒有疑問,再加0x93 = 0x132,很明顯,超過了0xFF,分解為0x1和0x32,突出的高8位刪除,加到低8位中,0x1+0x32=0x33。再加0xE5 = 0x118,又超了,0x1+0x18=0x19。取反(Not),0xE6。

練習:下圖是一些LIN總線數據,以最后一組為例,2個0xFF之和為0x1FE,處理后仍然為0xFF。故8個0xFF加和之后仍為0xFF,取反碼為0x00。

一組LIN報文校驗和場的兩種類型

校驗和場通常會有兩種不同的類型,英文簡稱為CST(Checksum Type)。一種是classic checksum(LIN 1.3),一種是enhanced checksum(LIN 2.0及以上)。上文講到的校驗和場算法實際上是classic的,即只對Data(數據場)進行校驗和的計算。Enhanced Checksum在計算時需要把PID也加入到計算隊列中。

9600波特率下,ChecksumType為classic

下圖是CST(校驗和類型)為Enhanced時的報文形態。此時校驗和的計算需要包含前面的PID字節。舉例,下圖中第一幀報文,ID為0x02,PID通過查表(參考文獻5)可得到對應的PID是0x42,0x42的反碼是0xBD。原理上一樣,只不過計算校驗和的時候,需要把PID也放進去。

PLIN-USB收到的LIN報文,很詳細

這里有個知識點一定要注意:標識符為0x3C和0x3D的幀只能使用經典校驗,這兩組幀是LIN的診斷幀。即LIN 2.0及以上才有的診斷幀,需要使用經典校驗,不能將PID也加入到校驗計算序列。自己寫LIN驅動的小伙伴要格外注意。

用Kvaser收到的第一個LIN報文

LIN總線的布線組網

LIN網絡的節點數量不應超過16個,否則節點增加將減少網絡阻抗,會導致環境條件變差,從而不能進行正常的無錯誤通訊。BOSCH汽車電氣與電子中這樣描述,“LIN總線規范中沒有規定總線允許的最大節點數。......但實際應用中,為了保證數據傳輸的可靠性,總線允許的最大節點數為16個。“

實驗證明(該實驗需要考證),每增加一個節點,就會減少約3%的阻抗;網絡中的通訊導線長度應小于或等于40m;主機節點的總線端電阻典型值是1k?,從機節點是30 k?。

LIN總線的應用

LIN總線上可以傳輸的兩類數據,信號報文和診斷報文。

診斷報文的輸送是在具有兩個保留標識符的幀里面完成的。數據場的判讀取決于數據場本身以及通訊節點的狀態。

LIN具有調度表機制。調度表負責調度網絡各報文發送的順序。調度表在網絡系統設計階段確定。調度表使得LIN通信具有可預測性。主任務可以擁有多個調度表,并在不同的調度表之間切換。

LIN的描述文件叫做LDF文件,可以設置報文幀,信號和調度表等。

LIN幀的分類

LIN幀按照幀類型來分類可以分為普通幀、事件觸發幀、零星幀、診斷幀、用戶自定義幀和保留幀。

普通幀的標識符(ID)為0到0x3B。主任務發出報文頭,一個任務響應,一個或多個任務接收。

事件觸發幀的標識符為0到0x3B。事件觸發幀必須有一個獨立的ID,該ID可以與多個普通幀相關聯。在事件觸發幀時隙內發送幀頭,只有當相關聯的無條件幀內有信號被更新時,才發送幀響應。幀響應的第一個數據字節等于標識符,即響應最多可以傳輸7個字節的數據;如果沒有幀響應,幀頭被忽略。幀響應可由多個節點發送,發生沖突時切換到“沖突解決調度表”,之后再切換回到原來的調度表。

零星幀表示共用一個時隙、在需要時才被發送的一組普通幀。標識符為0到0x3B。

診斷幀用來傳輸診斷或配置信息,一般包含8個字節數據。0x3C為主請求幀,0x3D為從響應幀(注意校驗方式是classic!)。診斷響應基于ISO15765-2傳輸層和ISO14229應用層。

診斷幀

用戶自定義幀標識符為0x3E,可以傳輸任何用戶自定義的信息。

保留幀的標識符為0x3F。略。

關于LIN的版本

LIN2.0新增加了下列屬性:“增強校驗和(Enhanced)”、“重新配置和診斷”、“波特率自動探測”、“響應錯誤狀態監控”。LIN2.0從機節點無法與LIN1.3主機節點操作。

關于睡眠

主節點可以發送一幀ID為0x3c,第一個字節為零的主請求幀來使處于工作狀態的從節點進入睡眠。這幀報文稱為睡眠指令。

從節點在接到睡眠指令之后,也可以選擇不進入睡眠狀態而繼續工作,這根據應用層協議而定。

當總線空閑4到10秒的時候,所有從節點必須進入睡眠狀態。(注:空閑的定義是沒有顯性位和隱性位之間的轉換。)

關于喚醒

在一個處于睡眠狀態的LIN網絡中,任何一個節點都可以發送喚醒信號。

喚醒信號是一個250us到5ms的顯性電平。

問題:這里的喚醒信號可否按照恒潤的教程理解為在20Kbit/s波特率下的0x0F,或在1Kbit/s波特率下的0x0F?

當從節點發出喚醒信號之后150ms,主節點仍未發送報頭時,從節點可以再次發送喚醒信號。當連續發送了3次喚醒信號之后如果主節點仍未發送報頭,從節點要等待1.5秒以后才可以再次發送喚醒信號。

關于LIN的基礎知識先介紹到這里。推薦一個帖子:《白話LIN總線》,很生動形象!

白話 LIN總線, 晚會開始啦 - 汽車電子 - 電子工程世界-論壇

www.LIN-SUBBUS.org上的消息顯示稱,LIN2.2A為最后一版非ISO的LIN總線標準。

LIN總線最新的specification(規范)將會是ISO 17987 Part 1-7 中的一部分。
編輯:hfy

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • CAN總線
    +關注

    關注

    145

    文章

    1955

    瀏覽量

    131087
  • LIN總線
    +關注

    關注

    19

    文章

    109

    瀏覽量

    27610
  • 網絡協議
    +關注

    關注

    3

    文章

    269

    瀏覽量

    21634
收藏 人收藏

    評論

    相關推薦

    LIN總線錯誤類型介紹#lin總線 #汽車電子

    LIN總線
    北匯信息POLELINK
    發布于 :2024年12月21日 14:04:56

    CAN總線LIN總線的區別

    不同的數據傳輸速率,從最低的10 kbps到最高的1 Mbps。 拓撲結構: 通常采用雙絞線結構,支持多點通信。 錯誤檢測: 具有強大的錯誤檢測機制,包括位錯誤、錯誤等。 仲裁機制: 使用基于優先級的非破壞性
    的頭像 發表于 11-12 10:13 ?2559次閱讀

    【技術分享】汽車電子之LIN協議

    應用的低成本、低速率的串行通信總線,屬于局部互聯網。LIN由汽車行業開發,用作經濟高效的子總線系統,其屬于CAN的下層網絡,是SAE規范的汽車A類網絡,適用于對總線性能
    的頭像 發表于 11-12 01:05 ?862次閱讀
    【技術分享】汽車電子之<b class='flag-5'>LIN</b>協議

    Lin總線的定義以及靜電保護方案

    1、Lin總線介紹LIN(LocalInterconnectNetwork,本地互連網絡)是一種低成本、串行通信協議,主要用于汽車電子系統中的微控制器和智能傳感器之間的通信。LIN
    的頭像 發表于 10-13 08:03 ?482次閱讀
    <b class='flag-5'>Lin</b><b class='flag-5'>總線</b>的定義以及靜電保護方案

    干貨分享 | TSMaster—LIN 喚醒與休眠機制

    在汽車總線中常見的喚醒方式有硬線喚醒、網絡喚醒和特定信號喚醒,而LIN總線則是通過休眠與喚醒電平來實現的,本文將介紹LIN的喚醒與休眠機制
    的頭像 發表于 09-25 08:03 ?2101次閱讀
    干貨分享 | TSMaster—<b class='flag-5'>LIN</b> 喚醒與休眠機制

    LIN接口靜電放電防護方案

    LIN接口靜電放電防護方案 方案簡介 LIN數據線是Local Interconnect Network(局部互聯網絡)的簡稱,是一種專為汽車分布式電子系統設計的低成本串行通信機制。LIN總線
    的頭像 發表于 09-19 17:04 ?542次閱讀
    <b class='flag-5'>LIN</b>接口靜電放電防護方案

    虹科技術 優化始于數據:Baby-LIN設備如何高效存儲總線數據?

    質量和性能至關重要。本文將講解虹科BabyLIN系列產品如何實現高效的總線數據記錄和存儲。 虹科Baby-LIN系列產品作為專業LIN總線產品,以其高性能和可靠性受到市場的青睞,其支持
    的頭像 發表于 08-16 10:07 ?477次閱讀
    虹科技術 優化始于數據:Baby-<b class='flag-5'>LIN</b>設備如何高效存儲<b class='flag-5'>總線</b>數據?

    XMC4700通過發送相應的報頭來獲取LIN總線上的可用數據,沒有從從屬設備上得到任何響應,為什么?

    我正試圖通過發送相應的報頭來獲取 LIN 總線上的可用數據,但我沒有從從屬設備上得到任何響應。 我可以在 LIN 分析儀上看到 ID,但無法獲得數據
    發表于 07-19 06:15

    TSMaster 中不同總線報文消息過濾的操作方式

    TSMaster軟件平臺支持對不同總線(CAN、LIN、FlexRay)報文和信號的過濾,包括全局接收過濾、數據流過濾、窗口過濾、字符串過濾、可編程過濾,針對不同的總線信號過濾器的使用
    的頭像 發表于 06-22 08:21 ?1652次閱讀
    TSMaster 中不同<b class='flag-5'>總線</b><b class='flag-5'>報文</b>消息過濾的操作方式

    虹科直播 | 原來LIN總線故障還能這樣查?!教你LIN總線譯碼技巧及運用!

    LIN總線大家都并不陌生,遇上這類故障,你的第一反應可能是使用萬用表測量電壓,看看是不是存在短路等故障。然而,萬用表所測得的僅僅是總線信號的平均電壓,即使平均電壓正常也不代表通訊信號就是正常
    的頭像 發表于 06-20 08:08 ?674次閱讀
    虹科直播 | 原來<b class='flag-5'>LIN</b><b class='flag-5'>總線</b>故障還能這樣查?!教你<b class='flag-5'>LIN</b><b class='flag-5'>總線</b>譯碼技巧及運用!

    LIN數據總線ESD保護方案

    LIN數據總線ESD保護方案 LIN總線(Local Interconnect Network)是一種用于車輛電子系統中的串行通信協議。LIN
    發表于 05-28 16:56 ?689次閱讀
    <b class='flag-5'>LIN</b>數據<b class='flag-5'>總線</b>ESD保護方案

    LIN數據總線ESD保護方案

    LIN數據總線ESD保護方案
    的頭像 發表于 05-17 14:35 ?510次閱讀
    <b class='flag-5'>LIN</b>數據<b class='flag-5'>總線</b>ESD保護方案

    TSMaster 自定義 LIN 調度表編程指導

    LIN(LocalInterconnectNetwork)協議調度表是用于LIN總線通信中的消息調度的一種機制,我們收到越來越多來自不同用戶希望能夠通過接口實現自定義LIN調度表的需求
    的頭像 發表于 05-11 08:21 ?755次閱讀
    TSMaster 自定義 <b class='flag-5'>LIN</b> 調度表編程指導

    LIN數據總線ESD保護方案

    LIN總線(Local Interconnect Network)是一種用于車輛電子系統中的串行通信協議。LIN接口與其他外露的接口一樣,也會受到靜電放電 (ESD) 的影響。電子工程師需設計具有
    的頭像 發表于 04-21 17:56 ?1115次閱讀
    <b class='flag-5'>LIN</b>數據<b class='flag-5'>總線</b>ESD保護方案

    國內哪家的FPGA適合初學者

    如題,想著手學習FPGA的話,國內哪家的比較好,更適合初學者學習?這方面的經驗,是一點都沒。
    發表于 04-14 19:17
    百家乐大转轮真人视讯| 鸿博投注| 百家乐官网公式书| 百家乐凯时赌场娱乐网规则| 平塘县| 百家乐出庄概率| 娱乐城开户送金| 24向风水| tt娱乐城备用| 百家乐官网| 赌博百家乐技术| 百家乐官网投注方式| 安阳百家乐赌博| 百家乐官网现金网排名| 百家乐贴| 百家乐官网投注法| 大哥大百家乐的玩法技巧和规则 | 帝王百家乐新足球平台| 浪卡子县| 百家乐千术手法| 百家乐官网怎么样投注| 水果机破解器| 瑞士百家乐官网的玩法技巧和规则 | 澳门百家乐官网| 澳门百家乐什么规则| 百家乐官网网上真钱麻将| 威尼斯人娱乐城动态| 百家乐官网技巧看| 众发国际娱乐| 澳门百家乐走势图怎么看| 至尊百家乐官网奇热| 大发888任务怎么做| 战神百家乐娱乐| 普陀区| 威尼斯人娱乐城官网| 谁会玩百家乐官网的玩法技巧和规则 | 百家乐视频二人麻将| 百家乐官网是片人的吗| LV百家乐客户端LV| 大丰收百家乐官网的玩法技巧和规则 | 属虎属鼠合伙做生意吗|