之前从资料上面看到,STM32可以将IO管脚配置成开漏模式并加上上拉电阻以达到双向IO的效果。我今天在读写一块单总线传感器DHT11的时候却发现,貌似要将管脚设为高GPIO_Pin_Set(x,x)才可以释放总线,我才可以读到传感器发过来的数值。
在读DHT11之前要将信号线先拉低18ms,然后就开始等待DHT11的信号反馈,从时序图上来看,在拉低完18ms左右后,DHT11会主动过来拉高我的信号线,但是我通过逻辑分析仪却发现这条数据线始终为低电平,而当我在拉低18ms后主动拉高,后面的DHT11的时序就都可以得到了。
小弟不才,敢问大神,在开漏模式下,是一定要将管脚设为高的之后,才可以释放这个管脚么?还是会因为电平的原因导致我没有读出来?
你是把引脚设置成开漏输出了吧,如果输出为低,就不能出现高电平的,输出高电平才可以。