最近工作上有接觸到onewire,利用手頭上的Arduino來玩一下onewire訊號,並觀察onewire的波形

首先匯入以下 onewire library,

https://www.arduinolibraries.info/libraries/one-wire

以下為此library的說明web site

https://www.pjrc.com/teensy/td_libs_OneWire.html

 

然後匯入demo的source code.

==在硬體上設定上==

接一條線在arduino的pin 10,另一條接GND,之後勾上示波器就可以開始量測波形

OneWire只有採用一條線來做通訊

----

.電壓介於2.8V to 6V

.standard data rate為16kbps , overdrive speed 為 142 kbps.

.沒傳輸時訊號為high

.low 120 us就會reset

.LSB bit資料會先送

.host必須有能力抖出 1 us的訊號(base on one wire standard 16kbps 速度)或 0.25us for overdrive speed(142 kbps).

onewire WIKI-  https://zh.wikipedia.org/wiki/1-Wire

----

onewire運作方式有以下幾種(base on standard data rate為16kbps ):

 

在Write 0 時,必須拉low,LOW維持的時間為 60us

Write 1時,拉low時間縮短為 6us

下圖為onewire寫入0xAB的波形,onewire 是先送出 LSB bit,這一點要注意,可以參考以下onewire波形

基本上 High比較長的就是 1 , 比較短的就是 0.

且波形 timing必須符合 [在Write 0 時,必須拉low,LOW維持的時間為 60us , Write 1時,拉low時間縮短為 6us]

 

以上作紀錄與大家分享.

arrow
arrow
    創作者介紹
    創作者 CuteParrot 的頭像
    CuteParrot

    馴龍窩

    CuteParrot 發表在 痞客邦 留言(0) 人氣()