新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于Microchip單片機及收發器實現的低成本LIN總線

        基于Microchip單片機及收發器實現的低成本LIN總線

        作者: 時間:2010-08-31 來源:網絡 收藏

          4.2 軟件實現

          4.2.1 主節點

          主節點完全按照LIN規范實現。主節點的任務就是發送報文頭和發送接收數據,實現一個網關的作用。另外,的剩余功能,可以用來做一些A/D和開關量的采集,還可以驅動一些蜂鳴器、小電機或者LED和LCD等器件。主節點發送流程如圖5所示。


          LIN總線的通信可以通過配置的EUSART來實現。每次通信都由主節點啟動,此處不考慮從節點到從節點的通信??偩€的配置也由主節點來實現,具體波特率可以通過波特率控制寄存器來實現。這里采用9 600的波特率。

          標識符不是一個節點的地址,而是一個報文的描述符。當主節點發送一個0x3C的命令后,再發送8 B的00H,總線就進入休眠模式。在休眠模式下,總線處于空閑狀態,因此任何一個從節點都可以喚醒總線。

          主節點采用高精度的石英晶振作為時鐘源,可以產生低誤差的時鐘信號。在這里,要把主節點設置為異步半雙工通信模式,8 bit數據模式。時鐘選擇為內部時鐘。

          由于EUSART有“發送間隔字符位(SENDB)”,可以在每次發送數據前發送同步間隔字符,這樣可以省掉不少軟件開銷,使可以致力于其他邏輯的運算。

          4.2.2 從節點

          從節點不需要系統配置的信息,所有從節點接收所有報文,然后再判斷是否需要執行。

          從節點不需要外接石英晶振,可以用單片機內部自帶的RC震蕩器實現。MICROCHIP的中端8位單片機大多數都內帶高精度的RC震蕩器,在常溫下(25℃),經過校準可以達到±1%的精度。

          每個單片機在出廠時都經過校準,并把校準字寫在Flash空間的最后一位。在程序開始運行時,會把校準值裝載到W寄存器里。在程序的第一條指令中執行MOVWF OSCCAL,即可將W寄存器里的值送到內部RC震蕩器的校準寄存器里,從而實現校準。

          從節點先檢測總線電平,當長時間的隱性電平結束,出現大于10個位定時的顯性電平后,開始數5個下降沿的時間,用時間值除以8,就可以算出波特率。然后從總線上讀取數據,解碼ID,處理響應。

          EUSART支持波特率的自動檢測和校準,可以使軟件代碼大量簡化。從節點可以在總線空閑時進入休眠狀態,當從節點檢測到主節點發出的同步間隔時,可以從休眠狀態喚醒。

          當從節點被其他外部中斷喚醒時(例如A/D轉換完成,外部IO電平變化等),從節點可以喚醒休眠的總線。

          如果從節點的功能比較簡單,工作電流比較小,可以通過收發器MCP2021的參考電壓輸出端來供電。MCP2021有兩種型號,參考電壓的輸出分別為5 V和3.3 V,適應5 V和3.3 V的單片機。這個參考電壓的輸出電流最大為50 mA,所以不適合工作電流比較大的場合[3-4]。


        上一頁 1 2 3 下一頁

        關鍵詞: 單片機

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 高雄县| 无棣县| 西昌市| 上蔡县| 泽州县| 吴川市| 贺兰县| 健康| 浦江县| 驻马店市| 蒙山县| 普兰店市| 灵宝市| 新沂市| 河曲县| 丰镇市| 洛南县| 湄潭县| 十堰市| 奉贤区| 银川市| 青海省| 桐柏县| 循化| 荔波县| 鄱阳县| 金塔县| 上饶市| 泸州市| 乌海市| 湘乡市| 平安县| 左云县| 海南省| 罗城| 新巴尔虎左旗| 富顺县| 汉阴县| 聂拉木县| 台江县| 合江县|