无线充qi协议c语言详解,QI无线充通信协议数据包格式解析

无线充qi协议c语言详解,QI无线充通信协议数据包格式解析QI通信数据格式编码:协议规定时钟信号的频率应该是Fclk=2(4%)KHZ,所以每一位的传输时间约500us,如图所示数据0:500us的高电平,或者500us的低电平数据1:250us高电平+250us低电平,或者250us低电平+250us高电平电源接收端(移动设备端)采用11位异步串行格式传输数据字节数据编码格式为:起始位0、8位数据位、一个奇偶校验位(如果数据字节包含…

大家好,又见面了,我是你们的朋友全栈君。

QI通信数据格式编码:

4eb95779ac8fc257c7bfe1cad0b4a207.png协议规定时钟信号的频率应该是Fclk = 2(4%)KHZ,所以每一位的传输时间约500us,如图所示

数据 0:500us的高电平,或者500us的低电平

数据 1:250us高电平+250us低电平,或者250us低电平+250us高电平

电源接收端(移动设备端)采用 11 位异步串行格式传输数据字节

数据编码格式为:起始位0、 8 位数据位、一个奇偶校验位(如果数据字节包含偶数个 1 位,则奇偶校验位为 1。否则为零)和一个停止位1组成。——以值0x35为例:

322804e3988071ddf9be0c2bc7d88630.png

数据包结构:数据包格式由四部分组成:序言(序言最小为11位,最大为25位,序言全部为1),报头,消息和校验和。

说明:序言使功率发射器同步输入数据并准确检测报头的起始位。报头、消息和校验和由三个或更多字节组成的序列组成。

39bc7dfe4c90ad68b1100958db2e8946.png

上图为数据包格式

功率发射端在下列情况可视为正确接收到了数据包

1、功率发射器检测到至少 4 个前导位,后面跟着一个起始位。

2、功率发射器没有在组成数据包的任何字节中检测到奇偶校验错误(这包括头字节、消息字节和校验和字节)。

3、功率发射器检测到校验和字节的停止位。

4、功率发射器确定校验和字节是一致的。

说明:如果功率发射机没有正确接收到数据包,功率发射机应丢弃包,不使用其中包含的任何信息,(在 ping 阶段以及标识和配置阶段,这通常会导致超时,它使功率发射机消除功率信号)。

报头的组成:报头应该由一个表示包类型的字节组成。此外,报头是隐式的提供包中包含的消息的大小。

5524c45bae4d80a80e54a9585fe2276f.png消息的大小

9ca9726832278b6e25a97425199d66fa.png

数据包类型:

消息的组成:消息的第一个字节 B0,直接跟在报头后面。

校验和的组成:校验和由一个字节组成,可使功率发送端能够检查传输数据

错误。

功率变送器的校验和计算如下:

18d1d00bea54e40c89149644fd6437fb.png

说明:其中 C 表示计算的校验和,H 表示报头,B0, B1,…,Blast 表示消息。如果计算的校验和。

信号强度包(0x01)的组成:

42dff48081a01f8ba5b29b3b01229d42.png

该字段中的无符号整数值应该用于表示发射端和接收端的耦合程度,功率接收端应该在Ping期间监视适当变量的值,如整流电压,开路电压(在输出断开开关处测量),接收到的电源(如果在数字 Ping 过程中,整流电压被主动或被动箝位),该值应该随着耦合程度的增加而增加。信号强度值表示为:信号强度值=U/U(max)·256 在Ping 期间 U 是被监控的变量并且 max 是电源

接收器期望的最大值。

注:当 U≥最大值时,应将信号强度值设置为 255。

功率传输包(0x02)的组成:

e89fc2c79b8e1daab429ab95311d48e7.png

接收端功率传递值:

0x00———–请求发送端终止功率传递

0x01———–指示接收端电池充满电

0x02———–内部错误,软件或逻辑错误

0x03———–接收端设备内部温度过高

0x04———–接收端设备接收电压过高

0x05———–接收端设备电流过高

0x06———–接收端内部电池故障

0x07———–接收端请求重新配置

0x08———–数据错误

0x0A———–协商功率级别

0x0B———–异物检测

控制错误包(0x03)

72388589114fa0eb754f61a68b5dc887.png

只接收8位功率包 (0x04)

23d2cda46f9a9fd85665238ae2a8cb45.png

移动接收端接收到功率配置包。功率计算如下:接收功率=(接收功率值/128)X(最大功率值/2)x10(电源类型次方)W

这里,最大功率值和电源类型是配置包中包含的值

注:如果接收端没有收到配置包则将发送其自己的配置包。

充电状态包(0x05)

a2a2360c75e7511ef3e3055a6e597795.png

该字段中包含的整数表示该储能设备的充电水平,其百分比为充满电的能级。为清晰起见,值 0 表示一个空的能量存储设备,值 100 指充满电的储能装置。如果移动设备不包含可充电能源存储设备或如果电源接收器不能提供充电状态信息,此字段应包含 0 xff 价值。所有其他值均已保留,不应出现在充电状态包中。

电源控制保持包(0x06)

2c189a6242d7325a9affc24769bb294b.png

电源控制暂停时间。此字段中包含的无符号整数包含时间量在收到控制错误包后的几毫秒内,功率发送器应在此之前等待调整初级电池电流。

注:充电状态包是可选的,这意味着电源接收器可以选择不发送电荷状态数据包。

配置包 (0x51)

fe2abf5a835cf17f2321f20feba3b20f.png

Power Class该字段应设置为“00”。

Maximum Power Value该字段中包含的无符号整数值指示电源接收器期望在输出端提供的最大功率,此最大功率计算如下:

3a7f9cda8dea77c1f2e061e72793f535.png

Prop:如果该位设置为零,则电源发射机应避免发送响应。如果这个位是设置为 1 时,电源发射器应在配置结束后发送 ACK 响应

数据包向电源接收器表明它正在进入协商阶段。

Reserved:保留的这些位应该设置为零。

Count :这个字段包含一个无符号整数值,表示可选配置的数量电源接收器在识别和配置阶段传输的数据包。

8 位接收功率包(0x04)和 24 位接收功率包(0x31)

该字段中包含的整数值为接收到的功率值,即功率接收器

在接收到的功率包中报告的功率值

标识包(0x71)

bbd102a96ac820a0b619f59da8718e7d.png

此字段由主要版本和次要版本组成,用于确定要修改的版本电源接收器符合本规格

Manufacture Code:该字段中包含的位串标识电源的制造商接收器

Ext:

如果这个位设置为0,则位串制造商代码||基本设备标识符识别电源接收器。

如果这个位设置为 1,那么这个位串就是 1 制造商代码||基本设备标识符||扩

展设备标识符(扩展标识包(0x81))

无线电源ID包 (0x54和0x55)

7b5fe0f60856387cc093781c1bc657ef.png

CRC:此字段应包含 WPID 字段的循环冗余检查

WPID: 表示其中包含的 24 位字符串无线电源ID 包

扩展标识包(0x81)

a53c13989f5a9d51b82b9da182641070.png

用于延长设备标识符,该字段中包含的位串有助于标识电力接收器。

24位接收功率包(0x31)

5f9c7314b3f7e6c387bd5542d4d1f68d.png

Reserved:这些位应设为零.

Mode:该字段中的位串提供有关接收电源的附加信息。

10fa5e010bdfc7658528c729e4f7396e.png

Received Power Value:此字段中包含的无符号整数表示在时间窗口中,功率接收器通过其界面接收到的功率在配置包中指出。它表示为= (接收电源值/32768)×最大电源。在此计算中,功率发射器使用功率中包含的最大功率转让合同。接收到的结果是以瓦特为单位的。

只适用于一般请求包 (0x07)

1b62af7fb3d2125320572b54124827fb.png

此无符号整数值指示所请求的信息的类型。请求一个特定包,将请求字段

设置为该包的头。例如,请求电源发送器标识包,将请求字段设置为 0x30。

只特定请求包 (0x20)

4e882347806f43c3b092a9d6df084702.jpg

该字段中的无符号整数包含请求和请求参数,具体如下图

6eab2ba808843daab4f80f5fdae3a2fb.png

结束协商(0x00)

372344065e8ea90999b37db070005ce7.png

此字段中包含的无符号整数值提供在协商阶段修改的传输参数

保证功率(0x01)

9ccd288ccc0387ed78410db59f82b736.png

此字段包含所需的保证功率(单位为)0.5 W。例如,值 10 用于查询功率发射器是否支持保证功率值 30 查询,保证功率为 15 W。

接收到的数据包类型 (0x02)

a06707b42cf37d675a2726ade51e03b5.png

接收到的数据包报头。如这个字段应该设置为 0x31,表示电源接收器打算在功率

传输阶段使用 24 位接收的功率包。

FSK 参数 (0x03)61dadfdc4005d1ff5c09a248c830b497.png

Reserved:保留。这些位应设为零。

Polarity:该位为0指示功率发射机使用正的 FSK 极性。

Depth:该字段中包含的无符号整数选择 FSK 调制深度。

最大功率(0x04)

17e22488cb29e86ae895bea8ecc7cd68.png

Maximum Power Value:此字段中包含的整数值为功率接收器在接收到的功率包中报告的接收功率值,电源接收器应将此值设置为最大电量的两倍作为它期望在输出端提供的功率值。

FOD 状态包 (0x22)

58bbcc0386ba955c88aa5b41ff1d67b4.png

Mode:该字段表示功率接收器的工作模式,具体值如下表

04140430c631625d9390044d95fab529.png

重新协商包 (0x09)

baf25915ed3a4bf77d842a9dd5f9ff7f.png

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/150227.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 《使用QSortFilterProxyModel实现QTreeView行列过滤》:系列教程之十

    《使用QSortFilterProxyModel实现QTreeView行列过滤》:系列教程之十一、QSortFilterProxyModel简介QSortFilterProxyModel的使用比较简单,我们在上一章,使用它来实现排序时,已经大概使用过了。本章我们主要使用它实现对QTreeView中行列的筛选过滤。它是一个model代理类,需要配合原始数据model使用。我们先来看看QSortFilterProxyModel的设置过滤器函数,如下:voidsetFilterRegExp(constQRegExp&regExp);参数QRegExp正则表达式类,其构造函数,包括p

  • Java基础学习总结(20)——基础语法

    Java基础学习总结(20)——基础语法Java基础学习总结(20)——基础语法

  • 玩转SpringSession,重要知识点全面剖析(续篇)

    点击上方“全栈程序员社区”,星标公众号 重磅干货,第一时间送达 作者:怀瑾握瑜 www.cnblogs.com/lxyit/p/9672097.html 上一篇文章中介绍了Spri…

  • tcpdump抓包命令_tcpdump指定ip抓包命令

    tcpdump抓包命令_tcpdump指定ip抓包命令tcpdump是一个功能强大的命令行数据包分析器,它是通过监听服务器的网卡来获取数据包,所有通过网络访问的数据包都能获取到。它也提供了过滤器的功能,可以获取指定的网络、端口或协议的数据包程序员日常排查问题,最常用的是使用过滤器功能获取指定端口的数据包,用来分析服务器是否收到请求、请求数据是否完整。参数介绍tcpdump命令的参数很多,详见如下这里只介绍一些常用的参数​-ccount//count表示数量。抓取数据包的数量达到count后结束命令,如果不使用…

  • 按键精灵定位坐标循环_用按键精灵录制微信自动摇一摇脚本

    按键精灵定位坐标循环_用按键精灵录制微信自动摇一摇脚本金猪脚本(原飞猪脚本)以按键精灵教学为主,涉及UiBot,Python,Lua等脚本编程语言,教学包括全自动办公脚本,游戏辅助脚本,引流脚本,网页脚本,安卓脚本,IOS脚本,注册脚本,点赞脚本,阅读脚本以及网赚脚本等各个领域。想学习按键精灵的朋友可以添加金猪脚本粉丝交流群:554127455学习路上不再孤单,金猪脚本伴你一同成长.前面我们说了模拟器和应用app的安装,这里来说说另外一个重点,也是…

  • matlab求解微分方程组(matlab解微分方程的数值解)

    如何用matlab来求解简单的微分方程?举例来说明吧。求解三阶常微分方程。我们知道,求解高阶常微分方程可以化为求解一阶常微分方程组。编写函数eq3.m:%解常微分方程3*y”’+5*y”+6*sin(t)*y=costfunctionydot=eq3(t,y)ydot=[y(2);y(3);(cos(t)-5*y(3)-6*sin(t)*y(1))/3];其中,ydot为一个

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号