衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

為什么UART驅(qū)動1-Wire設(shè)備總是出現(xiàn)問題?

工程師 ? 來源:記得誠 ? 作者:記得誠 ? 2020-10-23 17:13 ? 次閱讀

麥?zhǔn)迨歉?a target="_blank">嵌入式的,最近項目delay,他和我說用UART驅(qū)動1-Wire設(shè)備總是出現(xiàn)問題,故寫此文來拯救他。

作者之前寫過UART(點我),也寫過1-Wire(點我),本文介紹如何用主機(jī)的UART驅(qū)動1-Wire從機(jī)設(shè)備,建議先看看以上兩篇文章,再閱讀本文,效果更佳。

硬件電路

1-Wire結(jié)構(gòu)簡單,一根線就可以通信,常見的18B20用的就是1-Wire結(jié)構(gòu)。單片機(jī)的串口UART(多是TTL電平),如何用單片機(jī)控制通用的1-Wire設(shè)備呢?如果MCU和從設(shè)備的電平不一致如何解決?軟件協(xié)議又是如何控制的呢?本文主要解決這兩個問題。

主機(jī)或從機(jī)將數(shù)據(jù)線拉低到GND表示數(shù)據(jù)0,將數(shù)據(jù)線釋放為高表示數(shù)據(jù)1,高電平由上拉電阻(一般是4.7K)提供。

當(dāng)MCU發(fā)送邏輯1時,經(jīng)過反相器,總線呈現(xiàn)邏輯0,邏輯0經(jīng)過1-WIRE器件的反相器,即會收到邏輯1;

當(dāng)MCU發(fā)送邏輯0時,經(jīng)過反向器,總線呈現(xiàn)邏輯1,邏輯1經(jīng)過1-WIRE 器件的反相器,即會收到邏輯0;

當(dāng)1WIRE 器件發(fā)送邏輯1時,Tx處有NMOS會導(dǎo)通,總線呈現(xiàn)邏輯0,經(jīng)過MCU Rx 處的反相器,MCU會收到邏輯1;

當(dāng)1WIRE器件發(fā)送邏輯0時,NMOS截止,總線呈現(xiàn)邏輯1,MCU會收到邏輯0;

主機(jī)端(BUS MASTER)多為MCU,因為MCU的TXD不是漏極開路,因此通常需要一個外部漏極開路緩沖電路,該電路可以由分立元件構(gòu)成。

用兩個NMOS管2N7002,原理很簡單:

TXD輸出高電平時,左邊的2N7002導(dǎo)通,右邊的截止,DQ被4.7K電阻上拉至Vpullup高電平;

TXD輸出低電平時,左邊的2N7002截止,右邊的導(dǎo)通,DQ被拉低至低電平0;

用分立器件搭建的緩沖電路

也可以用集成芯片NC7WZ07,如下圖所示,TXD輸出高,DQ=Vpullup,TXD輸出低,DQ=0;

用集成芯片搭建的緩沖電路

解決了硬件電路,我們再來看軟件協(xié)議部分,1-Wire的協(xié)議可以分為復(fù)位/應(yīng)答、寫0/寫1時隙、讀0/讀1時隙。

軟件協(xié)議

復(fù)位/應(yīng)答

如下圖,上面部分是1-Wire的復(fù)位/應(yīng)答時序,下面是UART的時序。

復(fù)位/應(yīng)答信號時序

原理:

主機(jī)以9600的波特率發(fā)送數(shù)據(jù)0XF0,因為LSB在前,0XF0=00001111,加上最前面的Start Bit和最后面的Stop Bit,完整的數(shù)據(jù)為:0000011111,代表主機(jī)先發(fā)了5位的0,然后發(fā)了5位的1;9600波特率,一位傳輸時間是1/9600=104.2us,所以低電平持續(xù)時間為104.2*5=521us,滿足480~960us復(fù)位總線的時序要求。

那主機(jī)收到什么數(shù)據(jù)代表從機(jī)應(yīng)答呢?

首先主機(jī)如果發(fā)送F0后收到還是F0,說明從機(jī)沒有應(yīng)答,從機(jī)應(yīng)答總線數(shù)據(jù)會改變,可以簡單的判斷收到的數(shù)據(jù)為非F0即代表從機(jī)應(yīng)答。

根據(jù)1-Wire的時序波形,也可以進(jìn)行推算,從上圖看,Data0~Data3均為0,因為1-Wire時序是有一定時間范圍,并不是固定的脈寬,如TPDH為15~60us,TPDL為60~240us,所以Data4~Data7是有一定的組合,返回0X10(00001000) to 0X90(00001001)都代表從機(jī)應(yīng)答。

寫0/寫1時隙

主機(jī)寫0就是0X00,也可以加入回讀,回讀值即為寫的值。

寫0時隙

寫1就是0XFF,回讀值即為寫的值。

寫1時隙圖

讀0/讀1時隙

關(guān)于讀時隙,可以先看主機(jī)讀1時,主機(jī)先拉低總線,一般時間1us左右,UART的Start Bit會占1/115200=8.7us的脈寬(大于1us),所以從Data0開始,后面的數(shù)據(jù)都為1,即讀到的數(shù)據(jù)為11111111(0XFF)代表讀到的是1。

讀1時隙圖

那讀0也就很簡單,讀到的數(shù)據(jù)不為0XFF即為0。

讀0時隙圖

小結(jié)一下

實際代碼里面的判斷,可以簡單處理,復(fù)位/應(yīng)答:發(fā)送F0,返回不為F0,即代表從機(jī)應(yīng)答;讀0/讀1時隙:主機(jī)讀到0XFF即為1,讀到非0XFF即為0;簡單又可靠,麥?zhǔn)暹€不會。

今天的文章到這里就結(jié)束了,希望對你有幫助,我們下一期見。

責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 芯片
    +關(guān)注

    關(guān)注

    456

    文章

    51170

    瀏覽量

    427250
  • 電路
    +關(guān)注

    關(guān)注

    172

    文章

    5966

    瀏覽量

    172950
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6043

    文章

    44622

    瀏覽量

    638542
收藏 人收藏

    評論

    相關(guān)推薦

    盛顯科技:投影融合處理器兼容性出現(xiàn)問題,該怎么辦?

    ,解決這些兼容性問題顯得尤為重要。那么您知道投影融合處理器兼容性出現(xiàn)問題,該怎么辦嗎?下面盛顯科技小編為您介紹: 當(dāng)投影融合處理器出現(xiàn)兼容性問題時,可以采取以下措施來解決: 一、檢查與確認(rèn) (1)確認(rèn)
    的頭像 發(fā)表于 10-16 12:11 ?278次閱讀
    盛顯科技:投影融合處理器兼容性<b class='flag-5'>出現(xiàn)問題</b>,該怎么辦?

    PGA308讀寫過程中的28ms延時復(fù)位1-wire接口是硬件實現(xiàn)的還是需要編程實現(xiàn)?

    請問,PGA308讀寫過程中的28ms延時復(fù)位1-wire接口是硬件實現(xiàn)的還是需要編程實現(xiàn)?
    發(fā)表于 09-24 07:17

    聚徽-液晶拼接屏線路出現(xiàn)問題怎么處理

    液晶拼接屏線路出現(xiàn)問題時,仔細(xì)觀察液晶拼接屏的故障表現(xiàn),如屏幕是否無法亮起、顯示畫面異常、顏色失真、花屏等。確認(rèn)電源線是否連接正常,
    的頭像 發(fā)表于 09-18 10:54 ?271次閱讀

    SMT貼片加工過程中容易出現(xiàn)問題的封裝類型原因

    )上。盡管SMT技術(shù)極大地提高了生產(chǎn)效率和電子設(shè)備的可靠性,但在貼片加工過程中,某些組件的封裝類型可能會比其他類型更容易出現(xiàn)問題。 容易出現(xiàn)問題的封裝類型及其原因: 1. 微型封裝(如
    的頭像 發(fā)表于 08-30 09:28 ?377次閱讀
    SMT貼片加工過程中容易<b class='flag-5'>出現(xiàn)問題</b>的封裝類型原因

    聚徽-平板工控機(jī)出現(xiàn)問題如何處理

    工控電腦是工業(yè)領(lǐng)域中廣泛應(yīng)用的一種顯示設(shè)備,常見于工業(yè)平板電腦和工業(yè)顯示器。與商業(yè)電腦相比,工控電腦具備更為穩(wěn)定的性能,能夠適應(yīng)各種惡劣的工業(yè)環(huán)境。然而,觸摸屏作為工控電腦的重要組件,也可能會出現(xiàn)故障。那么,平板工控機(jī)出現(xiàn)問題
    的頭像 發(fā)表于 08-20 09:20 ?293次閱讀

    配備 SMAART Wire?/UART 接口的 TMP144 低功耗數(shù)字溫度傳感器數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《配備 SMAART Wire?/UART 接口的 TMP144 低功耗數(shù)字溫度傳感器數(shù)據(jù)表.pdf》資料免費下載
    發(fā)表于 08-12 10:58 ?0次下載
    配備 SMAART <b class='flag-5'>Wire</b>?/<b class='flag-5'>UART</b> 接口的 TMP144 低功耗數(shù)字溫度傳感器數(shù)據(jù)表

    TMP1820 1-Wire?、1.7V 至 5.5V 總線供電電源、±0.3°C 精確數(shù)字溫度傳感器數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《TMP1820 1-Wire?、1.7V 至 5.5V 總線供電電源、±0.3°C 精確數(shù)字溫度傳感器數(shù)據(jù)表.pdf》資料免費下載
    發(fā)表于 08-12 10:27 ?0次下載
    TMP1820 <b class='flag-5'>1-Wire</b>?、1.7V 至 5.5V 總線供電電源、±0.3°C 精確數(shù)字溫度傳感器數(shù)據(jù)表

    TMP1827 具有 SHA-256-HMAC 認(rèn)證引擎、2Kb EEPROM 的 1-Wire?、±0.2°C 精度溫度傳感器數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《TMP1827 具有 SHA-256-HMAC 認(rèn)證引擎、2Kb EEPROM 的 1-Wire?、±0.2°C 精度溫度傳感器數(shù)據(jù)表.pdf》資料免費下載
    發(fā)表于 08-12 10:20 ?0次下載
    TMP1827 具有 SHA-256-HMAC 認(rèn)證引擎、2Kb EEPROM 的 <b class='flag-5'>1-Wire</b>?、±0.2°C 精度溫度傳感器數(shù)據(jù)表

    TMP1826 具有 2Kb EEPROM 的 1-Wire?、±0.2°C 精度溫度傳感器數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《TMP1826 具有 2Kb EEPROM 的 1-Wire?、±0.2°C 精度溫度傳感器數(shù)據(jù)表.pdf》資料免費下載
    發(fā)表于 08-12 10:07 ?0次下載
    TMP1826 具有 2Kb EEPROM 的 <b class='flag-5'>1-Wire</b>?、±0.2°C 精度溫度傳感器數(shù)據(jù)表

    256位1-Wire EEPROM存儲器GXE00產(chǎn)品概述

    GXE00是一款 256 位 1-Wire EEPROM的存儲芯片, 用于識別和保存產(chǎn)品的相關(guān)信息,識別碼和這些相關(guān)信息可以通過最少的接口(例如,微控制器的一個端口)進(jìn)行訪問。
    的頭像 發(fā)表于 07-30 14:36 ?667次閱讀

    ESP8266如何保護(hù)時間關(guān)鍵部分免受RTOS中斷的影響?

    我使用ESP8266_RTOS_SDK和1-Wire總線連接DS18B20溫度傳感器。當(dāng) wifi 處于STATION_MODE狀態(tài)時,從傳感器讀取溫度值時偶爾會出現(xiàn) CRC 錯誤。當(dāng) wifi
    發(fā)表于 07-09 06:16

    PLC出現(xiàn)問題時如何快速判斷是CPU異常

    CPU異常是較為常見且影響較大的問題之一。本文將從多個方面探討如何快速判斷PLC出現(xiàn)問題時是否為CPU異常,并提供相應(yīng)的解決方法和建議。
    的頭像 發(fā)表于 06-12 11:13 ?987次閱讀

    什么是1-Wire串行通信接口?什么是1-Wire的安全產(chǎn)品iButton?

    為保證設(shè)備安全,保護(hù)知識產(chǎn)權(quán)和通信的可靠性,各種設(shè)備對集成安全和認(rèn)證功能的需求越來越大。許多設(shè)計人員想集成強(qiáng)大的安全功能,但又想避免復(fù)雜的軟件配置,或者擔(dān)心在軟件中組裝這些功能時會出現(xiàn)漏洞。
    的頭像 發(fā)表于 04-22 16:44 ?1664次閱讀
    什么是<b class='flag-5'>1-Wire</b>串行通信接口?什么是<b class='flag-5'>1-Wire</b>的安全產(chǎn)品iButton?

    STM32F103串口通訊的時候總是出現(xiàn)USART_SR_FE和UART_FLAG_LBD的原因?

    大俠們,請教一個問題: STM32F103串口通訊的時候總是出現(xiàn)USART_SR_FE和UART_FLAG_LBD,可能是什么原因呢?? 謝謝~~~
    發(fā)表于 04-19 07:09

    請問1-Wire網(wǎng)線如何連接USB適配器?

    ADI/Maxim的 DS1402 系列1-Wire網(wǎng)絡(luò)電纜提供與任何USB、串行或并行端口1-Wire適配器的連接。經(jīng)常有客戶詢問DS1402如何連接USB適配器。許多客戶對規(guī)格書上的連接性矩陣表感到困惑。
    的頭像 發(fā)表于 03-28 11:39 ?826次閱讀
    請問<b class='flag-5'>1-Wire</b>網(wǎng)線如何連接USB適配器?
    百家乐官网破解打法| 兴安县| 现场百家乐的玩法技巧和规则| 百家乐博赌场| 名仕国际棋牌下载| 乃东县| 南京百家乐官网在哪| 财神百家乐官网的玩法技巧和规则| 百家乐官网赌场大全| 做生意门面朝向风水| 百家乐只打闲打法| 大发888城| 百家乐官网赢得秘诀| 在线百家乐官网策略| 百家乐五湖四海娱乐| 大发888娱乐游戏下载| 利记现金| 现金百家乐官网破解| 真人百家乐博弈| 香港六合彩大全| 百家乐官网筹码方形| 91百家乐的玩法技巧和规则| 和记国际娱乐| 网上百家乐官网娱乐网| 澳门百家乐怎赌才能赚钱| 大发888扑克场下载| 百家乐官网投注外围哪里好| 百家乐对保| 搏天堂| 重庆百家乐官网的玩法技巧和规则 | 百家乐官网评测| 金沙百家乐的玩法技巧和规则 | 娱乐网百家乐官网补丁| 百家乐赌场破解方法| 百家乐官网巴厘岛平台| 百家乐只打一种牌型| 大发888无数| 百家乐官网l路单| 亚洲百家乐博彩的玩法技巧和规则 | 网上百家乐官网正规代理| 百家乐看图赢|