STM32串口实现1-wire(二)

STM32串口实现1-wire(二)

上一篇利用串口的半双工实现对1-wire协议的操作,利用单线半双工有个问题就是在读取1-wire总线设备(18B20)时,如果设备输出低电平时可能会造成电平不能完全拉到低电平,甚至烧掉TX管脚。
想法:既然内部将TX和RX相连接不好做,就再外部让TX和RX相连接。不利用stm32单线模式。通过一个二极管配合选通。
这里写图片描述
DATA连接到1-wire总线设备(DS18B20的DQ线)。

分析

  • TX输出0时,二极管导通,DATA应该在0.2V左右,此时1-wire总线设备(DS18B20)和STM32的RX能够正常收到数据0。
  • TX输出1时,二极管闭合,DATA被上拉成3.3V。1-wire总线设备(DS18B20)和STM32的RX能够正常收到数据1。
  • 对于读数据来说,需串口发送0xFF,STM32的TX位高电平,此时二极管都是截止的。STM32的RX线和1-wire总线设备(DS18B20)总线直接相连,能够正常收到1-wire总线设备(DS18B20)设备的数据。

代码修改

代码还是STM32串口实现1-wire(一)的代码,做如下修改:
- IO管脚需要加入对RX的配置。
- 不使能STM32单总线半双工模式(去掉USART_HalfDuplexCmd(USART2, ENABLE);函数调用)。

  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值