内核驱动 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";
};
};