DS18B20时序Word文档下载推荐.docx
- 文档编号:14681260
- 上传时间:2022-10-23
- 格式:DOCX
- 页数:11
- 大小:119.08KB
DS18B20时序Word文档下载推荐.docx
《DS18B20时序Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《DS18B20时序Word文档下载推荐.docx(11页珍藏版)》请在冰豆网上搜索。
Duringtheinitializationsequencethebusmastertransmits(TX)theresetpulsebypullingthe1-Wirebuslowforaminimumof480μs.Thebusmasterthenreleasesthebusandgoesintoreceivemode(RX).
在初始化步骤中,总线上的主机通过拉低单总线至少480μs来产生复位脉冲。
然后总线主机释放总线并进入接收模式。
Whenthebusisreleased,the5kΩpullupresistorpullsthe1-Wirebushigh.WhentheDS18B20detectsthisrisingedge,itwaits15μsto60μsandthentransmitsapresencepulsebypullingthe1-Wirebuslowfor60μsto240μs.
当总线释放后,5kΩ的上拉电阻把单总线上的电平拉回高电平。
当DS18B20检测到上升沿后等待15到60us,然后以拉低总线60-240us的方式发出存在脉冲。
如文档所述,主机将总线拉低最短480us,之后释放总线。
由于5kΩ上拉电阻的作用,总线恢复到高电平。
DS18B20检测到上升沿后等待15到60us,发出存在脉冲:
拉低总线60-240us。
至此,初始化和存在时序完毕。
根据上述要求编写的复位函数为:
首先是延时函数:
(由于DS18B20延时均以15us为单位,故编写了延时单位为15us的延时函数,注意:
以下延时函数晶振为12MHz)
/*
************************************
函数:
Delayxus_DS18B20
功能:
DS18B20延时函数
参数:
t为定时时间长度
返回:
无
说明:
延时公式:
15n+15(近似),晶振12Mhz
******************************************
*/
voidDelayxus_DS18B20(unsignedintt)
{
for(t;
t>
0;
t--)
{
_nop_();
_nop_();
}
_nop_();
}
延时函数反汇编代码(方便分析延时公式)
C:
0x00317F01MOVR7,#0x01
0x00337E00MOVR6,#0x00
0x00351206A6LCALLdelayxus(C:
06A6)
38:
voidDelayxus_DS18B20(unsignedintt)
39:
{
40:
t--)
0x06A6D3SETBC
0x06A7EFMOVA,R7
0x06A89400SUBBA,#0x00
0x06AAEEMOVA,R6
0x06AB9400SUBBA,#0x00
0x06AD400BJCC:
06BA
41:
42:
0x06AF00NOP
0x06B000NOP
0x06B100NOP
0x06B200NOP
43:
0x06B3EFMOVA,R7
0x06B41FDECR7
0x06B570EFJNZDelayxus_DS18B20(C:
0x06B71EDECR6
0x06B880ECSJMPDelayxus_DS18B20(C:
44:
0x06BA00NOP
0x06BB00NOP
45:
0x06BC22RET
分析上述反汇编代码,可知延时公式为15*(t+1)
RST_DS18B20
复位DS18B20,读取存在脉冲并返回
1:
复位成功;
0:
复位失败
拉低总线至少480us;
可用于检测DS18B20工作是否正常
bitRST_DS18B20()
{
bitret="
1"
;
DQ=0;
/*拉低总线*/
Delayxus_DS18B20(32);
/*为保险起见,延时495us*/
DQ=1;
/*释放总线,DS18B20检测到上升沿后会发送存在脉冲*/
Delayxus_DS18B20(4);
/*需要等待15~60us,这里延时75us后可以保证接受到的是存在脉冲(如果通信正常的话)*/
ret=DQ;
Delayxus_DS18B20(14);
/*延时495us,让ds18b20释放总线,避免影响到下一步的操作*/
/*释放总线*/
return(~ret);
写时序:
READ/WRITETIMESLOTS
读写时隙
ThebusmasterwritesdatatotheDS18B20duringwritetimeslotsandreadsdatafromtheDS18B20duringreadtimeslots.Onebitofdataistransmittedoverthe1-Wirebuspertimeslot.
主机在写时隙向DS18B20写入数据,并在读时隙从DS18B20读入数据。
在单总线上每个时隙只传送一位数据。
WRITETIMESLOTS
写时间隙
Therearetwotypesofwritetimeslots:
“Write1”timeslotsand“Write0”timeslots.ThebusmasterusesaWrite1timeslottowritealogic1totheDS18B20andaWrite0timeslottowritealogic0totheDS18B20.Allwritetimeslotsmustbeaminimumof60μsindurationwithaminimumofa1μsrecovery
timebetweenindividualwriteslots.Bothtypesofwritetimeslotsareinitiatedbythemasterpullingthe1-Wirebuslow(seeFigure14).
有两种写时隙:
写“0”时间隙和写“1”时间隙。
总线主机使用写“1”时间隙向DS18B20写入逻辑1,使用写“0”时间隙向DS18B20写入逻辑0.所有的写时隙必须有最少60us的持续时间,相邻两个写时隙必须要有最少1us的恢复时间。
两种写时隙都通过主机拉低总线产生(见插图14)。
TogenerateaWrite1timeslot,afterpullingthe1-Wirebuslow,thebusmastermustreleasethe1-Wirebuswithin15μs.Whenthebusisreleased,the5kΩpullupresistorwillpullthebushigh.TogenerateaWrite0timeslot,afterpullingthe1-Wirebuslow,thebusmastermustcontinuetoholdthebuslowfor
thedurationofthetimeslot(atleast60μs).
为产生写1时隙,在拉低总线后主机必须在15μs内释放总线。
在总线被释放后,由于5kΩ上拉电阻的作用,总线恢复为高电平。
为产生写0时隙,在拉低总线后主机必须继续拉低总线以满足时隙持续时间的要求(至少60μs)。
TheDS18B20samplesthe1-Wirebusduringawindowthatlastsfrom15μsto60μsafterthemasterinitiatesthewritetimeslot.Ifthebusishighduringthesamplingwindow,a1iswrittentotheDS18B20.Ifthelineislow,a0iswrittentotheDS18B20.
在主机产生写时隙后,DS18B20会在其后的15到60us的一个时间窗口内采样单总线。
在采样的时间窗口内,如果总线为高电平,主机会向DS18B20写入1;
如果总线为低电平,主机会向DS18B20写入0。
如文档所述,所有的写时隙必须至少有60us的持续时间。
相邻两个写时隙必须要有最少1us的恢复时间。
所有的写时隙(写0和写1)都由拉低总线产生。
为产生写1时隙,在拉低总线后主机必须在15us内释放总线(拉低的电平要持续至少1us)。
由于上拉电阻的作用,总线电平恢复为高电平,直到完成写时隙。
为产生写0
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DS18B20 时序