1.事件背景
最近做项目时移植了以前写的DS18B20的驱动,移植之后发现不能正常使用,然后就用示波器抓了一下通信线的波形,发现了一个问题:有时候波形会出现类似于毛刺、也会出现电压值约为1.5V的情况,如下图所示。
这情况很奇怪,查阅了网上的大量代码和配置方法,咦?没问题呀,配置完全一样。但是这种情况还是存在,数据也读不出来。
2.查阅DS18B20资料
就时序上来说,时序与手册中的时序一致,也查了不少可以读出数据的波形,发现没有这个问题。直到猛然间看到了这个
*它可是一个开漏输出的模式呀!!!*我&网上的代码配置单片机的IO口的时候是将单片机IO口配置成推挽输出,懂硬件的可能一下子就知道问题出在哪里了。这什么意思呢?拿下边的图片举例子(该图片为STM32 IO口内部电路图)。