内核驱动 w1-uart¶
作者:Christoph Winklhofer <cj.winklhofer@gmail.com>
描述¶
UART 1-Wire 总线驱动程序。该驱动程序通过串行设备总线利用 UART 接口来创建 1-Wire 时序模式,如文档 “使用 UART 实现 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 时序模式。
用法¶
通过将单个子 onewire 添加到串行节点(例如 uart0),在设备树中指定 UART 1-wire 总线。例如
@uart0 {
...
onewire {
compatible = "w1-uart";
};
};