HDQ单线通信协议时序解析
1,HDQ通信协议概述:
HDQ通信协议是美国德州仪器的单线通信协议。智能电池的检测模块就是用这个协议。在电池的负极与线路板的地之间串接一个检测电阻,电池电量检测模块芯片通过监测检测电阻的电压降来判断电池是处于充电还是放电状态。可以通过HDQ采集到电池电量、温度、电压、充电状态等信息. HDQ通信采用单总线、双向通信,开漏输出接口,该接口需要接一个上拉电阻一般3.3K--4.7K,使用一种基于命令的通信协议。 CPU和设备通过HDQ接口作为桥梁连接起来,还有一根地线,一共需要两根线就可以通信,节省硬件连线。 2,HDQ读写时序:
2.1 HDQ总线包括两部分:Break及Break 恢复和数据传输。在数据传输前都需要Break总线。 2.1.1 先是大于190us的低电平作为Break(tB),如果HDQ引脚保持低电平时间超过最小间断时间190μs,通信将会自动复位。 2.1.2 后面跟大于40us的高电平Break恢复(tBR),通信可以开始。在这以后就可以通过HDQ总线传输数据了。 2.1.3 传输数据一般传输2个字节,第一个字节是命令,第二个字节是数据字节。
2.2 CPU发送8位指令码给智能电池,这个8位的指令码由两部分组成,指令码的前7位是寄存器地址,最后1位(最高位)是读/写指令。读/写位,0代表读操作,1代表写操 作。如果是写指令指示智能电池存储接下来的8位数据到一个指定的寄存器,如果是读命令就从指定寄存器输出8位数据给CPU。命令或数据字节的最低有效位先传输。 2.3 逻辑0和逻辑1是通过低电平的保持时间不同来区分。每位的传输分3步完成: 三部分组成 1 2 3、
2.3.1 、第一部分启动传输。通过主机或者 HDQ设备 将 HDQ 引脚置逻辑低一段时间大约 t (hw1)或 t(dw1) 。 2.3.2 、 第二部分是实际数据传输,数据在 t(hw0)~t(hw1)之间或者 t(dw0)~t(dw1) 应该保持有效,让处理器或者HDQ设备模块读写; 2.3.3 、 第三部分停止传输将HDQ 引脚设置逻辑高状态。通过将HDQ引脚置成高电平来实现,停止时间由t(hw0)与tCYCH共同决定,时序时间均以开始传输的负电平边缘算起。下面是图解
2.4 处理器给智能电池发送命令和数据时每一位的周期tCYCH要大于190us 2.4.1 逻辑“1”是将HDQ引脚发送大于0.5小于50us的低电平表示 (tHW1)
2.4.2 逻辑“0”是将HDQ引脚发送大于86us小于145us的低电平表示(tHW0)
2.5 智能电池给处理器发送数据时每一位的周期tCYCH要大于190us小于250us 2.5.1 逻辑“1”是将HDQ引脚发送大于32us小于50us的低电平表示 (tDW1)
2.5.2 逻辑“0”是将HDQ引脚发送大于80us小于145us的低电平表示(tDW0) 2.6 时序图
2.7 实际的时序图--给0x34寄存器写入0x15的数据
在一个写周期,地址位或数据位之间的时段里,HDQ总线可以保持高电平。
在一个读周期,当指定所读寄存器地址的最后1位传送完后,还需要等待指定的响应时间tRSPS,芯片才输出数据到总线。
响应时间tRSPS是指从读写位的下降沿到芯片返回数据的第1个数据位的下降沿这个时间段,
因此包括整个读/写位时间,因为最小的响应时间等于最小的位周期时间,这就意味着第1个数据位可以在命令R/W位一结束就开始传送。一般tRSPS大于190us小于320us。
HDQ协议包括HDQ8协议和HDQ16协议。HDQ16与HDQ8协议的位时序是相同的,只是读写的是16位数据而不是8位。
HDQ16协议的命令字仍然是一个7位的地址加一个读写位。
HDQ可靠通信的设计方法是在每次通信前先有一个间断,确保在每次通信前系统复位,以此来降低错误数据的读写几率。 3.软件实现 软件可以利用CPU的HDQ控制器和或者利用GPIO模拟HDQ协议。发命令的时候GPIO作为普通GPIO的输出口。读命令的时候第一字节用GPIO输出发送8bit的命令,发完命令后改变GPIO的方向作为输入口读8bit数据。
由于HDQ通信是靠高低电平的时间宽度来代表0和1,对时序要求高,通信过程要将中断关闭,防止被打断引起时序错乱导致通信出错。
|