本應用筆記解釋了如何使用微處理器的UART實現1-Wire總線主機。它包括對所需電氣接口、UART配置以及UART和1-Wire信號之間的時序關系的說明。此外,它還參考了UART 1-Wire Master軟件實用程序,該實用程序可生成標準和過驅速度時序,以輔助開發。UART字節時序設置具有靈活性,可以直接實現1-Wire時隙以及復位和存在檢測脈沖。
介紹
Maxim創新的1-Wire協議允許通過單根導線和接地基準進行供電和數字通信。1-Wire器件為識別、存儲器、計時、測量和控制提供經濟的解決方案,并具有能夠長距離(>100米)工作的額外優勢。實現1-Wire主機側驅動器的方法多種多樣,例如使用Maxim的橋接器件、對微控制器的GPIO進行位敲擊,或使用通用異步接收器發送器(UART)等外設來生成所需的時序。本應用筆記討論了UART的實現方案,并介紹了如何使用UART 1-Wire主機軟件實用程序在開發過程中提供幫助。該應用程序自動配置外設數據,以實現每個時序參數所需的各種波特率。?
16kbps的典型數據速率對于預期任務來說綽綽有余,因為大多數1-Wire器件提供的數據量相對較小。通常可以方便地使用8位或16位微控制器的通用輸入/輸出(GPIO)引腳以“位敲擊”方式充當總線主站。
但是,許多 32 位系統中的處理器時鐘頻率通常超過 100MHz。使用GPIO引腳作為1-Wire總線主控器,每個1-Wire位會消耗大量時鐘周期。其邊緣可能無法精確控制以滿足必要的時序要求。32位便攜式系統在產生1-Wire讀寫時隙時消耗了寶貴的電池電量。如果UART外設可用,則可以減輕主處理器的位定時和字節成幀操作的負擔。
本應用筆記介紹了所需的電氣接口、UART配置以及UART與1-Wire信號之間的時序關系。對1-Wire的一般了解 假設通信。下面的討論中使用了典型的時序和邏輯電平。請參考1-Wire器件數據手冊,了解具體的時序和電壓規格及容差。
概念概述
具有不同波特率的UART可提供實現1-Wire主機所需的輸出時序,前提是1-Wire主機在波特率、每字符數據位數、奇偶校驗和停止位數方面配置正確。改變UART發送字節值會產生1-Wire復位脈沖,以及用于構建低級命令的讀寫插槽。微處理器只需將單字節字符碼放入UART發送寄存器,即可啟動1-Wire時序碼型。相反,微處理器讀取的單字節字符代碼對應于從0-Wire從機讀取的1位或1位。所有1-Wire位傳輸都需要總線主機(即UART外設)通過將1-Wire總線驅動為低電平來啟動定時周期。UART必須同時發送和接收一個字節,以產生1-Wire時序。因此,外設必須支持全雙工操作。接收到的字節提供有用的信息,可以識別成功傳輸的數據字節、短路連接、數據損壞或是否連接了1-Wire從器件。每個發送字節對應一個<>-Wire讀取位、寫位或復位。
UART至1線電氣接口
1-Wire器件工作在漏極開路環境,采用1.8V至5.5V總線電壓。精確的邏輯電平和最小上拉電壓取決于器件。因此,請參閱器件數據手冊,了解兼容的工作電壓。圖1顯示了當TX引腳上的主機輸出電壓在從機的工作電壓范圍內時可能的配置。上拉電壓(V狗) 從 TX 引腳向上拉電阻 (R ) 的頂部提供電壓狗),而 RX 引腳的高阻抗輸入保持漏極開路配置。這允許從器件在讀取位期間將1-Wire IO線拉低,或者在TX信號為高電平時將復位存在脈沖拉低。選擇 R狗值對于正常工作很重要,因為圖1中的配置沒有強上拉功能。必須考慮輸送到從設備用于需要額外電流的命令(即復制暫存器)的電流量。電阻必須足夠小,以提供所需的電流,同時防止壓降超過從站的最小工作電壓或V伊利諾伊州主機和從屬設備的級別。對于這種配置,480Ω電阻通常是1-Wire數據線上拉的良好起點。對于主機TX引腳上的電壓不直接兼容的系統,請使用獨立的上拉電壓連接(圖2和圖3)。
圖1.1線總線接口電路。
通常需要一個外部漏極開路緩沖電路,因為大多數UART發送數據引腳不是漏極開路。該電路可以由分立元件(圖2)或集成解決方案(如仙童NC7WZ07(圖3))構成。4.7kΩ上拉電阻是兩個電路中ROM電平命令的良好起點,但必須調整大小以允許高電流操作,例如將數據復制到EEPROM。驗證邏輯電平是否不違反主機和從設備的 EC 表參數非常重要。
圖2.分立式漏極開路緩沖器。
圖3.集成漏極開路緩沖器。
1線/UART位定時
圖5至圖9中的時序圖描述了1-Wire時隙與相應的UART字節幀之間的關系。UART用作總線主站,因此在TX輸出引腳的高低轉換上開始所有通信。當電氣接口將緩沖的TX信號連接到RX輸入引腳時,UART為傳輸的每個字節接收一個字節。
每個關系圖都包括 UART 配置、傳輸字節值和預期接收字節值。列出的UART配置產生的波形符合常規模式1-Wire時序。請注意,UART為復位和存在脈沖檢測配置了與讀取和寫入時隙不同的波特率。也可以使用其他配置,盡管評估標準可能與時序圖中的標準不同。發送字節值對應于1-Wire總線主站角色,接收字節值或范圍代表總線上的預期活動。必須對接收值進行評估,以確定1-Wire從器件在執行讀取時返回的位值。讀 0 和讀 1 評估標準包含在圖中。
圖4.時序圖例。
圖5.復位脈沖和存在檢測。
多個波特率可用于產生1-Wire復位并檢測存在脈沖。圖5顯示了波特率為9600的UART配置,以創建1線復位。每個UART位的時隙是用波特率(1/波特率)的倒數計算的。UART的起始位始終為低電平,可與0個數據位結合使用,以開發適當的時序。UART 數據首先作為最低有效位傳輸。傳輸一個字節 F0h 使數據位 3 到 0 成為邏輯 4,數據位 7 到 1 成為邏輯 <>,從而產生復位低時間 (TRSTL) 的 520.83us。接收值取決于是否存在一個或多個1-Wire從器件、每個從器件當前脈沖的內部時序、上升時間以及UART在每個位窗口內的采樣時間。如果沒有設備,則接收值等于傳輸值。當設備存在時,接收值會有所不同。以最小內部時序運行的單個從設備可能響應E0h,而具有最大內部時序的從設備可能返回90h的值。使用示波器或邏輯分析儀確認時序以確保達到所需的時序非常重要。確認所有時序非常重要,因為UART外設對于每個波特率具有不同的錯誤率。
可能需要在傳輸的UART字節之間增加延遲,以允許所需的恢復時間(T娛樂).如果需要這些延遲,請不要在主機的 UART 緩沖區中堆疊要連續傳輸的命令。UART 1-Wire主控實用程序通過計算所選波特率下每個時序參數的TX、RX和延遲值來簡化任務。本文檔末尾提供了指向此軟件實用程序的鏈接。該實用程序為多種波特率的標準和過載定時提供UART配置。使用實用程序中的幫助菜單獲取詳細說明。
圖6.讀取 0 時隙。
圖7.讀取 1 時隙。
如前所述,主機始終在1-Wire系統中啟動通信。主機將1-Wire IO拉低,持續時間為低讀時間(TRL) 從從屬服務器讀取一點。從機將IO保持在低電平超過主讀取采樣時間(TLS3) 如果它正在傳輸 0 位并且在發送 1 位時不執行任何操作,則允許 IO 在主機釋放 T 末尾的行后浮動RL.圖 6 和圖 7 中生成的讀取時隙使用 115,200 的波特率。從1-Wire讀取0接收的RX字節范圍為0xFE至0x00,具體取決于從器件的內部時基和IO上升時間。從1-Wire讀取1接收的RX字節始終0xFF(波特為115,200波特),因為1-Wire從站允許數據線在總線主站釋放后立即返回到1狀態。傳輸和接收字節可以隨著波特率的增加而變化。UART 1-Wire主控工具計算所選波特率的相應TX、RX和延遲值。
圖8.寫入 0 時隙。
圖9.寫入 1 時隙。
圖8和圖9顯示了如何以1,0的波特率向從設備傳輸115或200。但是,有許多波特率可以產生適當的時序。同樣,UART 1-Wire主控實用程序可以計算出適當的值。查看數據時,似乎沒有必要評估1-Wire寫入的RX字節,因為IO線僅由主機驅動,從器件不響應任何數據。但是,評估 RX 值并確保它與 TX 值匹配可確認沒有數據損壞。一些1-Wire系統具有從器件,可以在正常工作期間添加到系統中。如果在寫入過程中添加連接的設備,則會在總線上產生一些不需要的轉換。檢查 RX 值會發現此問題。
1線位到位時序
1-Wire總線的一個關鍵優勢是位間時序的靈活性。位之間的延遲可以短至 T娛樂最小值,或總線主站認為必要的長度。1-Wire位或字節之間沒有最大延遲周期。因此,處理器可以在空閑時將位時隙成幀為字節值來為 UART 提供服務。與1-Wire器件的通信可被指定為低優先級任務。處理器無需浪費處理周期或功耗,也無需忽略高優先級、時間關鍵型任務。
圖 10.位到位時序靈活性。
UART 1線主線實用程序
UART 1-Wire主控工具可快速確定在各種波特率下生成1-Wire時序所需的TX、RX和延遲。該實用程序允許與Prolific或FTDI制造的USB到UART橋接設備進行通信,從而允許與1-Wire從器件進行實時通信。如果硬件不可用,可以選擇仿真選項。圖 11 中的配置選項卡提供了用于輸入 EC 表時序參數的字段。這些值用于計算 UART 數據。1-Wire選項卡確認使用真實從器件或硬件未連接時的模擬輸出是否正常工作。數據記錄顯示每個已執行命令的相關信息。從幫助菜單中選擇用戶指南以使用此工具。
圖 11.“配置”選項卡。
圖 12.1-線片。
結論
UART由于其可編程性,仍然是現代處理器中有價值的外設。UART字節時序設置的靈活性允許直接實現1-Wire讀/寫時隙以及復位和存在脈沖的檢測。
UART 1-Wire Master軟件實用程序可以生成所有時序參數的常規和過載速度的時序,從而實現快速開發。該工具支持各種波特率,確保與大多數(如果不是全部)UART外設兼容。
審核編輯:郭婷
-
微處理器
+關注
關注
11文章
2274瀏覽量
82776 -
總線
+關注
關注
10文章
2903瀏覽量
88397 -
uart
+關注
關注
22文章
1243瀏覽量
101771 -
1-Wire
+關注
關注
0文章
49瀏覽量
21354
發布評論請先 登錄
相關推薦
基于C++模板技術的1-wire總線編程
如何訪問1-Wire API
1-wire單總線的基本原理
1-wire單總線的基本原理
用軟件實現1-Wire通信
![用軟件<b class='flag-5'>實現</b><b class='flag-5'>1-Wire</b>通信](https://file1.elecfans.com//web2/M00/A4/DE/wKgZomUMNgSAEKn_AAAvMtVvKX8596.gif)
1-Wire器件與8051系列單片機的軟件接口
![<b class='flag-5'>1-Wire</b>器件與8051系列單片機的軟件接口](https://file1.elecfans.com//web2/M00/A4/EA/wKgZomUMNjGABspDAABYptDL7jI688.jpg)
DS1820單總線(1-wire)數字溫度傳感器
![DS1820單<b class='flag-5'>總線</b>(<b class='flag-5'>1-wire</b>)數字溫度傳感器](https://file1.elecfans.com//web2/M00/A5/CC/wKgZomUMOiqAdkxSAABqbAcQ5yM531.jpg)
美信推出DS2482-100單通道1-Wire主控制器
![美信推出DS2482-100單通道<b class='flag-5'>1-Wire</b><b class='flag-5'>主控</b>制器](https://file1.elecfans.com//web2/M00/A6/1B/wKgZomUMO8CAUlZnAAAQt9OplVY259.jpg)
1-Wire總線主機
為什么UART驅動1-Wire設備總是出現問題?
![為什么<b class='flag-5'>UART</b>驅動<b class='flag-5'>1-Wire</b>設備總是出現問題?](https://file.elecfans.com/web1/M00/CB/96/o4YBAF-SnV2AJ85gAABr0VVrsAU970.png)
實現隔離式1-Wire總線
![<b class='flag-5'>實現</b>隔離式<b class='flag-5'>1-Wire</b><b class='flag-5'>總線</b>](https://file.elecfans.com//web2/M00/8B/76/pYYBAGPGCnaAJVqdAAAv46C3yHA825.gif)
為嵌入式應用選擇合適的1-Wire主機
![為嵌入式應用選擇合適的<b class='flag-5'>1-Wire</b>主機](https://file1.elecfans.com//web2/M00/89/8A/wKgaomSHyRyAPwi_AABlWoTs6Qc306.jpg)
評論