最近工作上有接觸到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]
以上作紀錄與大家分享.
留言列表