核心驅動 w1-uart¶
作者:Christoph Winklhofer <cj.winklhofer@gmail.com>
描述¶
UART 1-Wire 匯流排驅動。該驅動利用序列裝置匯流排(Serial Device Bus)的 UART 介面,按照文件 “使用 UART 實現 1-Wire 匯流排主裝置” 中描述的方式,生成 1-Wire 時序模式。
簡而言之,UART 外設必須支援全雙工並以開漏模式執行。時序模式由波特率和傳輸位元組的特定組合生成,這對應於 1-Wire 讀位、寫位或復位脈衝。
例如,1-Wire 復位和存在檢測的時序模式使用 9600 波特率,即每位 104.2 微秒。透過 UART 傳輸位元組 0xf0(最低有效位在前,起始位為低)將 1-Wire 的復位低電平時間設定為 521 微秒。一個存在的 1-Wire 裝置會透過將線路拉低來改變接收到的位元組,驅動程式利用這一點來評估 1-Wire 操作的結果。
類似地,1-Wire 讀位或寫位使用 115200 波特率,即每位 8.7 微秒。傳輸位元組 0x80 用於寫 0 操作(低電平時間 69.6 微秒),位元組 0xff 用於讀 0、讀 1 和寫 1 操作(低電平時間 8.7 微秒)。
復位和存在檢測的預設波特率為 9600,而 1-Wire 讀寫操作的預設波特率為 115200。如果實際波特率與請求的波特率不同,則會調整傳輸的位元組以生成 1-Wire 時序模式。
用法¶
在裝置樹中指定 UART 1-Wire 匯流排,透過將單個子節點 onewire 新增到序列節點(例如 uart0)來完成。例如
@uart0 {
...
onewire {
compatible = "w1-uart";
};
};