如何使用微处理器的UART来实现1-Wire®总线主机

描述

本应用笔记说明了如何使用微处理器的UART来实现1-Wire®总线主机。它包括所需的电接口,UART配置以及UART与1-Wire信号之间的时序关系的说明。设置UART字节时序提供的灵活性允许直接实现1-Wire时隙以及复位和在线检测脉冲。通过包含深度发送和接收FIFO,可以在1-Wire总线上传输几个字节值,而主处理器只需要每位几个时钟周期即可。

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总线上提供逻辑高电平。

缓冲器

离散漏极开路缓冲器。

缓冲器

集成的漏极开路缓冲器。

编辑:hfy

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分