交流发电机电压源是一台发电机,它从不同形式的能量产生电动势。最常见的电压源是交流发电机和电池。交流发电机通过机械旋转转换能量以产生交流信号,由于电...
使用 UART 实现 1-Wire 总线主控
接线图
2023年10月03日 17:08 304
admin
1-Wire 器件为识别、存储、计时、测量和控制提供了经济的解决方案。1-Wire 数据接口被减少到绝对最小值,即一条数据线加上一个接地参考。由于大多数 1-Wire 器件提供相对少量的数据,因此 16kbps 的典型数据速率对于预期任务来说绰绰有余。以“位联动”方式使用 8 位或 16 位微控制器的通用输入/输出 (GPIO) 引脚充当总线主控通常很方便。
然而,在 32 位系统中,处理器时钟频率通常超过 100MHz,并且使用 GPIO 引脚作为 1-Wire 总线主控器会消耗每个 1-Wire 位大量的时钟周期。在 32 位便携式系统中,在对 1-Wire 读和写时隙进行计时时会消耗宝贵的电池电量。一些系统通过在其芯片组中包含DS1WM可合成 1-Wire 总线主控* 硬件块来减轻主处理器的位定时和字节成帧操作的负担。如果DS1WM或其他硬件 1-Wire 主端口不可用,如果通用异步接收器发送器 (UART) 通道可用,则可以轻松完成与 1-Wire 器件的通信。
本应用笔记包括所需电气接口、UART 配置以及 UART 和 1-Wire 信号之间的时序关系的说明。假定您对 1-Wire 通信有一般性的了解。下面的讨论中使用了典型的时序和逻辑电平,读者应参考特定的 1-Wire 器件数据手册,了解具体的时序和电压规格及容差。
概念概述
正确配置波特率、每个字符的数据位、奇偶校验和停止位数量后,每秒 115,200 位的 UART 可以提供实现 1-Wire 主设备所需的输入和输出时序。UART 产生 1-Wire 复位脉冲以及读和写时隙。微处理器只需将一字节字符代码放入 UART 发送寄存器以发送 1-Wire 1 或 0 位,然后 UART 即可完成工作。相反,微处理器读取与从 1-Wire 从机读取的 1 或 0 位相对应的单字节字符代码。所有 1-Wire 位传输都需要总线主控器 UART 通过将 1-Wire 总线驱动为低电平来开始周期。因此,每个 1-Wire 位周期包括 UART 的一个字节发送和一个字节接收。读取时,接收到的数据是有意义的,但是写入时,接收字节被丢弃。根据 UART 的读写先进先出 (FIFO) 缓冲区深度,UART 还可以将 1-Wire 位构建为字节值,进一步减少处理器开销。
UART 至 1-Wire 电气接口
1-Wire 器件在开漏环境中工作,总线电压范围为 2.0V 至 5.5V。精确的逻辑电平和最小上拉电压取决于器件,但寄生电源器件通常需要 2.8V 的最小上拉电压,以便在数据线处于低电平期间对用于供电的内部存储电容器进行充电。4.7kΩ 电阻器通常用作 1-Wire 数据线上的上拉电阻。该电阻器被动地提供逻辑高信号,而总线主设备和所有从设备驱动逻辑低信号。器件通常包含一个弱内部下拉,如图 1 中的 Ipd 所示。
由于大多数 UART 发送数据(TXD)引脚不是开漏引脚,因此通常需要外部开漏缓冲电路。该电路可以由分立元件构成,如图 2 所示,也可以使用如图 3 所示的Fairchild NC7WZ07等集成解决方案。在这两个电路中,4.7kΩ 上拉电阻在 1-Wire 总线上提供逻辑高电平。
使用 UART 实现 1-Wire 总线 Master_
集成开漏缓冲器。
然而,在 32 位系统中,处理器时钟频率通常超过 100MHz,并且使用 GPIO 引脚作为 1-Wire 总线主控器会消耗每个 1-Wire 位大量的时钟周期。在 32 位便携式系统中,在对 1-Wire 读和写时隙进行计时时会消耗宝贵的电池电量。一些系统通过在其芯片组中包含DS1WM可合成 1-Wire 总线主控* 硬件块来减轻主处理器的位定时和字节成帧操作的负担。如果DS1WM或其他硬件 1-Wire 主端口不可用,如果通用异步接收器发送器 (UART) 通道可用,则可以轻松完成与 1-Wire 器件的通信。
本应用笔记包括所需电气接口、UART 配置以及 UART 和 1-Wire 信号之间的时序关系的说明。假定您对 1-Wire 通信有一般性的了解。下面的讨论中使用了典型的时序和逻辑电平,读者应参考特定的 1-Wire 器件数据手册,了解具体的时序和电压规格及容差。
概念概述
正确配置波特率、每个字符的数据位、奇偶校验和停止位数量后,每秒 115,200 位的 UART 可以提供实现 1-Wire 主设备所需的输入和输出时序。UART 产生 1-Wire 复位脉冲以及读和写时隙。微处理器只需将一字节字符代码放入 UART 发送寄存器以发送 1-Wire 1 或 0 位,然后 UART 即可完成工作。相反,微处理器读取与从 1-Wire 从机读取的 1 或 0 位相对应的单字节字符代码。所有 1-Wire 位传输都需要总线主控器 UART 通过将 1-Wire 总线驱动为低电平来开始周期。因此,每个 1-Wire 位周期包括 UART 的一个字节发送和一个字节接收。读取时,接收到的数据是有意义的,但是写入时,接收字节被丢弃。根据 UART 的读写先进先出 (FIFO) 缓冲区深度,UART 还可以将 1-Wire 位构建为字节值,进一步减少处理器开销。
UART 至 1-Wire 电气接口
1-Wire 器件在开漏环境中工作,总线电压范围为 2.0V 至 5.5V。精确的逻辑电平和最小上拉电压取决于器件,但寄生电源器件通常需要 2.8V 的最小上拉电压,以便在数据线处于低电平期间对用于供电的内部存储电容器进行充电。4.7kΩ 电阻器通常用作 1-Wire 数据线上的上拉电阻。该电阻器被动地提供逻辑高信号,而总线主设备和所有从设备驱动逻辑低信号。器件通常包含一个弱内部下拉,如图 1 中的 Ipd 所示。
由于大多数 UART 发送数据(TXD)引脚不是开漏引脚,因此通常需要外部开漏缓冲电路。该电路可以由分立元件构成,如图 2 所示,也可以使用如图 3 所示的Fairchild NC7WZ07等集成解决方案。在这两个电路中,4.7kΩ 上拉电阻在 1-Wire 总线上提供逻辑高电平。
使用 UART 实现 1-Wire 总线 Master_
集成开漏缓冲器。
相关文章
发表评论