• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于單片機(jī)串口實(shí)現(xiàn)1-Wire總線(xiàn)通信的方法

      2012-05-12 02:47:44多,陳
      關(guān)鍵詞:實(shí)時(shí)性時(shí)序串口

      李 多,陳 軍

      (東南大學(xué) 自動(dòng)化學(xué)院,江蘇 南京 211189)

      1-Wire總線(xiàn)是Dallas半導(dǎo)體公司推出的一種半雙工串行總線(xiàn),它采用單根信號(hào)線(xiàn)實(shí)現(xiàn)微控制器(主機(jī))與接口器件(從機(jī))之間的雙向通信,每個(gè)從機(jī)具有唯一的工廠(chǎng)光刻ID作為地址。

      1-Wire總線(xiàn)的優(yōu)勢(shì)在于結(jié)構(gòu)簡(jiǎn)單、便于總線(xiàn)擴(kuò)展,可以通過(guò)總線(xiàn)為器件供電。1-Wire器件種類(lèi)豐富,典型器件包括溫度傳感器、存儲(chǔ)器、實(shí)時(shí)時(shí)鐘、電池管理等。在低功耗儀表、工業(yè)控制及家庭監(jiān)控網(wǎng)絡(luò)等領(lǐng)域,1-Wire總線(xiàn)獲得了廣泛應(yīng)用。

      1-Wire總線(xiàn)協(xié)議通常采用軟件延時(shí)實(shí)現(xiàn),對(duì)于實(shí)時(shí)性高且無(wú)操作系統(tǒng)的單片機(jī),該方式難以提高單片機(jī)效率,同時(shí)極大地降低了系統(tǒng)實(shí)時(shí)性。本文提出了一種基于單片機(jī)串口的1-Wire總線(xiàn)協(xié)議的軟硬件設(shè)計(jì),該設(shè)計(jì)實(shí)現(xiàn)了1-Wire總線(xiàn)通信和單片機(jī)效率、實(shí)時(shí)性的兼顧。

      1 1-Wire總線(xiàn)協(xié)議簡(jiǎn)析

      1-Wire總線(xiàn)的單根信號(hào)線(xiàn)兼有地址總線(xiàn)、數(shù)據(jù)總線(xiàn)和控制總線(xiàn)的功能,因此,訪(fǎng)問(wèn)1-Wire器件要嚴(yán)格遵循總線(xiàn)協(xié)議以保證數(shù)據(jù)完整性。

      1-Wire總線(xiàn)協(xié)議定義了初始化脈沖、寫(xiě)脈沖和讀脈沖3類(lèi)總線(xiàn)信號(hào),其主要區(qū)別在于,總線(xiàn)上高低電平時(shí)間不同,下面分別對(duì)它們進(jìn)行簡(jiǎn)析。

      1.1 初始化脈沖

      1-Wire總線(xiàn)協(xié)議規(guī)定任何與1-Wire器件的通信需要以初始化脈沖作為同步。初始化脈沖包括復(fù)位信號(hào)和應(yīng)答信號(hào),主機(jī)輸出低電平并維持 480 μs,然后 釋 放 總 線(xiàn) , 完 成 復(fù) 位 。 等 待 15 μs~60 μs, 如 果 存在 1-Wire 器件, 則總線(xiàn)上出現(xiàn)維持 60 μs~240 μs低電平應(yīng)答信號(hào)。初始化脈沖信號(hào)波型如圖1所示。

      圖1 初始化脈沖信號(hào)波形

      1.2 寫(xiě)脈沖

      每個(gè)寫(xiě)脈沖主機(jī)可向從機(jī)傳送1 bit數(shù)據(jù),通常為從機(jī)控制命令。1-Wire總線(xiàn)協(xié)議規(guī)定其典型長(zhǎng)度為60 μs,以保證從機(jī)接收數(shù)據(jù)的完整性。主機(jī)輸出低電平并維持60 μs后釋放總線(xiàn),為寫(xiě)0時(shí)序;主機(jī)輸出低電平并維持15 μs內(nèi)釋放總線(xiàn),為寫(xiě)1時(shí)序。寫(xiě)脈沖信號(hào)波形如圖2所示。

      圖2 寫(xiě)脈沖信號(hào)波形

      1.3 讀脈沖

      每個(gè)讀脈沖從機(jī)可向主機(jī)傳送1 bit數(shù)據(jù),通常為從機(jī)數(shù)據(jù)信息。只有主機(jī)發(fā)出讀脈沖時(shí)序,1-Wire器件才在總線(xiàn)上發(fā)送數(shù)據(jù)。1-Wire總線(xiàn)協(xié)議規(guī)定主機(jī)必須在15 μs內(nèi)采樣總線(xiàn),才能正確讀取從機(jī)數(shù)據(jù)。讀脈沖信號(hào)波形如圖3所示。

      圖3 讀脈沖信號(hào)波形

      2 1-Wire總線(xiàn)與單片機(jī)串口接口設(shè)計(jì)

      2.1 硬件接口

      1-Wire總線(xiàn)協(xié)議規(guī)定主機(jī)和從機(jī)必須通過(guò)集電極開(kāi)路或漏極開(kāi)路結(jié)構(gòu)才能連接到總線(xiàn),以允許器件在空閑時(shí)釋放總線(xiàn),并且總線(xiàn)需要外接上拉電阻才能正常通信。

      1-Wire器件一般具有漏極開(kāi)路結(jié)構(gòu),可直接連接至總線(xiàn)。但單片機(jī)的串口引腳一般具有內(nèi)部上拉電阻,采用單片機(jī)串口實(shí)現(xiàn)1-Wire通信時(shí),不能直接連接至總線(xiàn)。

      鑒于上述原因,本文設(shè)計(jì)了一種基于分立元件的單片機(jī)串口與 1-Wire器件(以 DS18B20[2]為例)的硬件接口電路,如圖4所示。該接口電路簡(jiǎn)單,并且經(jīng)實(shí)驗(yàn)測(cè)試證明其性能可靠,實(shí)現(xiàn)了單片機(jī)串口與1-Wire總線(xiàn)的電氣連接。

      圖4 1-Wire總線(xiàn)硬件接口原理圖

      2.2 通信協(xié)議接口

      單片機(jī)串口采用1 bit起始位、8 bit數(shù)據(jù)位、1 bit停止位的工作方式,發(fā)送時(shí)由LSB至MSB逐位發(fā)送。

      (1)初始化脈沖

      設(shè)置波特率為9600b/s,即每1 bit的寬度為104.2 μs,發(fā)送數(shù)據(jù)0xf0,則起始位和低4 bit構(gòu)成復(fù)位信號(hào),高4 bit為1,即釋放總線(xiàn)。如總線(xiàn)上無(wú)應(yīng)答信號(hào),則串口接收的數(shù)據(jù)等于0xf0,否則說(shuō)明總線(xiàn)上有應(yīng)答信號(hào)。

      (2)讀寫(xiě)脈沖

      設(shè)置波特率為115200b/s,即每1 bit的寬度為8.7 μs,完整的發(fā)送過(guò)程持續(xù) 87 μs,滿(mǎn)足讀寫(xiě)脈沖至少 60 μs的協(xié)議要求。起始位、停止位分別用來(lái)啟動(dòng)、終止讀寫(xiě)脈沖。寫(xiě)脈沖中,根據(jù)串口發(fā)送不同數(shù)據(jù)區(qū)分別實(shí)現(xiàn)寫(xiě)0時(shí)序和寫(xiě)1時(shí)序;讀脈沖中,串口發(fā)送數(shù)據(jù)0xff,起始位實(shí)現(xiàn)讀脈沖時(shí)序的啟動(dòng),LSB為1,此時(shí),主機(jī)釋放并采樣總線(xiàn),起始位與LSB共維持17.4 μs,滿(mǎn)足協(xié)議對(duì)讀時(shí)序的要求。根據(jù)串口接收的數(shù)據(jù)最低位即可區(qū)分從機(jī)發(fā)送至總線(xiàn)的數(shù)據(jù)。

      采用串口實(shí)現(xiàn)1-Wire總線(xiàn)通信的本質(zhì)在于將3類(lèi)總線(xiàn)信號(hào)與不同波特率下不同數(shù)據(jù)的串口收發(fā)過(guò)程建立聯(lián)系,初始化脈沖對(duì)應(yīng)2次串口收發(fā)的過(guò)程,讀寫(xiě)脈沖則對(duì)應(yīng)1次串口收發(fā)的過(guò)程[4]。具體對(duì)應(yīng)關(guān)系如表1所示。

      表1 通信協(xié)議接口映射表

      3 1-Wire總線(xiàn)應(yīng)用——DS18B20

      DS18B20是1-Wire總線(xiàn)的集成數(shù)字溫度傳感器,其精度高、體積小,在智能儀器儀表、工業(yè)控制等領(lǐng)域中廣泛應(yīng)用。

      傳統(tǒng)應(yīng)用方式是采用一根I/O引腳配合軟件延時(shí)的方式實(shí)現(xiàn)相關(guān)協(xié)議,1-Wire總線(xiàn)協(xié)議需要微秒級(jí)時(shí)間分辨率,在通信過(guò)程中必須關(guān)閉系統(tǒng)所有中斷,否則極容易因?yàn)橹袛喾?wù)程序的執(zhí)行而造成通信數(shù)據(jù)錯(cuò)誤。但是關(guān)閉中斷降低了系統(tǒng)實(shí)時(shí)性,使得系統(tǒng)不能及時(shí)響應(yīng)外部請(qǐng)求。對(duì)于任務(wù)少、實(shí)時(shí)性要求不高的系統(tǒng),這種做法是可行的,但是對(duì)于任務(wù)多且無(wú)操作系統(tǒng)的單片機(jī),以初始化脈沖為例,在至少 960 μs的時(shí)間內(nèi),單片機(jī)都會(huì)被1-Wire總線(xiàn)占用,效率大為降低,實(shí)時(shí)性難以保證。

      基于單片機(jī)串口中斷實(shí)現(xiàn)1-Wire協(xié)議,并配合狀態(tài)機(jī)實(shí)現(xiàn)與DS18B20通信,為上述問(wèn)題提出了解決方案。由于串口的收發(fā)都是通過(guò)硬件完成,因此數(shù)據(jù)收發(fā)過(guò)程中單片機(jī)可以處理其他任務(wù),在實(shí)現(xiàn)1-Wire通信的同時(shí),兼顧了實(shí)時(shí)性和效率。

      通信程序包括中斷服務(wù)程序和通信狀態(tài)機(jī)。中斷服務(wù)程序?yàn)槲锢韺樱瓿蓴?shù)據(jù)緩沖區(qū)中的數(shù)據(jù)收發(fā),并通過(guò)全局變量標(biāo)識(shí)總線(xiàn)的狀態(tài);通信狀態(tài)機(jī)為DS18B20協(xié)議層,將對(duì)DS18B20的訪(fǎng)問(wèn)劃分為子狀態(tài),根據(jù)表1將對(duì)DS18B20的不同操作轉(zhuǎn)化為相應(yīng)數(shù)據(jù)并存入數(shù)據(jù)緩沖區(qū),在總線(xiàn)處于空閑狀態(tài)時(shí),依次完成狀態(tài)轉(zhuǎn)移。通信狀態(tài)轉(zhuǎn)換圖如圖5所示[4]。

      圖5 通信狀態(tài)轉(zhuǎn)換圖

      本文提出了一種基于單片機(jī)串口的1-Wire總線(xiàn)通信方式,結(jié)合1-Wire器件DS18B20詳細(xì)介紹了其軟硬件設(shè)計(jì)。相比于傳統(tǒng)1-Wire通信方式,本文提出的方式提高了單片機(jī)效率,兼顧了1-Wire通信和系統(tǒng)的實(shí)時(shí)性,為多任務(wù)且無(wú)操作系統(tǒng)的單片機(jī)應(yīng)用1-Wire器件提供了新的解決方案。

      [1]馬潮.AVR單片機(jī)嵌入式系統(tǒng)原理與應(yīng)用實(shí)踐 (第二版)[M].北京:北京航空航天大學(xué)出版社,2011.

      [2]Maxim.DS18B20 datasheet[Z].2008.

      [3]Maxim.Application note 214:using a UART to implement a 1-Wire bus master[Z].2002.

      [4]ATMEL.AVR318:Dallas 1-Wire master[Z].2004.

      猜你喜歡
      實(shí)時(shí)性時(shí)序串口
      時(shí)序坐標(biāo)
      基于Sentinel-2時(shí)序NDVI的麥冬識(shí)別研究
      基于規(guī)則實(shí)時(shí)性的端云動(dòng)態(tài)分配方法研究
      淺談AB PLC串口跟RFID傳感器的通訊應(yīng)用
      基于虛擬局域網(wǎng)的智能變電站通信網(wǎng)絡(luò)實(shí)時(shí)性仿真
      航空電子AFDX與AVB傳輸實(shí)時(shí)性抗干擾對(duì)比
      一種毫米波放大器時(shí)序直流電源的設(shè)計(jì)
      電子制作(2016年15期)2017-01-15 13:39:08
      USB接口的多串口數(shù)據(jù)并行接收方法探索
      基于藍(lán)牙串口適配器的GPS接收機(jī)與AutoCAD的實(shí)時(shí)無(wú)線(xiàn)通信
      基于并行控制的FPGA多串口拓展實(shí)現(xiàn)
      寿光市| 呈贡县| 丹寨县| 天柱县| 全南县| 蒲城县| 黄冈市| 尉氏县| 英吉沙县| 津南区| 赣州市| 汶川县| 礼泉县| 石渠县| 东乌珠穆沁旗| 宜春市| 清原| 麻阳| 金门县| 石门县| 曲阜市| 巴林右旗| 克拉玛依市| 石渠县| 广东省| 黑山县| 漾濞| 尚义县| 松潘县| 江都市| 临城县| 南岸区| 工布江达县| 大丰市| 茂名市| 八宿县| 科技| 通城县| 漾濞| 锡林郭勒盟| 屯门区|