为产生写0时隙,在拉低总线后主机持续拉低总线即可,直到写时隙完成后释放总线(持续时间60-120us)。
写时隙产生后,DS18B20会在产生后的15到60us的时间内采样总线,以此来确定写0还是写1。DS18B20只有在主机发出读时隙时才能发送数据到主机。因此,主机必须在BE 命令,B4命令后立即产生读时隙以使DS18B20提供相应的数据。另外,在44命令,B8命令后也要产生读时隙。
所有的读时隙必须至少有60us的持续时间。相邻两个读时隙必须要有最少1us的恢复时间。所有的读时隙都由拉低总线,持续至少1us后再释放总线(由于上拉电阻的作用,总线恢复为高电平)产生。DS18B20输出的数据在下降沿产生后15us后有效。因此,释放总线和主机采样总线等动作要在15us内完成。
DS18B20对时序的要求还是很严格的,你说的那个高电平没有体现出来也许是在进入这个函数时,时序引脚上本来就是高电平,这时只需要略作延时即可,而省略了手动拉高。希望我的回答能帮助到你。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)