[求助]关于ds18b20读时序的两个问题
看了很多18b20的资料,越看越糊涂啦!请高手指点哦:问题一(资料上以下两种不同的说法,描述的竟然相反,哪个才是对的啊?):说法一:DS18B20的读时序“对于DS18B...
看了很多18b20的资料,越看越糊涂啦!请高手指点哦:
问题一(资料上以下两种不同的说法,描述的竟然相反,哪个才是对的啊?):
说法一:DS18B20的读时序
“对于DS18B20的读时序分为读0时序和读1时序两个过程。
对于DS18B20的读时隙是从主机把单总线拉低之后,在15微秒之内就得释放单总线,以让DS18B20把数据传输到单总线上。DS18B20在完成一个读时序过程,至少需要60us才能完成。”
说法二:DS18B20的读时序
“主机总线t0时刻从高拉至低电平时,总线只需保持低电平1us,之后在t1时刻将总线拉高,产生读时间隙,读时间隙在t1时刻后t2时刻前有效。t2距t0为15us,也就是说,t2时刻前主机必须完成读位,并在t0后的60us至120us内释放总线。”
以上两个说法完全矛盾呀!按照说法一,主机把单总线拉低时刻开始算,需要延迟15微秒之后才能读位;按照说法二,主机把单总线拉低时刻开始算,必须要在15us之内完成读位!
这两种说法必然有一种是错的啊,可是,哪一个说法才是对的呀?
问题二:
ds18b20的写1时序与读(0或1)时序完全相同,是不是在读取ds18b20一位的同时,无意中就向18b20写进去一个1了啊? 展开
问题一(资料上以下两种不同的说法,描述的竟然相反,哪个才是对的啊?):
说法一:DS18B20的读时序
“对于DS18B20的读时序分为读0时序和读1时序两个过程。
对于DS18B20的读时隙是从主机把单总线拉低之后,在15微秒之内就得释放单总线,以让DS18B20把数据传输到单总线上。DS18B20在完成一个读时序过程,至少需要60us才能完成。”
说法二:DS18B20的读时序
“主机总线t0时刻从高拉至低电平时,总线只需保持低电平1us,之后在t1时刻将总线拉高,产生读时间隙,读时间隙在t1时刻后t2时刻前有效。t2距t0为15us,也就是说,t2时刻前主机必须完成读位,并在t0后的60us至120us内释放总线。”
以上两个说法完全矛盾呀!按照说法一,主机把单总线拉低时刻开始算,需要延迟15微秒之后才能读位;按照说法二,主机把单总线拉低时刻开始算,必须要在15us之内完成读位!
这两种说法必然有一种是错的啊,可是,哪一个说法才是对的呀?
问题二:
ds18b20的写1时序与读(0或1)时序完全相同,是不是在读取ds18b20一位的同时,无意中就向18b20写进去一个1了啊? 展开
展开全部
问题1:说法并不矛盾,我理解的是在你拉低总线15US内必须释放总总线,但你拉低的宽度不能小于1US,如果小于1US,则1820可能检测不到。
注:我拿到的一个中文资料上解释也有误,明明是说写时序,它却翻译的是读时序,建议还是看下原版的英文资料。
问题2:对1820读数据的前提是你要先进行温度转换,或发送读取指令,也就是说你必须通过写0xbe读温度指令,才能读取,否则它就会当成是写了。当你正确发送读指令后,再读1它肯定不会当成是写1的
1820的时序比较复杂,建议把资料吃透的同时,还要多亲手操作,光看资料并不能完全解决问题。
注:我拿到的一个中文资料上解释也有误,明明是说写时序,它却翻译的是读时序,建议还是看下原版的英文资料。
问题2:对1820读数据的前提是你要先进行温度转换,或发送读取指令,也就是说你必须通过写0xbe读温度指令,才能读取,否则它就会当成是写了。当你正确发送读指令后,再读1它肯定不会当成是写1的
1820的时序比较复杂,建议把资料吃透的同时,还要多亲手操作,光看资料并不能完全解决问题。
参考资料: 无
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询