《電子技術應用》
您所在的位置:首頁 > 通信與網絡 > 設計應用 > 基于單片機的LIN協議實現
基于單片機的LIN協議實現
EEworld
EEworld
摘要: 1概述LIN協議是新出現的一種新型低成本串行通信總線,其全稱是LocalInterconnectNetwork,即局部互聯網絡。...
關鍵詞: 單片機 LIN協議
Abstract:
Key words :

關鍵字:單片機 LIN協議

1 概述

LIN協議是新出現的一種新型低成本串行通信總線,其全稱是Local Interconnect Network,即局部互聯網絡。它最開始出現于汽車行業,是為解決汽車智能化和網絡化的發展要求和降低汽車制造成本的矛盾而提出來的一種串行總線協議,主要用于車門、車燈等需要簡單控制但又要求智能控制的場合。它的主要特點是:采用單個主控制器/多從設備通信模式;基于普通UART/SCI接口硬件實現,協議簡單;網絡傳輸速率不高,最高可達20kb/s。由于LIN協議的突出特點是協議對硬件的依賴程度低,可以基于普通單片機的通用串口等硬件資源以軟件方式實現,成本低廉,因此可廣泛應用于汽車行業以外的其他領域,如智能家庭網絡內部的數據傳輸、節點控制等場合。

本文依據對LIN協議的分析,對其協議在普通單片機上的具體實現,即如何利用單片機有限的硬件資源實現LIN的主節點、從節點,進行可行性方案的研究、探討。

2 LIN協議的簡介

LIN協議的最新版本是LIN Specification Package Revision 2.O,包括協議規范、節點診斷配置規范、物理層規范、API規范等幾個方面,從硬件配置到節點配置語言都作了詳細的規定。下面就其協議規范作一簡要介紹和分析。

LIN的數據傳輸是采用報文幀進行的。一個完整的報文幀由1個主機節點發送的報文頭(header)和1個主機或從機節點發送的響應(response)組成,如圖1所示。報文頭包括1個間隔場(break)、1個同步字節場(synch)和1個保護標識符字節場PID(Protected IDentifier)。間隔場是由持續了至少13個位時的顯性電平和至少1個位時的隱性電平組成;由主機節點產生,標志著一次數據通信過程報文幀的開始。同步字節場包含時鐘同步信息。同步字節場的格式是0x55,表現在8個位定時中有5個下降沿,即隱性跳變到顯性的邊沿。

LIN報文幀 www.elecfans.com


所有從機節點在主機節點發布報文頭之后都應能檢測到間隔場的存在,并且在正確地接收同步字節場后,準確計算出主機節點將要發送數據的波特率,并以此波特率作為下一步要發送或接收數據的波特率的設定值。這樣,經過了間隔場和同步字節場的接收,所有的從機節點達到了與主機節點的同步。

下一步,所有的從機節點以計算得到的波特率來接收報文頭的保護標識符字節場。

保護標識符字節場PID(Protected IDentifier)與標準的串行通信數據幀格式相同,由1位起始位和1位停止位及8位數據位組成,屬于數據場,如圖2所示。

保護標識符字節場由兩部分組成:標識符和標識符奇偶校驗。ID0~ID5屬標識符,確定了標識符的內容,可從0~63取值。其中,0~59(0x3b)用于信號傳送幀,60(0x3c)和61(0x3d)用于傳送診斷數據,62(0x3e)保留用于用戶定義的擴展,63(0x3f)保留用于將來協議升級。奇偶校驗位P0和P1則是對標識符位ID0~ID5的奇校驗和偶校驗,作為對接收到ID的校驗措施,以確保接收ID的正確性。
報文幀的響應(response)由3~9個字節場(data field)組成,包括2、4或8字節的數據場(data field)和1個校驗和場(checksum)。它們是由要發送數據的節點(主機節點或從機節點)所發送的數據和校驗場所組成,都屬于數據場。

校驗和場(checksum)有兩種:一般的校驗和場與增強的校驗和場。一般的校驗和是數據場所有字節數據和的反碼。和是按帶進位加(ADDC)方式計算,所有數據字節和的補碼與校驗和字節相加的和必須是“0xFF”。增強的校驗和與一般的校驗和的區別在于計算數據場和時加上了保護標識符字節場。

3 LlN協議在普通單片機上的實現

現在單片機種類繁多,硬件資源各不相同,功能也千差萬別。總體來講,基于普通單片機軟件實現LIN協議的方法可分為兩大類:一種是基于單片機通用串口的實現方式,另一種是基于單片機兩個普通端口位的位操作實現方法。

3. 1基于單片機通用串口LlN協議的實現

基于單片機通用串口的LIN協議的實現方法主要是針對具有通用串口的單片機來講的。這類單片機的代表當屬最常用的51系列單片機,如Atmel公司的AT89C51/52。

(1)基于單片機串口LlN主節點的實現

由LIN協議的分析可知,在一次幀通信過程中,主從節點在大部分時間里是以標準的串行通信數據幀的形式交換數據的,這也是LIN協議可以基于單片機通用串口實現的原因。幀通信的關鍵是要實現主節點和從節點的同步。在同步過程中,主、從節點所執行的操作是不同的:主機節點的任務是要發送報文頭,從節點的任務是接收和判斷報文頭,實現與主節點的同步。報文頭的間隔場是一個基于主機節點時鐘頻率的13個以上位時(bit time)和至少1個位時的間隔界定符。對主節點來講,這一部分是實現主節點功能的關鍵。間隔場和間隔界定符的實現可采用改變串口波特率,用串口輸出特定數據的方法來實現。例如在一般情況下,單片機采用19.2kb/s波特率的速率傳輸數據,可先將串口的波特率設置為9.6kb/s,則傳輸0xc0這樣一個數據就可以實現按照19.2kb/s的波特率來計算位時的同步間隔和同步間隔界定符的位時長度要求(因若采用19.2kb/s的傳輸率傳輸00數據只能實現10個位時的同步間隔符,無法達到13個位時的要求)。隨后的PID場的發送和數據場的發送或接收,可以基于單片機的通用串口以正常的19.2.kb/s的波特率來操作。

基于串口LlN主節點硬件原理如圖3所示。


基于串口LlN主節點硬件原理 www.elecfans.com


主節點在一次幀通信過程中,要根據通信過程中不同的階段,將串口設置成不同波特率的發送或者接收狀態,以完成報文頭間隔場、同步字節場的發送,保護標識符字節場的發送,及下一個階段的接收或者發送數據過程。

(2)基于單片機串口LlN從節點的實現

從節點實現的關鍵是能夠正確實時地接收報文頭,達到與主節點的同步,為下一步的數據交換做好準備。基于單片機通用串口構成的LIN從節點的實現方案有兩種:一種是查詢方式,另一種是中斷方式。兩種方法的區別在于報文頭接收判斷方法的不同。查詢方式硬件原理如圖4所示。





同樣,從節點也要求準確的波特率和計時,對時鐘要求較高。建議采用22.1184MHz晶振。

在查詢方式的硬件電路中,為了能及時感受到主節點報文頭的起始階段,可以將串口接收數據端,RXD端與單片機的一個外部中斷觸發端口(INTl或INT0)相連。這樣,當主節點發送過來的間隔場的下降沿到來時,就可以實時地觸發從節點進入對報文頭的接收查詢程序段。在報文頭的接收查詢過程中,從節點自總線電平下降沿到來之際,就對總線顯性電平(低電平)持續的時間進行累積計算,直到發現總線恢復為隱性電平(高電平)為止。如果此段持續時間大于11個主節點工作位時時間,那么從節點就斷定是一次幀通信的開始。接著從節點對同步字節場的接收作好準備,在同步字節場開始位的第一個下降沿起,連續對同步字節場的后4個下降沿進行計時累加,最后將得到的計時時間除以8,得到主節點發送數據的位時時間,即主節點下一步將要進行數據通信的波特率。從節點以此作為串口波特率設定值,通過串口與主節點交換數據。隨后的串口發送或接收數據可采用串口查詢或中斷的方式進行。

間隔場和同步字節場的計時方法有兩種:一種方法是采用軟件模擬一個位時時間,在各階段通過計算調用位時程序次數間接計算出時間;另一種方法是將定時器TO設定成定時一個位時時間后中斷,在各個階段查詢定時器T0中斷次數,通過計算TO中斷次數的差值,也可以間接算出各個階段的持續時間長度。

查詢方式硬件電路簡單,系統中斷的種類和次數少,程序運行比較穩定;但不足之處是系統大部分時間都花費在對幀報文頭的等待查詢上,系統資源利用率低。

中斷方式則是對查詢方式的不足之處改進和提高,其硬件原理如圖5所示。





中斷方式對間隔場和同步字節場的接收則完全采用中斷方式進行。由于普通單片機的外部中斷觸發端只有下降沿和低電平兩種觸發方式,所以報文頭間隔場開始階段和同步字節場的下降沿可以觸發從節點,但報文信號的上升沿卻無法讓從節點感知。改進方法是,讓接收數據流分別經過1個三態門和1個三態非門再進入單片機的串口,2個三態門由單片機的兩個端口來控制。一般情況下,三態門導通,三態非門截止,數據流正常進入單片機串口。當間隔場的下降沿觸發單片機后,程序控制三態門截止,三態非門導通,數據流反相進入單片機,間隔場的上升沿經過三態非門后變成下降沿,同樣也可以觸發單片機中斷。在隨后的同步字節場的接收中,可以按照正常中斷方式進行,即可由同步字節場的5個下降沿觸發單片機中斷5次接收。由于采用中斷方式,所以各個階段的計時就只能采用查詢定時器T0中斷次數的方法來實現。

中斷方式的優點是,對主程序運行的影響比較小,系統的資源利用率高。不足之處是增加了單片機的外圍電路,硬件稍顯復雜。

3.2基于單片機普通端口位LIN協議的實現

對于沒有通用串口的單片機來講,必須采用端口位位操作的方法來實現LIN協議。這類單片機的硬件資源一般很有限,有的只有一個定時器,還不具備外部中斷能力,如Microchip的PIC18F200系列。這種單片機的突出特點是價格低廉,做出的LIN節點將具有無可比擬的價格優勢。

(1)基于普通端口位LIN主節點的實現

基于單片機普通端口位的1IN主節點,在報文頭和數據場的實現上都要采用位操作的方法來實現。其硬件構成原理圖和基于單片機通用串口LIN主節點硬件原理圖完全相同,區別在于前者數據收發端RXD和TXD端可以是任意的單片機普通端口位,而后者則必須采用單片機通用串口。
報文頭間隔場的實現可以將定時器TO設置為定時一個位時中斷的工作方式,置LIN數據發送端TXD為顯性電平(低電位),啟動定時器T0對顯性電平持續時間進行計時,當達到13個以上位時后置LIN發送數據端TXD為隱性電平(高電位),這樣就完成了間隔場的發送。在隨后的間隔場界定符和同步場的實現上,也采用同樣的方法。在數據場的接收和發送中,同樣需要定時器TO的配合來完成。發送數據時,從待發數據存儲區中依次取出一個個數據,轉換成10個bit類型的位數據。定時器T0同樣是1個位時中斷1次,在中斷處理程序中改變計時變量值。發送數據程序根據計時變量的差值將lO個bit類型的位數據依次按照持續1個位時時間從數據發送端TXD端發出;接收數據時,則需要先用定時器T0計時半個位時時間,以檢測1個字節的開始位,然后恢復定時器TO的一個位時計時中斷設定。這樣,在隨后的數據位檢測中就能保證在數據位的中間時刻檢測該數據位,從而保證數據位接收的正確性。在10個bit類型的位數據接收完畢后,還要將其轉換為一個byte類型的數據,存入相應的數據緩沖區。

(2)基于普通端口位LIN從節點的實現

基于單片機普通端口位LIN從節點硬件電路和基于單片機通用串口查詢方式的從節點硬件電路基本相同,區別同樣也是沒有用到單片機的通用串口。

由于沒有外部中斷的功能,因此對主節點發送過來的報文頭的接收只能靠從節點主動地等待查詢。考慮到從節點程序不可能一直在查詢等待與主節點同步,因此從節點應該不定時地去查詢等待主節點的報文頭。開始階段設置定時器為不定長時間中斷方式,時間到后從節點去查詢等待主節點發送的報文幀。當檢測到同步信息后,設置定時器為標準位時時間中斷方式,對從節點接收或發送數據過程進行位時界定。從節點按照上述提到的位操作方法接收PID場,并轉換為byte類型的數據,判斷下一步數據場的發送或接收方向,接著按照位操作的方法實現數據的發送或接收。定時器的兩種工作方式在查詢等待和報文通信過程中輪流轉換,在報文通信過程結束后,重新設置定時器為不定長時間中斷方式,等待下一次的報文通信過程,以此類推。

從節點由于采用不定期查詢等待方法與主節點的同步,因此通信成功率不高;但對于數據通信速率和實時性要求不是很高的場合,還可以滿足要求。如果單片機有外部中斷能力,則可以改從節點不定期查詢為從節點用外部中斷查詢主節點發送來的報文,這樣通信的成功率就可以大大提高。

結 語

相對于增強型單片機,普通單片機的功能顯得簡單多了,資源也很有限,但它有一個價格低廉的優勢。而LIN總線的特點是協議簡單,可用軟件方式實現,特別適合于數據通信速率要求不高、控制簡單的場合。如果能以普通單片機有限的資源實現LIN通信協議,無疑會為低端串行通信領域提供一個很好的選擇。以普通單片機為硬件基礎構成的LIN節點也一定會在生產和生活的相關應用領域大有作為。
此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
一本久道久久综合中文字幕| 老牛影视一区二区三区| 欧美一区二区大片| 亚洲午夜精品一区二区三区他趣| 亚洲精品久久视频| 亚洲国产日本| 亚洲国产精品一区二区久| 伊人狠狠色j香婷婷综合| 韩国精品主播一区二区在线观看| 国产日本精品| 国产欧美视频一区二区| 国产美女高潮久久白浆| 国产精品视频yy9299一区| 国产精品二区三区四区| 国产精品福利网站| 国产精品普通话对白| 国产精品日日摸夜夜添夜夜av| 国产精品video| 国产精品久久国产精麻豆99网站| 国产精品久久999| 国产精品一区二区久久| 国产欧美日韩在线播放| 国产一区二区三区四区在线观看| 国产精品亚洲不卡a| 国产欧美一区二区色老头| 国产亚洲成av人片在线观看桃| 国产一区二区激情| 在线精品观看| 亚洲精品小视频在线观看| 99精品视频一区二区三区| 一本色道久久综合亚洲精品不卡 | 国产精品视频| 国产亚洲欧美中文| 伊人久久综合97精品| 亚洲区中文字幕| 一区二区三区黄色| 亚洲综合国产| 亚洲电影免费在线观看| 亚洲日本成人网| 中文在线不卡| 亚洲国内自拍| 国产欧美一区二区三区沐欲| 国产一区视频网站| 亚洲第一久久影院| 亚洲开发第一视频在线播放| 亚洲视频高清| 久久大逼视频| 99精品视频网| 欧美有码在线视频| 欧美 亚欧 日韩视频在线| 欧美日韩极品在线观看一区| 国产欧美日本在线| 亚洲国产影院| 亚洲欧美成人网| 最新日韩在线视频| 亚洲欧美国产视频| 蜜桃av噜噜一区| 欧美午夜在线观看| 黄页网站一区| 一区二区三区四区蜜桃| 久久精品二区| 亚洲综合国产激情另类一区| 久久一区视频| 国产精品成人国产乱一区| 国内精品模特av私拍在线观看 | 韩日欧美一区| 99国产精品久久久久老师| 久久高清福利视频| 亚洲午夜电影在线观看| 久久性天堂网| 国产精品v日韩精品| 一区国产精品| 亚洲天堂成人在线视频| 亚洲区免费影片| 欧美亚洲日本国产| 欧美人成免费网站| 国产一区高清视频| 一区二区三区四区五区精品| 亚洲国产精品黑人久久久| 亚洲一区二区在线看| 欧美成人高清| 国产综合色一区二区三区| 一本色道久久88综合日韩精品| 亚洲国产精品久久91精品| 性18欧美另类| 欧美色区777第一页| 亚洲国产天堂久久综合| 欧美一级大片在线免费观看| 一区二区日韩免费看| 免费欧美在线| 国产一区二区三区免费观看| 亚洲图片在线| 亚洲天堂av综合网| 欧美韩日一区二区三区| 国语自产精品视频在线看8查询8| 亚洲网站视频福利| 在线午夜精品| 欧美韩国日本综合| 在线观看一区二区精品视频| 久久精品国产欧美激情| 久久成人羞羞网站| 国产精品视频xxxx| 亚洲视频在线观看视频| 亚洲视频在线播放| 欧美日韩国产三区| 亚洲黄色免费电影| 亚洲欧洲日韩在线| 欧美成人精品不卡视频在线观看| 国产一区二区毛片| 欧美一级大片在线免费观看| 欧美亚洲一区二区三区| 国产精品无码永久免费888| 这里只有精品在线播放| 在线中文字幕日韩| 欧美色图首页| 一区二区三区四区国产| 亚洲一区二区三区免费在线观看| 欧美日韩国产成人| 日韩视频在线一区二区| 99在线热播精品免费99热| 欧美人与禽猛交乱配视频| 亚洲欧洲精品一区二区三区| 日韩视频在线你懂得| 欧美伦理视频网站| 日韩午夜激情av| 亚洲午夜视频在线| 国产精品多人| 亚洲欧美综合国产精品一区| 欧美一区二区成人| 国产一区二区三区在线观看网站| 欧美有码在线观看视频| 久久中文精品| 亚洲福利一区| 99精品免费| 国产精品久久国产精品99gif| 亚洲欧美国产一区二区三区| 久久成人精品一区二区三区| 国产在线麻豆精品观看| 亚洲成人资源网| 欧美黑人一区二区三区| 亚洲美洲欧洲综合国产一区| 亚洲一区综合| 国产日韩欧美二区| 亚洲高清三级视频| 欧美精品久久久久久久久久| 一区二区三区av| 欧美一区二区视频在线观看| 韩国视频理论视频久久| 亚洲精选在线| 国产精品久久99| 久久av二区| 欧美激情a∨在线视频播放| 中文亚洲欧美| 久久久久久夜| 亚洲人午夜精品| 亚洲永久在线观看| 国产亚洲欧美日韩在线一区| 91久久国产综合久久蜜月精品 | 国产日韩精品一区二区三区在线| 久久成人精品一区二区三区| 欧美sm视频| 99国产精品99久久久久久| 欧美一区日韩一区| 激情五月婷婷综合| 中文在线资源观看网站视频免费不卡| 国产精品高潮呻吟视频| 性欧美大战久久久久久久久| 欧美mv日韩mv国产网站app| 一区二区三区av| 久久久无码精品亚洲日韩按摩| 亚洲国产成人午夜在线一区| 午夜精品久久99蜜桃的功能介绍| 国产主播一区二区| 中国成人在线视频| 国产拍揄自揄精品视频麻豆| 亚洲娇小video精品| 国产精品久久久久久久久免费桃花| 久久精品国产91精品亚洲| 欧美日韩另类视频| 欧美一区二区三区在线| 欧美日韩国产经典色站一区二区三区| 亚洲欧美影音先锋| 欧美日韩免费看| 亚洲第一精品福利| 国产精品高潮久久| 亚洲精品一区中文| 国精品一区二区三区| 亚洲小视频在线观看| 伊人久久男人天堂| 欧美一区二区大片| 日韩一区二区福利| 免费一级欧美片在线观看| 亚洲愉拍自拍另类高清精品| 欧美韩国日本综合| 亚洲大片精品永久免费| 国产精品一区二区在线| 宅男精品视频| 亚洲国产精品久久人人爱蜜臀| 久久久www成人免费精品| 亚洲一本视频|