本應(yīng)用筆記解釋了如何使用微處理器的UART實(shí)現(xiàn)1-Wire總線主機(jī)。它包括對(duì)所需電氣接口、UART配置以及UART和1-Wire信號(hào)之間的時(shí)序關(guān)系的說(shuō)明。此外,它還參考了UART 1-Wire Master軟件實(shí)用程序,該實(shí)用程序可生成標(biāo)準(zhǔn)和過(guò)驅(qū)速度時(shí)序,以輔助開(kāi)發(fā)。UART字節(jié)時(shí)序設(shè)置具有靈活性,可以直接實(shí)現(xiàn)1-Wire時(shí)隙以及復(fù)位和存在檢測(cè)脈沖。
介紹
Maxim創(chuàng)新的1-Wire協(xié)議允許通過(guò)單根導(dǎo)線和接地基準(zhǔn)進(jìn)行供電和數(shù)字通信。1-Wire器件為識(shí)別、存儲(chǔ)器、計(jì)時(shí)、測(cè)量和控制提供經(jīng)濟(jì)的解決方案,并具有能夠長(zhǎng)距離(>100米)工作的額外優(yōu)勢(shì)。實(shí)現(xiàn)1-Wire主機(jī)側(cè)驅(qū)動(dòng)器的方法多種多樣,例如使用Maxim的橋接器件、對(duì)微控制器的GPIO進(jìn)行位敲擊,或使用通用異步接收器發(fā)送器(UART)等外設(shè)來(lái)生成所需的時(shí)序。本應(yīng)用筆記討論了UART的實(shí)現(xiàn)方案,并介紹了如何使用UART 1-Wire主機(jī)軟件實(shí)用程序在開(kāi)發(fā)過(guò)程中提供幫助。該應(yīng)用程序自動(dòng)配置外設(shè)數(shù)據(jù),以實(shí)現(xiàn)每個(gè)時(shí)序參數(shù)所需的各種波特率。?
16kbps的典型數(shù)據(jù)速率對(duì)于預(yù)期任務(wù)來(lái)說(shuō)綽綽有余,因?yàn)榇蠖鄶?shù)1-Wire器件提供的數(shù)據(jù)量相對(duì)較小。通常可以方便地使用8位或16位微控制器的通用輸入/輸出(GPIO)引腳以“位敲擊”方式充當(dāng)總線主站。
但是,許多 32 位系統(tǒng)中的處理器時(shí)鐘頻率通常超過(guò) 100MHz。使用GPIO引腳作為1-Wire總線主控器,每個(gè)1-Wire位會(huì)消耗大量時(shí)鐘周期。其邊緣可能無(wú)法精確控制以滿足必要的時(shí)序要求。32位便攜式系統(tǒng)在產(chǎn)生1-Wire讀寫(xiě)時(shí)隙時(shí)消耗了寶貴的電池電量。如果UART外設(shè)可用,則可以減輕主處理器的位定時(shí)和字節(jié)成幀操作的負(fù)擔(dān)。
本應(yīng)用筆記介紹了所需的電氣接口、UART配置以及UART與1-Wire信號(hào)之間的時(shí)序關(guān)系。對(duì)1-Wire的一般了解 假設(shè)通信。下面的討論中使用了典型的時(shí)序和邏輯電平。請(qǐng)參考1-Wire器件數(shù)據(jù)手冊(cè),了解具體的時(shí)序和電壓規(guī)格及容差。
概念概述
具有不同波特率的UART可提供實(shí)現(xiàn)1-Wire主機(jī)所需的輸出時(shí)序,前提是1-Wire主機(jī)在波特率、每字符數(shù)據(jù)位數(shù)、奇偶校驗(yàn)和停止位數(shù)方面配置正確。改變UART發(fā)送字節(jié)值會(huì)產(chǎn)生1-Wire復(fù)位脈沖,以及用于構(gòu)建低級(jí)命令的讀寫(xiě)插槽。微處理器只需將單字節(jié)字符碼放入U(xiǎn)ART發(fā)送寄存器,即可啟動(dòng)1-Wire時(shí)序碼型。相反,微處理器讀取的單字節(jié)字符代碼對(duì)應(yīng)于從0-Wire從機(jī)讀取的1位或1位。所有1-Wire位傳輸都需要總線主機(jī)(即UART外設(shè))通過(guò)將1-Wire總線驅(qū)動(dòng)為低電平來(lái)啟動(dòng)定時(shí)周期。UART必須同時(shí)發(fā)送和接收一個(gè)字節(jié),以產(chǎn)生1-Wire時(shí)序。因此,外設(shè)必須支持全雙工操作。接收到的字節(jié)提供有用的信息,可以識(shí)別成功傳輸?shù)臄?shù)據(jù)字節(jié)、短路連接、數(shù)據(jù)損壞或是否連接了1-Wire從器件。每個(gè)發(fā)送字節(jié)對(duì)應(yīng)一個(gè)<>-Wire讀取位、寫(xiě)位或復(fù)位。
UART至1線電氣接口
1-Wire器件工作在漏極開(kāi)路環(huán)境,采用1.8V至5.5V總線電壓。精確的邏輯電平和最小上拉電壓取決于器件。因此,請(qǐng)參閱器件數(shù)據(jù)手冊(cè),了解兼容的工作電壓。圖1顯示了當(dāng)TX引腳上的主機(jī)輸出電壓在從機(jī)的工作電壓范圍內(nèi)時(shí)可能的配置。上拉電壓(V狗) 從 TX 引腳向上拉電阻 (R ) 的頂部提供電壓狗),而 RX 引腳的高阻抗輸入保持漏極開(kāi)路配置。這允許從器件在讀取位期間將1-Wire IO線拉低,或者在TX信號(hào)為高電平時(shí)將復(fù)位存在脈沖拉低。選擇 R狗值對(duì)于正常工作很重要,因?yàn)閳D1中的配置沒(méi)有強(qiáng)上拉功能。必須考慮輸送到從設(shè)備用于需要額外電流的命令(即復(fù)制暫存器)的電流量。電阻必須足夠小,以提供所需的電流,同時(shí)防止壓降超過(guò)從站的最小工作電壓或V伊利諾伊州主機(jī)和從屬設(shè)備的級(jí)別。對(duì)于這種配置,480Ω電阻通常是1-Wire數(shù)據(jù)線上拉的良好起點(diǎn)。對(duì)于主機(jī)TX引腳上的電壓不直接兼容的系統(tǒng),請(qǐng)使用獨(dú)立的上拉電壓連接(圖2和圖3)。
圖1.1線總線接口電路。
通常需要一個(gè)外部漏極開(kāi)路緩沖電路,因?yàn)榇蠖鄶?shù)UART發(fā)送數(shù)據(jù)引腳不是漏極開(kāi)路。該電路可以由分立元件(圖2)或集成解決方案(如仙童NC7WZ07(圖3))構(gòu)成。4.7kΩ上拉電阻是兩個(gè)電路中ROM電平命令的良好起點(diǎn),但必須調(diào)整大小以允許高電流操作,例如將數(shù)據(jù)復(fù)制到EEPROM。驗(yàn)證邏輯電平是否不違反主機(jī)和從設(shè)備的 EC 表參數(shù)非常重要。
圖2.分立式漏極開(kāi)路緩沖器。
圖3.集成漏極開(kāi)路緩沖器。
1線/UART位定時(shí)
圖5至圖9中的時(shí)序圖描述了1-Wire時(shí)隙與相應(yīng)的UART字節(jié)幀之間的關(guān)系。UART用作總線主站,因此在TX輸出引腳的高低轉(zhuǎn)換上開(kāi)始所有通信。當(dāng)電氣接口將緩沖的TX信號(hào)連接到RX輸入引腳時(shí),UART為傳輸?shù)拿總€(gè)字節(jié)接收一個(gè)字節(jié)。
每個(gè)關(guān)系圖都包括 UART 配置、傳輸字節(jié)值和預(yù)期接收字節(jié)值。列出的UART配置產(chǎn)生的波形符合常規(guī)模式1-Wire時(shí)序。請(qǐng)注意,UART為復(fù)位和存在脈沖檢測(cè)配置了與讀取和寫(xiě)入時(shí)隙不同的波特率。也可以使用其他配置,盡管評(píng)估標(biāo)準(zhǔn)可能與時(shí)序圖中的標(biāo)準(zhǔn)不同。發(fā)送字節(jié)值對(duì)應(yīng)于1-Wire總線主站角色,接收字節(jié)值或范圍代表總線上的預(yù)期活動(dòng)。必須對(duì)接收值進(jìn)行評(píng)估,以確定1-Wire從器件在執(zhí)行讀取時(shí)返回的位值。讀 0 和讀 1 評(píng)估標(biāo)準(zhǔn)包含在圖中。
圖4.時(shí)序圖例。
圖5.復(fù)位脈沖和存在檢測(cè)。
多個(gè)波特率可用于產(chǎn)生1-Wire復(fù)位并檢測(cè)存在脈沖。圖5顯示了波特率為9600的UART配置,以創(chuàng)建1線復(fù)位。每個(gè)UART位的時(shí)隙是用波特率(1/波特率)的倒數(shù)計(jì)算的。UART的起始位始終為低電平,可與0個(gè)數(shù)據(jù)位結(jié)合使用,以開(kāi)發(fā)適當(dāng)?shù)臅r(shí)序。UART 數(shù)據(jù)首先作為最低有效位傳輸。傳輸一個(gè)字節(jié) F0h 使數(shù)據(jù)位 3 到 0 成為邏輯 4,數(shù)據(jù)位 7 到 1 成為邏輯 <>,從而產(chǎn)生復(fù)位低時(shí)間 (TRSTL) 的 520.83us。接收值取決于是否存在一個(gè)或多個(gè)1-Wire從器件、每個(gè)從器件當(dāng)前脈沖的內(nèi)部時(shí)序、上升時(shí)間以及UART在每個(gè)位窗口內(nèi)的采樣時(shí)間。如果沒(méi)有設(shè)備,則接收值等于傳輸值。當(dāng)設(shè)備存在時(shí),接收值會(huì)有所不同。以最小內(nèi)部時(shí)序運(yùn)行的單個(gè)從設(shè)備可能響應(yīng)E0h,而具有最大內(nèi)部時(shí)序的從設(shè)備可能返回90h的值。使用示波器或邏輯分析儀確認(rèn)時(shí)序以確保達(dá)到所需的時(shí)序非常重要。確認(rèn)所有時(shí)序非常重要,因?yàn)閁ART外設(shè)對(duì)于每個(gè)波特率具有不同的錯(cuò)誤率。
可能需要在傳輸?shù)腢ART字節(jié)之間增加延遲,以允許所需的恢復(fù)時(shí)間(T娛樂(lè)).如果需要這些延遲,請(qǐng)不要在主機(jī)的 UART 緩沖區(qū)中堆疊要連續(xù)傳輸?shù)拿睢ART 1-Wire主控實(shí)用程序通過(guò)計(jì)算所選波特率下每個(gè)時(shí)序參數(shù)的TX、RX和延遲值來(lái)簡(jiǎn)化任務(wù)。本文檔末尾提供了指向此軟件實(shí)用程序的鏈接。該實(shí)用程序?yàn)槎喾N波特率的標(biāo)準(zhǔn)和過(guò)載定時(shí)提供UART配置。使用實(shí)用程序中的幫助菜單獲取詳細(xì)說(shuō)明。
圖6.讀取 0 時(shí)隙。
圖7.讀取 1 時(shí)隙。
如前所述,主機(jī)始終在1-Wire系統(tǒng)中啟動(dòng)通信。主機(jī)將1-Wire IO拉低,持續(xù)時(shí)間為低讀時(shí)間(TRL) 從從屬服務(wù)器讀取一點(diǎn)。從機(jī)將IO保持在低電平超過(guò)主讀取采樣時(shí)間(TLS3) 如果它正在傳輸 0 位并且在發(fā)送 1 位時(shí)不執(zhí)行任何操作,則允許 IO 在主機(jī)釋放 T 末尾的行后浮動(dòng)RL.圖 6 和圖 7 中生成的讀取時(shí)隙使用 115,200 的波特率。從1-Wire讀取0接收的RX字節(jié)范圍為0xFE至0x00,具體取決于從器件的內(nèi)部時(shí)基和IO上升時(shí)間。從1-Wire讀取1接收的RX字節(jié)始終0xFF(波特為115,200波特),因?yàn)?-Wire從站允許數(shù)據(jù)線在總線主站釋放后立即返回到1狀態(tài)。傳輸和接收字節(jié)可以隨著波特率的增加而變化。UART 1-Wire主控工具計(jì)算所選波特率的相應(yīng)TX、RX和延遲值。
圖8.寫(xiě)入 0 時(shí)隙。
圖9.寫(xiě)入 1 時(shí)隙。
圖8和圖9顯示了如何以1,0的波特率向從設(shè)備傳輸115或200。但是,有許多波特率可以產(chǎn)生適當(dāng)?shù)臅r(shí)序。同樣,UART 1-Wire主控實(shí)用程序可以計(jì)算出適當(dāng)?shù)闹?。查看?shù)據(jù)時(shí),似乎沒(méi)有必要評(píng)估1-Wire寫(xiě)入的RX字節(jié),因?yàn)镮O線僅由主機(jī)驅(qū)動(dòng),從器件不響應(yīng)任何數(shù)據(jù)。但是,評(píng)估 RX 值并確保它與 TX 值匹配可確認(rèn)沒(méi)有數(shù)據(jù)損壞。一些1-Wire系統(tǒng)具有從器件,可以在正常工作期間添加到系統(tǒng)中。如果在寫(xiě)入過(guò)程中添加連接的設(shè)備,則會(huì)在總線上產(chǎn)生一些不需要的轉(zhuǎn)換。檢查 RX 值會(huì)發(fā)現(xiàn)此問(wèn)題。
1線位到位時(shí)序
1-Wire總線的一個(gè)關(guān)鍵優(yōu)勢(shì)是位間時(shí)序的靈活性。位之間的延遲可以短至 T娛樂(lè)最小值,或總線主站認(rèn)為必要的長(zhǎng)度。1-Wire位或字節(jié)之間沒(méi)有最大延遲周期。因此,處理器可以在空閑時(shí)將位時(shí)隙成幀為字節(jié)值來(lái)為 UART 提供服務(wù)。與1-Wire器件的通信可被指定為低優(yōu)先級(jí)任務(wù)。處理器無(wú)需浪費(fèi)處理周期或功耗,也無(wú)需忽略高優(yōu)先級(jí)、時(shí)間關(guān)鍵型任務(wù)。
圖 10.位到位時(shí)序靈活性。
UART 1線主線實(shí)用程序
UART 1-Wire主控工具可快速確定在各種波特率下生成1-Wire時(shí)序所需的TX、RX和延遲。該實(shí)用程序允許與Prolific或FTDI制造的USB到UART橋接設(shè)備進(jìn)行通信,從而允許與1-Wire從器件進(jìn)行實(shí)時(shí)通信。如果硬件不可用,可以選擇仿真選項(xiàng)。圖 11 中的配置選項(xiàng)卡提供了用于輸入 EC 表時(shí)序參數(shù)的字段。這些值用于計(jì)算 UART 數(shù)據(jù)。1-Wire選項(xiàng)卡確認(rèn)使用真實(shí)從器件或硬件未連接時(shí)的模擬輸出是否正常工作。數(shù)據(jù)記錄顯示每個(gè)已執(zhí)行命令的相關(guān)信息。從幫助菜單中選擇用戶指南以使用此工具。
圖 11.“配置”選項(xiàng)卡。
圖 12.1-線片。
結(jié)論
UART由于其可編程性,仍然是現(xiàn)代處理器中有價(jià)值的外設(shè)。UART字節(jié)時(shí)序設(shè)置的靈活性允許直接實(shí)現(xiàn)1-Wire讀/寫(xiě)時(shí)隙以及復(fù)位和存在脈沖的檢測(cè)。
UART 1-Wire Master軟件實(shí)用程序可以生成所有時(shí)序參數(shù)的常規(guī)和過(guò)載速度的時(shí)序,從而實(shí)現(xiàn)快速開(kāi)發(fā)。該工具支持各種波特率,確保與大多數(shù)(如果不是全部)UART外設(shè)兼容。
審核編輯:郭婷
-
微處理器
+關(guān)注
關(guān)注
11文章
2258瀏覽量
82403 -
總線
+關(guān)注
關(guān)注
10文章
2878瀏覽量
88051 -
uart
+關(guān)注
關(guān)注
22文章
1235瀏覽量
101354 -
1-Wire
+關(guān)注
關(guān)注
0文章
49瀏覽量
21306
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論