一种通过软件实现PD协议PHY层的方法和MCU与流程

未命名 10-08 阅读:105 评论:0

一种通过软件实现pd协议phy层的方法和mcu
技术领域
1.本发明涉及数据处理技术领域,具体涉及一种通过软件实现pd协议phy层的方法和mcu。


背景技术:

2.pd(power delivery)协议是usb协会通过typec接口来统一连接头而发展出的充电协议,其实质是充电器(source端)和被充电设备(sink端)相互握手和交换信息的过程,其中typec接口上有专门用数据报文传递的cc线,phy层(物理层)的负责报文传递和接收,数据报文的传输频率是300khz(协议规定270k到330k之间都是运行的)。
3.pd协议报文的格式如图1所示,其中:
4.preamble由64个0和1交替组成,不能用4b/5b编码;
5.sop(start of packe sequence)由4个k字符组成,一共20bit,这20bit可以允许单bit错误,接收侧需要有纠错机制;
6.message header和bytex是净荷,由协议层传递,此部分需要进行4b/5b转换;
7.crc是由物理层追加的crc32校验,一共32bit,同样需要4b/5b转换;
8.eop是一个0xd字符,只有5bit。
9.由于cc线上是以半双工模式传递数据报文,因此物理层还需要避免冲突的机制,依次减少交互错误的发生。而这就导致在数据报文的发送侧具有以下功能:1、从协议层接收待发送报文;2、计算并追加crc32;3、对数据打包(增加前导码、报文头、crc和结束码);4、对数据进行4b到5b(nmc)的转换,并发送报文。同时也需要让数据报文的接收侧具有以下功能:1、恢复时钟,并锁定前导码;2、检测sop*;3、对报文进行5b到4b转换;4、检测结束码(eop),并根据报文携带的crc32来判断报文是否错误。
10.对于现有的pd协议芯片,基于实际要求分别通过32位mcu、8位mcu或者纯硬件实现,其中32位mcu的成本最高,纯硬件实现的方案成本低,但是灵活性较差,而8位mcu可以兼顾灵活性和成本。但是在pd协议phy层的实现上,由于pd协议需要有纠错功能和crc32的算法,因此一般常见大多通过硬件实现,而这增加了成本。


技术实现要素:

11.鉴于背景技术的不足,本发明是提供了一种通过软件实现pd协议phy层的方法和mcu,所要解决的技术问题是现有pd协议通过硬件实现,成本较高。
12.为解决以上技术问题,本发明提供了如下技术方案:一种通过软件实现pd协议phy层的方法,包括以下步骤:
13.s1:检测typec接口的cc线是否拉低,如果cc线拉低则执行步骤s2;
14.s2:检测是否接收到前导码数据,如果接收到前导码数据则判断接收的前导码数据是否符合前导码判断要求,如果符合则执行步骤s3;
15.s3:搜寻sop的第一个k字符,在找到第一个k字符后搜寻sop的第二个k字符,在找
到第二个k字符后先接收15bit数据,然后执行步骤s4;在搜寻不到第一个k字符或者搜寻不到第二个k字符后判断是否有bmc信号,如果有bmc信号则再次执行步骤s3,如果没有bmc信号则结束步骤s3;
16.s4:判断是否有bmc信号,如果有则执行步骤s5,反之则结束步骤s4;
17.s5:判断接收的5bit数据是否等于0xd,如果等于则执行步骤s7,反之则执行步骤s6;
18.s6:包括以下步骤:
19.s60:对接收的5bit数据进行5b/4b转换,并接收1bit数据;
20.s61:基于步骤s60接收的1bit数据更新32位校验数据,并接收1bit数据;
21.s62:基于步骤s61接收的1bit数据更新32位校验数据,并接收1bit数据;
22.s63:基于步骤s62接收的1bit数据更新32位校验数据,并接收1bit数据;
23.s64:基于步骤s63接收的1bit数据更新32位校验数据,并接受1bit数据;
24.s65:返回步骤s4;
25.s7:对32位校验数据进行校验。
26.在某种实施方式中,在步骤s2中通过判断是否有bmc信号来判断是否接收到前导码数据,如果有bmc信号则认为接受到前导码数据,并将前导码数据转换为数据0或者数据1。
27.在某种实施方式中,所述前导码判断要求是指判断转换后的前导码数据是否等于0x55或者0xaa。
28.在某种实施方式中,步骤s3中搜寻sop的第一个k字符和第二个k字符的方法如下:
29.s30:判断最近接收的5bit数据是否等于0x18,如果等于则认为找到第一个k字符,然后执行步骤s31,反之则执行步骤s32;
30.s31:判断随后接收的5bit数据是否等于0x18、0x08、0x10、0x1c、0x1a或者0x19,如果等于则找到了第二个k字符,如果不等于则执行步骤s34;
31.s32:判断最近接收的5bit数据是否等于0x08、0x10、0x1c、0x1a或者0x19,如果等于则认为找到了第一个k字符,然后执行步骤s33,反之则执行步骤s34;
32.s33:判断随后接收的5bit数据是否等于0x18,如果等于则认为找到了第二个k字符,如果不等于则执行步骤s34;
33.s34:判断最近接收的5bit数据是否等于0x0d,如果等于则结束步骤s34,如果不等于则执行步骤s35,如果等于则结束步骤34;
34.s35:判断是否有bmc信号,如果有bmc信号则执行步骤s30,反之则结束步骤s35。
35.在某种实施方式中,步骤s7中通过判断32位校验数据与0x04c11db7是否相等来进行校验,如果等于则认为接收到的报文正确,反之则认为接收的报文错误。
36.另外本发明还提供了一种mcu,该mcu包括实现pd协议phy层的方法的软件。其中,mcu可以是8位mcu。
37.本发明与现有技术相比所具有的有益效果是:首先本发明通过软件实现pd协议的phy层,减少了pd协议芯片中实现phy层的硬件,从而可以降低pd协议芯片的面积和成本;另外由于通过软件实现,整体灵活性高,可以降低phy层对pd协议芯片的限制,从而可以根据实际需求来定制报文提取;最后通过软件方法实现phy层,降低了芯片硬件难度和仿真难
度,而且在芯片流片前不用考虑phy层的设计。
附图说明
38.图1为现有pd协议报文的结构示意图;
39.图2为bmc转换的结构示意图;
40.图3为实施例中的本发明的流程图;;
41.图4为本发明的步骤s3的流程图。
具体实施方式
42.现在结合附图对本发明作进一步详细的说明。这些附图均为简化的示意图,仅以示意方式说明本发明的基本结构,因此其仅显示与本发明有关的构成。
43.对于现有的pd协议芯片,其phy层的实现大多通过硬件实现,而硬件实现一方面需要占用较多的芯片面积,另一方面会限制pd协议芯片的使用,不能灵活满足各种使用需求。另外数据报文是在typec接口的cc线上传输的,而且数据报文传输时还需要进行bmc转换,这样可以利于接收端恢复接收时钟,其中bmc的转换格式如图2所示。
44.为了解决通过硬件实现phy层带来的不足,如图3所示,本发明提供了一种通过软件实现pd协议phy层的方法,包括以下步骤:
45.s1:检测typec接口的cc线是否拉低,如果cc线拉低则执行步骤s2。
46.s2:检测是否接收到前导码数据,如果接收到前导码数据则判断接收的前导码数据是否符合前导码判断要求,如果符合则执行步骤s3。
47.从图1中可以知道,前导码数据由64位交替的0和1组成,而前导码数据是在bmc转换后再从cc线上传递的,因此在步骤s2中,可以通过判断是否有bmc信号来判断是否接收到前导码数据,在接收到前导码数据后,对前导码数据进行转换,将其转换为对应的0或者1,将转换后的数据作为前导码转换数据。
48.由于cc线上的数据是一位一位进行传输的,因此可以基于接收到的前导码转换数据来判断传输的前导码数据是否正确。具体地,前导码转换数据有以下两种分布方式,分别为0101010101
……
和10101010
……
,因此对接收地前导码转换数据进行判断则能知道是否接受到正确地前导码数据,例如选取最近接受的八位数据,如果这八位数据对应的十六进制数据是0x55或者0xaa,则认为接收的前导码数据正确。另外如果最近接收的前导码数据不足八位时,可以继续接收前导码数据,另外在继续接受前导码数据时,如果没有bmc信号则结束步骤s2。
49.在某种实施方式中,可以选取最近接收的十六位前导码数据进行判断,并不一定局限于八位数据。
50.s3:搜寻sop的第一个k字符,在找到第一个k字符后搜寻sop的第二个k字符,在找到第二个k字符后先接收15bit数据,然后执行步骤s4;在搜寻不到第一个k字符或者搜寻不到第二个k字符后判断是否有bmc信号,如果有bmc信号则再次执行步骤s3,如果没有bmc信号则结束步骤s3。
51.在图1所示的pd协议报文的结构中,当前导码数据发送完成后,会发送sop数据,另外对于dfp模式的充电器来说,只需处理报文的起始序列,其中sop的数据如表1所示:
52.表1
[0053][0054]
基于此,如图4所示,步骤s3中搜寻sop的第一个k字符和第二个k字符的方法如下:
[0055]
s30:判断最近接收的5bit数据是否等于0x18,如果等于则认为找到第一个k字符,然后执行步骤s31,反之则执行步骤s32;
[0056]
s31:判断随后接收的5bit数据是否等于0x18、0x08、0x10、0x1c、0x1a或者0x19,如果等于则找到了第二个k字符,如果不等于则执行步骤s34;
[0057]
s32:判断最近接收的5bit数据是否等于0x08、0x10、0x1c、0x1a或者0x19,如果等于则认为找到了第一个k字符,然后执行步骤s33,反之则执行步骤s34;
[0058]
s33:判断随后接收的5bit数据是否等于0x18,如果等于则认为找到了第二个k字符,如果不等于则执行步骤s34;
[0059]
s34:判断最近接收的5bit数据是否等于0x0d,如果等于则结束步骤s34,如果不等于则执行步骤s35,如果等于则结束步骤34;
[0060]
s35:判断是否有bmc信号,如果有bmc信号则执行步骤s30,反之则结束步骤s35。
[0061]
s4:判断是否有bmc信号,如果有则执行步骤s5,反之则结束步骤s4。
[0062]
s5:判断接收的5bit数据是否等于0xd,如果等于则执行步骤s7,反之则执行步骤s6;其中0xd属于pd协议报文的结束内容,因此通过判断最近接受的5bit数据是否等于0xd可以判断报文是否接收完成。
[0063]
s6:包括以下步骤:
[0064]
s60:对接收的5bit数据进行5b/4b转换,并接收1bit数据;
[0065]
s61:基于步骤s60接收的1bit数据更新32位校验数据,并接收1bit数据;
[0066]
s62:基于步骤s61接收的1bit数据更新32位校验数据,并接收1bit数据;
[0067]
s63:基于步骤s62接收的1bit数据更新32位校验数据,并接收1bit数据;
[0068]
s64:基于步骤s63接收的1bit数据更新32位校验数据,并接受1bit数据;
[0069]
s65:返回步骤s4。
[0070]
在实际使用时,对于本发明的步骤s6,其通过在对上一次接收的1bit数据更新32位校验数据时在同时接收新的1bit数据,可以提高整体的运算速度,提高处理效率。
[0071]
s7:对32位校验数据进行校验。
[0072]
具体地,本实施例中,步骤s7中通过判断32位校验数据与0x04c11db7是否相等,如
果等于则认为接收到的报文正确,反之则认为接收的报文错误。
[0073]
综上,本发明的方法首先通过软件实现pd协议的phy层,减少了pd协议芯片中实现phy层的硬件,从而可以降低pd协议芯片的面积和成本;另外由于通过软件实现,整体灵活性高,可以降低phy层对pd协议芯片的限制,从而可以根据实际需求来定制报文提取;最后通过软件方法实现phy层,降低了芯片硬件难度和仿真难度,而且在芯片流片前不用考虑phy层的设计。
[0074]
另外本发明还提供了一种mcu,该mcu包括实现pd协议phy层的方法的软件。其中,mcu可以是8位mcu。
[0075]
上述依据本发明为启示,通过上述的说明内容,相关工作人员完全可以在不偏离本项发明技术思想的范围内,进行多样的变更以及修改。本项发明的技术性范围并不局限于说明书上的内容,必须要根据权利要求范围来确定其技术性范围。

技术特征:
1.一种通过软件实现pd协议phy层的方法,其特征在于,包括以下步骤:s1:检测typec接口的cc线是否拉低,如果cc线拉低则执行步骤s2;s2:检测是否接收到前导码数据,如果接收到前导码数据则判断接收的前导码数据是否符合前导码判断要求,如果符合则执行步骤s3;s3:搜寻sop的第一个k字符,在找到第一个k字符后搜寻sop的第二个k字符,在找到第二个k字符后先接收15bit数据,然后执行步骤s4;在搜寻不到第一个k字符或者搜寻不到第二个k字符后判断是否有bmc信号,如果有bmc信号则再次执行步骤s3,如果没有bmc信号则结束步骤s3;s4:判断是否有bmc信号,如果有则执行步骤s5,反之则结束步骤s4;s5:判断接收的5bit数据是否等于0xd,如果等于则执行步骤s7,反之则执行步骤s6;s6:包括以下步骤:s60:对接收的5bit数据进行5b/4b转换,并接收1bit数据;s61:基于步骤s60接收的1bit数据更新校验数据,并接收1bit数据;s62:基于步骤s61接收的1bit数据更新校验数据,并接收1bit数据;s63:基于步骤s62接收的1bit数据更新校验数据,并接收1bit数据;s64:基于步骤s63接收的1bit数据更新校验数据,并接受1bit数据;s65:返回s4;s7:对32位校验数据进行校验。2.根据权利要求1所述的一种通过软件实现pd协议phy层的方法,其特征在于,在步骤s2中通过判断是否有bmc信号来判断是否接收到前导码数据,如果有bmc信号则认为接受到前导码数据,并将前导码数据转换为数据0或者数据1。3.根据权利要求2所述的一种通过软件实现pd协议phy层的方法,其特征在于,所述前导码判断要求是指判断转换后的前导码数据是否等于0x55或者0xaa。4.根据权利要求1所述的一种通过软件实现pd协议phy层的方法,其特征在于,步骤s3中搜寻sop的第一个k字符和第二个k字符的方法如下:s30:判断最近接收的5bit数据是否等于0x18,如果等于则认为找到第一个k字符,然后执行步骤s31,反之则执行步骤s32;s31:判断随后接收的5bit数据是否等于0x18、0x08、0x10、0x1c、0x1a或者0x19,如果等于则找到了第二个k字符,如果不等于则执行步骤s34;s32:判断最近接收的5bit数据是否等于0x08、0x10、0x1c、0x1a或者0x19,如果等于则认为找到了第一个k字符,然后执行步骤s33,反之则执行步骤s34;s33:判断随后接收的5bit数据是否等于0x18,如果等于则认为找到了第二个k字符,如果不等于则执行步骤s34;s34:判断最近接收的5bit数据是否等于0x0d,如果等于则结束步骤s34,如果不等于则执行步骤s35,如果等于则结束步骤34;s35:判断是否有bmc信号,如果有bmc信号则执行步骤s30,反之则结束步骤s35。5.根据权利要求1所述的一种通过软件实现pd协议phy层的方法,其特征在于,步骤s7中通过判断32位校验数据与0x04c11db7是否相等来进行校验,如果等于则认为接收到的报文正确,反之则认为接收的报文错误。
6.一种mcu,其特征在于,包括实现权利要求1-5任一项所述实现pd协议phy层的方法的软件。7.根据权利要求6所述的一种mcu,其特征在于,所述mcu为8位mcu。

技术总结
本发明涉及数据处理技术领域,公开了一种通过软件实现PD协议PHY层的方法和MCU,其中本发明的方法通过依次检测是否有前导码数据、在接收的数据中查找SOP字符和查询EOP数据并在查找到SOP和查找到EOP数据前对接收的数据更新校验数据,从而通过软件方式实现了PD协议的PHY层,而通过这样操作减少了PD协议芯片中实现PHY层的硬件,从而可以降低PD协议芯片的面积和成本;另外由于通过软件实现,整体灵活性高,可以降低PHY层对PD协议芯片的限制,从而可以根据实际需求来定制报文提取。以根据实际需求来定制报文提取。以根据实际需求来定制报文提取。


技术研发人员:徐春 汪德文 徐舜 陈杰
受保护的技术使用者:无锡众享科技有限公司
技术研发日:2023.06.28
技术公布日:2023/10/5
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐