一、原理及引脚
查阅扩展板引脚图
跳线帽连接P4.6--P3.6(PA6)
控制DS18B20为单线协议,对时序的要求较为苛刻。控制单个DS18B20的配置步骤如图
1.初始化的时序图:
主机首先发出一个480-960us的低电平脉冲(复位),然后释放总线为高电平,并在随后的480微秒时间内,对总线进行检测,如果有低电平出现说明总线上有器件已做出应答。若无低电平出现一直都是高电平说明总线上无器件应答。
作为从机的Ds18B20上电后就一直检测总线上是否有480~960微秒的低电平出现,如果检测到该复位脉冲则在总线变为高电平后,等待15~60数秒,之后将总线电平拉低60~240微秒(响应存在脉冲),告诉主机本器件已做好准备。若检测不到复位脉冲则一直处于检测等待。
主机将 DQ 拉成低电平保持最少48Ous后释放总线,延时15~60us后的60~240us时间内检测D0是否为低电平,再延时240us保持起始时序的完整。
2.主机写0和写1的时序:
写周期最少为60微秒,最长不超过120微秒。写周期的开始,主机先把总线拉低大于1微秒表示写周期开始。随后若主机想写0,则继续拉低电平最少60微秒直至写周期结束,然后释放总线为高电平。若主机想写1,在拉低总线电平1微秒后就释放总线为高电平,一直到写周期结束。作为从机的DS18B20在检测到总线被拉低后等待1 5微秒后从15us~45us对总线采样(典型时间15us) ,在采样时间内,若检测到总线为高电平则认为主机发送了1,若检测到总线为低电平则认为主机发送了0。
3.主机读0和读1的时序
读周期最少为60微秒,最长不超过120微秒。读周期的开始
主机先把总线拉低大于1微
秒,然后释放总线。主机释放总线后,若DS18B20发送0,则把总线拉低并保持至少从读周期开始的15us,然后释放总线为高电平。若DS18B20发送1,则在主机释放总线后不拉低总线(为高电平)。主机须在读周期开始的15us内检测总线电平的高低,若检测到总线为低则表示DS18B20发送来0,若检测到总线为高则表示DS18B20发送来1。
注意:每个字节写的时候,都是低位在前,高位在后。例如11001100,发送时,顺序为0 0 1 1 0 0 1 1
二、CubeMX的配置
配置PA6为GPIO_OUTPUT
三、代码实现:
根据时序图编写读函数:
主函数内容:
读出温度并显示在LCD屏上