上一篇利用串口的半双工实现对1-wire协议的操作,利用单线半双工有个问题就是在读取1-wire总线设备(18B20)时,如果设备输出低电平时可能会造成电平不能完全拉到低电平,甚至烧掉TX管脚。
想法:既然内部将TX和RX相连接不好做,就再外部让TX和RX相连接。不利用stm32单线模式。通过一个二极管配合选通。
DATA连接到1-wire总线设备(DS18B20的DQ线)。
代码还是STM32串口实现1-wire(一)的代码,做如下修改:
- IO管脚需要加入对RX的配置。
- 不使能STM32单总线半双工模式(去掉USART_HalfDuplexCmd(USART2, ENABLE);函数调用)。