第二章-1-Wire通信协议复习课程
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4 读/写时隙
在写时隙期间,主机向单总线器件写入 数据;而在读时隙期间,主机读入来自 从机的数据。在每一个时隙,总线只能 传输一位数据
4 读/写时隙
Write 1 Write 0
M
Slave device(s) sample line
M
Slave device(s) sample line
Read 1
8-BIT F-CMD
R/W DATA
DEVICE(wk.baidu.com) PRESENCE PULSE MASTER RESET PULSE
RESET SEQUENCE
2 单总线命令序列
每次访问单总线器件,必须严格遵守这 个命令序列,如果出现序列混乱,则单 总线器件不会响应主机;
这个准则对于搜索ROM命令和报警搜索 命令例外,在执行两者中任何一条命令 之后,主机不能执行其后的功能命令, 必须返回至第一步。
M
S0…SN
Recovery
Legend:
Pull Up Master
Slave
Reset Pulse > 480uS
Presence Pulse
15uS<T<60uS 60uS<4T<240uS 45uS<3T<180uS
3.2 复位和应答脉冲
unsigned char ow_reset(void) { unsigned char presence; DQ = 0; //pull DQ line low delay(29); // leave it low for 480μs DQ = 1; // allow line to return high delay(3); // wait for presence presence = DQ; // get presence signal delay(25); // wait for end of timeslot return(presence); // presence signal returned } // presence
写入0。 写时隙至少需要60μs,且在两次独立的写时隙之间至
少需要1μs的恢复时间。 产生写1时隙的方式:主机在拉低总线后,接着必须在
15μs之内释放总线,由5k上拉电阻将总线拉至高电平; 而产生写0时隙的方式:在主机拉低总线后,只需在整
个时隙期间保持低电平即可(至少60μs)。 在写时隙起始后15-60μs期间,单总线器件采样总线电
第二章-1-Wire通信协议
1 概述
单总线要求外接一个约5k的上拉电阻 ;
1 概述
单总线的闲置状态为高电平 ; 传输过程需要暂时挂起,且要求传输过
程还能够继续的话,则总线必须处于空 闲状态 ; 总线保持低电平超过480μs,总线上的所 有器件将复位; 位传输之间的恢复时间没有限制,只要 总线在恢复期间处于空闲状态。
平状态。如果在此期间采样为高电平,则逻辑1被写入 该器件;如果为0,则写入逻辑0
4.2 写时序
4.3 写时序
void write_bit(char bitval) { DQ = 0; // pull DQ low to start timeslot if(bitval==1) DQ =1; // return DQ high if
若从机发送1,则保持总线为高电平;若发送0,则拉 低总线。当发送0时,从机在该时隙结束后释放总线, 由上拉电阻将总线拉回至空闲高电平状态。从机发出 的数据在起始时隙之后,保持有效时间15μs,因而, 主机在读时隙期间必须释放总线,并且在时隙起始后 的15μs之内采样总线状态。
Legend:
Pull Up Master
Slave
Read 0
M
Master samples line at 15uS
M
S0 … SN overdrive resistor
15uS < T < 60uS
T=0 T=15
T=60
4.1 写时隙
存在两种写时隙:“写1”和“写0”。 主机采用写1时隙向从机写入1,而采用写0时隙向从机
2 单总线命令序列
主机发起读写命令并控制整个过程。 读写命令分三个阶段: ✓ 初始化 ✓ ROM命令(跟随需要交换的数据) ✓ 功能命令(跟随需要交换的数据)
RESET SEQUENCE ROM CMD SEQUENCE FUNCTION SEQUENCE
8-BIT ROM CMD
ROM ID
3.1 初始化序列
主机初始化过程,主机通过拉低单总线至少480μs,以 产生(Tx)复位脉冲。接着,主机释放总线,并进入 接收模式(Rx)。
当总线被释放后,5k上拉电阻将单总线拉高。在单总 线器件检测到上升沿后,延时15-60μs,接着通过拉低 总线60-240μs,以产生应答脉冲
3.1 初始化序列
4.5 读时序
单总线器件仅在主机发出读时隙时,才向主机传输数 据,在主机发出读数据命令后,必须马上产生读时隙, 以便从机能够传输数据。
读时隙至少需要60μs,且在两次独立的读时隙之间至 少需要1μs的恢复时间。
每个读时隙都由主机发起,至少拉低总线1μs。在主机 发起读时隙之后,单总线器件才开始在总线上发送0或 1。
write 1 delay(5);// hold value for remainder of
timeslot DQ = 1; }// Delay provides 16μs per loop, plus 24μs Therefore, delay(5) = 104μs
4.4 写时序
void write_byte(char val) { unsigned char i; unsigned char temp; for (i = 0; i < 8; i++) // writes byte, one bit at a time { temp = val>>i; // shifts val right ‘i’ spaces temp &= 0x01; // copy that bit to temp write_bit(temp); // write bit in temp into } delay(5) }