蓝桥杯嵌入式 STM32G4 扩展板 DS18B20温度传感器

一、原理及引脚

查阅扩展板引脚图

跳线帽连接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屏上

 

 

 

 

 

 

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值