国产chinesehdxxxx老太婆,办公室玩弄爆乳女秘hd,扒开腿狂躁女人爽出白浆 ,丁香婷婷激情俺也去俺来也,ww国产内射精品后入国产

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

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

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

如何配置微芯片PICmicro以實現(xiàn)1-Wire通信協(xié)議

星星科技指導(dǎo)員 ? 來源:ADI ? 作者:ADI ? 2023-03-13 11:34 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Maxim的多款產(chǎn)品包含1-Wire通信接口,可用于各種應(yīng)用。這些應(yīng)用可能包括與Microchip流行的PICmicros(PIC)之一的接口。為了方便1-Wire器件與外設(shè)接口控制器(PIC)微控制器之間的簡單接口,本應(yīng)用筆記介紹了PIC微控制器的一般1-Wire軟件例程,并解釋了時序和相關(guān)細(xì)節(jié)。本應(yīng)用筆記還提供了一個涵蓋所有1-Wire例程的文件。此外,還包括匯編代碼示例,該代碼是專門為PIC16F628從DS2762高精度Li+電池監(jiān)測器讀取數(shù)據(jù)而編寫的。

介紹

Microchip的PICmicro微控制器器件(PIC)已成為低功耗和低成本系統(tǒng)解決方案的熱門設(shè)計選擇。微控制器具有多個通用輸入/輸出(GPIO)引腳,可輕松配置為實現(xiàn)Maxim的1-Wire協(xié)議。1-Wire協(xié)議允許與許多Maxim器件進行交互,包括電池和熱管理、存儲器、iButton器件等。本應(yīng)用筆記介紹了PIC1F16的一般628-Wire例程,并解釋了時序和相關(guān)細(xì)節(jié)。為方便起見,所有材料均假定為4MHz時鐘,該頻率可用作許多PIC的內(nèi)部時鐘。本文檔的附錄A包含一個包含所有1-Wire例程的文件。附錄B給出了一個示例匯編代碼程序,用于PIC16F628從DS2762高精度Li+電池監(jiān)測器讀取數(shù)據(jù)。本應(yīng)用筆記僅限于常規(guī)速度的1-Wire通信。?

常規(guī)宏

要以主機形式傳輸1-Wire協(xié)議,只需要兩種GPIO狀態(tài):高阻抗和邏輯低電平。以下 PIC 程序集代碼段實現(xiàn)這兩種狀態(tài)。PIC16F628有兩個GPIO端口,PORTA和PORTB。任一端口都可以設(shè)置為1-Wire通信,但在本例中,使用PORTB。此外,以下代碼假定匯編代碼中配置了一個常量DQ,以指示PORTB中的哪個位是1-Wire引腳。在整個代碼中,此位號簡稱為 DQ。在外部,該引腳必須通過上拉電阻連接到電源。

    OW_HIZ:MACRO
      ;Force the DQ line into a high impedance state.
             BSF    STATUS,RP0                  ; Select Bank 1 of data memory
             BSF    TRISB, DQ                   ; Make DQ pin High Z
             BCF    STATUS,RP0                  ; Select Bank 0 of data memory
             ENDM

      OW_LO:MACRO
      ;Force the DQ line to a logic low.
             BCF    STATUS,RP0                  ; Select Bank 0 of data memory
             BCF    PORTB, DQ                   ; Clear the DQ bit
             BSF    STATUS,RP0                  ; Select Bank 1 of data memory
             BCF    TRISB, DQ                   ; Make DQ pin an output
             BCF    STATUS,RP0                  ; Select Bank 0 of data memory
             ENDM

這兩個代碼片段都是作為宏編寫的。通過將代碼編寫為宏,可以使用單個宏調(diào)用將其自動插入到程序集源代碼中。這限制了必須重寫代碼的次數(shù)。第一個宏OW_HIZ強制DQ線進入高阻抗?fàn)顟B(tài)。第一步是選擇數(shù)據(jù)存儲器的存儲組1,因為TRISB寄存器位于存儲組1中。接下來,通過在TRISB寄存器中設(shè)置DQ位,將DQ輸出驅(qū)動器更改為高阻抗?fàn)顟B(tài)。最后一行代碼更改回數(shù)據(jù)存儲器的庫 0。最后一行不是必需的,但用于使所有宏和函數(shù)調(diào)用使數(shù)據(jù)存儲器處于已知狀態(tài)。

第二個宏OW_LO將 DQ 線強制到邏輯低電平。首先,選擇數(shù)據(jù)存儲器的組0,以便可以訪問PORTB寄存器。PORTB 寄存器是數(shù)據(jù)寄存器,包含強制到 TRISB 引腳的值(如果它們配置為輸出)。

PORTB 的 DQ 位被清除,因此線路被強制為低電平。最后,選擇數(shù)據(jù)存儲器的組1,并清除TRISB寄存器的DQ位,使其成為輸出驅(qū)動器。與往常一樣,宏以選擇數(shù)據(jù)存儲器的庫 0 結(jié)束。

包括一個標(biāo)記為WAIT的最終宏,以產(chǎn)生1-Wire信號的延遲。WAIT 用于產(chǎn)生 5μs 倍數(shù)的延遲。調(diào)用宏時,TIME 值為微秒,并生成相應(yīng)的延遲時間。宏只需計算需要 5μs 延遲的次數(shù),然后在 WAIT5U 內(nèi)循環(huán)。例程 WAIT5U 將在下一節(jié)中顯示。對于 WAIT 中的每個指令,處理時間都作為注釋給出,以幫助了解延遲是如何實現(xiàn)的。

    WAIT:MACRO TIME
      ;Delay for TIME μs.
      ;Variable time must be in multiples of 5μs.
             MOVLW (TIME/5) - 1                 ;1μs to process
             MOVWF TMP0                         ;1μs to process
             CALL WAIT5U                        ;2μs to process
             ENDM

通用1線例程

1-Wire時序協(xié)議具有特定的時序約束,必須遵循這些約束才能實現(xiàn)成功的通信。為了幫助實現(xiàn)特定的時序延遲,使用例程WAIT5U產(chǎn)生5μs延遲。此例程如下所示。

      WAIT5U:
      ;This takes 5μs to complete
             NOP                                ;1μs to process
             NOP                                ;1μs to process
             DECFSZ TMP0,F                      ;1μs if not zero or 2μs if zero
             GOTO WAIT5U                        ;2μs to process
             RETLW 0                            ;2μs to process

當(dāng)與 WAIT 宏結(jié)合使用時,可以生成簡單的時序延遲。例如,如果需要 40μs 延遲,則會調(diào)用 WAIT 0.40。這會導(dǎo)致 WAIT 中的前 3 行執(zhí)行,導(dǎo)致 4μs。接下來,WAIT4U 中的前 5 行代碼在 5μs 內(nèi)執(zhí)行,循環(huán) 6 次,總共 30μs。WAIT5U的最后一個循環(huán)需要6μs,然后返回到WAIT宏。因此,總處理時間為 4 + 30 + 6 = 40μs。

2.5V < VDD <5.5V, TA= -20°C 至 +70°C
參數(shù) 象征 最小值 典型值 麥克斯 單位
時隙 t槽 60 120 微秒
恢復(fù)時間 t娛樂 1 微秒
寫入 0 低時間 t低0 60 120 微秒
寫入 1 低時間 t低1 1 15 微秒
讀取數(shù)據(jù)有效 tRDV 15 微秒
復(fù)位時間高 tRSTH 480 微秒
復(fù)位時間低 tRSTL 480 960 微秒
存在檢測高 t帕迪亞 15 60 微秒
存在檢測低 tPDL 60 240 微秒

任何1-Wire交易的開始都始于來自主器件的復(fù)位脈沖,然后是來自從器件的存在檢測脈沖。圖 1 說明了此事務(wù)。該初始化序列可以通過PIC輕松傳輸,匯編代碼如圖1所示。1-Wire初始化、讀取和寫入的時序規(guī)格見上表1。這些參數(shù)在文檔的其余部分中都有引用。

pYYBAGQOmdqAXAliAAAqdsMe1ak002.gif

圖1.1-Wire初始化序列。

    OW_RESET:
             OW_HIZ                             ; Start with the line high
             CLRF      PDBYTE                   ; Clear the PD byte
             OW_LO
             WAIT      .500                     ; Drive Low for 500μs
             OW_HIZ
             WAIT      .70                      ; Release line and wait 70μs for PD Pulse
             BTFSS     PORTB,DQ                 ; Read for a PD Pulse
             INCF      PDBYTE,F                 ; Set PDBYTE to 1 if get a PD Pulse
             WAIT      .430                     ; Wait 430μs after PD Pulse
             RETLW     0

OW_RESET程序首先確保DQ引腳處于高阻抗?fàn)顟B(tài),以便上拉電阻將其拉高。接下來,它清除PDBYTE寄存器,以便準(zhǔn)備驗證下一個存在檢測脈沖。之后,DQ引腳被驅(qū)動為低電平500μs。這符合 tRSTL參數(shù)如表1所示,并提供了一個20μs的附加緩沖器。將引腳驅(qū)動至低電平后,引腳釋放至高阻抗?fàn)顟B(tài),并在讀取存在檢測脈沖之前增加70μs的延遲。使用 70μs 可確保 PIC 采樣在有效時間對 t 的任意組合PDL和 t帕迪亞.讀取存在檢測脈沖后,調(diào)整PDBYTE寄存器以顯示邏輯電平讀數(shù)。然后,DQ引腳將處于高阻抗?fàn)顟B(tài)再保持430μs,以確保RSTH已滿足時間,并包括一個20μs的額外緩沖器。

1-Wire通信所需的下一個例程是DSTXBYTE,用于將數(shù)據(jù)傳輸?shù)?-Wire從器件。此例程的 PIC 代碼如圖 2 所示。此例程與要在 W 寄存器中發(fā)送的數(shù)據(jù)一起調(diào)用,并立即移動到 IOBYTE 寄存器。接下來,將 COUNT 寄存器初始化為 8,以計算從 DQ 行發(fā)送的位數(shù)。從 DSTXLP 開始,PIC 開始發(fā)送數(shù)據(jù)。首先,DQ引腳被驅(qū)動為低電平3μs,無論發(fā)送什么邏輯電平。這確保了低1時間被滿足了。接下來,IOBYTE 的 lsb 移動到 CARRY 位,然后測試一個 60 或 <>。如果CARY為<>,則設(shè)置TRISB的DQ位,將引腳變?yōu)楦咦杩範(fàn)顟B(tài),并通過上拉電阻將線路拉高。如果 CARRY 為零,則行保持低電平。接下來增加<>μs的延遲以允許最小t低0時間。等待60μs后,引腳變?yōu)楦咦杩範(fàn)顟B(tài),然后再增加2μs用于上拉電阻恢復(fù)。最后,COUNT 寄存器遞減。如果 COUNT 寄存器為零,則所有 2 位均已發(fā)送,例程已完成。如果 COUNT 寄存器不為零,則從 DSTXLP 開始發(fā)送另一個位。寫零和寫一過程的可視化解釋如圖 <> 所示。

poYBAGQOmduAI0H7AAAw_GF7_hc302.gif

圖2.1線寫入時隙。

    DSTXBYTE:                                 ; Byte to send starts in W
             MOVWF     IOBYTE                   ; We send it from IOBYTE
             MOVLW     .8
             MOVWF     COUNT                    ; Set COUNT equal to 8 to count the bits
      DSTXLP:
             OW_LO
             NOP
             NOP
             NOP                                ; Drive the line low for 3μs
             RRF        IOBYTE,F
             BSF        STATUS,RP0              ; Select Bank 1 of data memory
             BTFSC      STATUS,C                ; Check the LSB of IOBYTE for 1 or 0
             BSF        TRISB,DQ                ; HiZ the line  if LSB is 1
             BCF        STATUS,RP0              ; Select Bank 0 of data memory
             WAIT      .60                      ; Continue driving line for 60μs
             OW_HIZ                             ; Release the line for pullup
             NOP
             NOP                                ; Recovery time of 2μs
             DECFSZ    COUNT,F                  ; Decrement the bit counter
             GOTO      DSTXLP
             RETLW     0

1-Wire通信的最后一個例程是DSRXBYTE,它允許PIC從從器件接收信息。代碼如圖 3 所示。在任何DQ活動開始之前,COUNT寄存器初始化為8,其功能是計算接收的位數(shù)。DSRXLP 首先將 DQ 引腳驅(qū)動為低電平,向從設(shè)備發(fā)出 PIC 已準(zhǔn)備好接收數(shù)據(jù)的信號。該線路被驅(qū)動為低電平6μs,然后通過將DQ引腳置于高阻抗?fàn)顟B(tài)來釋放。接下來,PIC再等待4μs,然后對數(shù)據(jù)線進行采樣。在低行驅(qū)動后,OW_LO中有 1 行代碼,OW_HIZ內(nèi)有 3 行代碼。每條線需要1μs來處理。將所有時間相加得到 1 + 6 + 3 + 4 = 14μs,略低于 tRDV規(guī)格為15μs。讀取 PORTB 寄存器后,DQ 位被屏蔽,然后將寄存器添加到 255 以強制 CARRY 位鏡像 DQ 位。然后,CARRY 位移動到存儲傳入字節(jié)的 IOBYTE 中。一旦字節(jié)被存儲,就會增加50μs的延遲,以確保槽滿足了。最后一項檢查是確定 COUNT 寄存器是否為零。如果為零,則已讀取 8 位,并退出例程。否則,將在 DSRXLP 上重復(fù)該循環(huán)。讀零和讀一事務(wù)如圖 3 所示。

pYYBAGQOmdyALZhpAABDRKLtVjQ926.gif

圖3.1-線讀取時隙。

         MOVLW     .8
             MOVWF     COUNT                   ; Set COUNT equal to 8 to count the bits
      DSRXLP:
             OW_LO
             NOP
             NOP
             NOP
             NOP
             NOP
             NOP                                ; Bring DQ low for 6μs
             OW_HIZ
             NOP
             NOP
             NOP
             NOP                                ; Change to HiZ and Wait 4μs
             MOVF      PORTB,W                  ; Read DQ
             ANDLW     1<

總結(jié)

Maxim的1-Wire通信協(xié)議可以在Microchip的PICmicro系列微控制器上輕松實現(xiàn)。要完成1-Wire交易,只需要兩種GPIO狀態(tài),并且PIC上的多個GPIO很容易配置用于此任務(wù)。1-Wire通信需要三個基本程序:初始化、讀字節(jié)和寫字節(jié)。介紹并詳細(xì)介紹了這三個程序,以提供精確的1-Wire常規(guī)速度通信。這使得PIC能夠與Maxim 1-Wire的眾多器件中的任何一種接口。本文檔的附錄 A 在一個方便的包含文件中包含所有三個例程。附錄B包含一個小型匯編程序,用于將PIC16F628連接至DS2762高精度Li+電池監(jiān)測器。

審核編輯:郭婷

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

    關(guān)注

    48

    文章

    7957

    瀏覽量

    155237
  • 控制器
    +關(guān)注

    關(guān)注

    114

    文章

    17116

    瀏覽量

    184445
  • 1-Wire
    +關(guān)注

    關(guān)注

    0

    文章

    70

    瀏覽量

    21646
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    基于C++模板技術(shù)的1-wire總線編程

    , touch。但這里沒有具體實現(xiàn)這些操作。2、1-wire 器件枚舉類:ow_enum_t實現(xiàn)了 enum 操作。3、1-wire 協(xié)議
    發(fā)表于 11-22 23:40

    1-Wire時序的理解及配置

    應(yīng)用中的高速模式。DS2480B的特性之一在于其具有伸縮速率模式,允許設(shè)計者標(biāo)準(zhǔn)速度配置1-Wire時序。本應(yīng)用筆記闡述了如何確定最佳時序配置以及如何用Windows?軟件將設(shè)置參數(shù)
    發(fā)表于 11-12 00:17

    如何訪問1-Wire API

    任何組件在創(chuàng)建者來實現(xiàn)這一點。有人知道如何訪問1-Wire API嗎?謝謝 以上來自于百度翻譯 以下為原文I have been looking for a 1-wire component
    發(fā)表于 07-29 15:25

    如何使用FlexIO塊訪問1-wire設(shè)備?

    我的 MCU 是 RT1052,現(xiàn)在我需要訪問一個溫度傳感器 DS18B20,這是一個具有單線協(xié)議的設(shè)備。使用延遲功能訪問 1-wire 協(xié)議的方法不適用于 RTOS。 從參考手冊來看,1-w
    發(fā)表于 04-23 06:43

    DS2480B串行接口1-Wire 線驅(qū)動器的使用

    1-Wire®通信協(xié)議可以通過微處理器上的一個IO 引腳產(chǎn)生,不過,為了創(chuàng)建可靠的1-Wire 網(wǎng)絡(luò),必須提供正確的時序和適當(dāng)?shù)妮敵鲭妷簲[率。1-Wire 主機發(fā)送的時序不正確
    發(fā)表于 04-18 10:14 ?57次下載

    應(yīng)用筆記159絕對可靠的1-Wire通信

    應(yīng)用筆記159絕對可靠的1-Wire通信 Dallas Semiconductor的1-Wire®器件利用一根數(shù)據(jù)線和定義完善的、經(jīng)過時間檢驗的協(xié)議進行
    發(fā)表于 04-10 09:57 ?25次下載

    什么是1-Wire

    什么是1-Wire 定義:單線(加地線)通信協(xié)議。 1-Wire®串行存儲器產(chǎn)品通過單線連接為你的產(chǎn)品添加存儲器!
    發(fā)表于 04-20 23:22 ?3702次閱讀
    什么是<b class='flag-5'>1-Wire</b>

    用軟件實現(xiàn)1-Wire通信

    摘要:在沒有專用總線主機(如DS2480B、DS2490)的情況下,微處理器可以輕松地產(chǎn)生1-Wire時序信號。本應(yīng)用筆記給出了一個采用‘C’語言編寫、支持標(biāo)準(zhǔn)速率的1-Wire主機通信基本子程序
    發(fā)表于 05-08 12:02 ?2610次閱讀
    用軟件<b class='flag-5'>實現(xiàn)</b><b class='flag-5'>1-Wire</b><b class='flag-5'>通信</b>

    1-Wire器件與8051系列單片機的軟件接口

    摘 要:分析了1-Wire總線的硬件結(jié)構(gòu)和通信協(xié)議,結(jié)合實際應(yīng)用設(shè)計了1-Wire器件與8051系列單片機的軟件接口。 關(guān)鍵詞:1-Wire總線,軟件接口,CRC校驗  
    發(fā)表于 05-17 12:40 ?2279次閱讀
    <b class='flag-5'>1-Wire</b>器件與8051系列單片機的軟件接口

    DS1820單總線(1-wire)數(shù)字溫度傳感器

      DS1820是美國DALLAS公司生產(chǎn)的一種單總線(1-wire)數(shù)字溫度傳感器,采用1-wire總線通信協(xié)議。具有獨特的單總線通信方式
    發(fā)表于 12-09 11:35 ?3977次閱讀
    DS1820單總線(<b class='flag-5'>1-wire</b>)數(shù)字溫度傳感器

    1-Wire通信協(xié)議的工作原理及優(yōu)勢介紹

    了解1-Wire?通信協(xié)議的工作原理及其相對于其他類型串行通信的優(yōu)勢、常見實施配置,以及主流的1-Wire應(yīng)用
    的頭像 發(fā)表于 10-09 04:10 ?7357次閱讀

    實現(xiàn)隔離式1-Wire總線

    1-Wire總線在需要電氣隔離的醫(yī)療設(shè)備中傳感器和耗材的認(rèn)證和校準(zhǔn)中越來越受歡迎。本文應(yīng)用筆記4206“為嵌入式應(yīng)用選擇合適的1-Wire主機”為基礎(chǔ),介紹如何修改現(xiàn)有的1-Wire
    的頭像 發(fā)表于 01-17 10:39 ?4094次閱讀
    <b class='flag-5'>實現(xiàn)</b>隔離式<b class='flag-5'>1-Wire</b>總線

    可靠的長線1-Wire網(wǎng)絡(luò)指南

    1-Wire協(xié)議最初設(shè)計用于通過短連接與附近設(shè)備進行通信。1-Wire也是在單個微處理器端口引腳上增加輔助存儲器的一種方式。后來開發(fā)的方法將1-Wi
    的頭像 發(fā)表于 03-01 14:21 ?2472次閱讀
    可靠的長線<b class='flag-5'>1-Wire</b>網(wǎng)絡(luò)指南

    使用UART實現(xiàn)1-Wire總線主控

    本應(yīng)用筆記解釋了如何使用微處理器的UART實現(xiàn)1-Wire總線主機。它包括對所需電氣接口、UART配置以及UART和1-Wire信號之間的時序關(guān)系的說明。此外,它還參考了UART
    的頭像 發(fā)表于 03-29 11:28 ?5163次閱讀
    使用UART<b class='flag-5'>實現(xiàn)</b><b class='flag-5'>1-Wire</b>總線主控

    如何將1-Wire主機復(fù)用到多個通道?

    如何將1-Wire主機復(fù)用到多個通道? 1-Wire是一種串行通信協(xié)議,可用于連接各種感測器和芯片,如溫度傳感器、濕度傳感器、EEPROM等。通常情況下,每個
    的頭像 發(fā)表于 10-29 14:21 ?882次閱讀