首页> 中国专利> 一种SWIM协议解析方法及系统

一种SWIM协议解析方法及系统

摘要

本发明公开了一种SWIM协议解析方法及系统,方法读取字节数大于等于1后开始解析数据,通过TIM输入捕获触发DMA硬件传输的方法来解析数据,解析了10bit协议后重新接收数据进行解析;系统通过控制模块控制其他模块并执行协议解析方法,传输模块分别与控制模块和SWIM接口连接,能够有效接收SWIM协议的数据并用本申请中的SWIM协议解析方法进行解析。本发明的有益效果是,可以对SWIM协议有效解析;TIM输入捕获触发DMA硬件传输,不需要频繁进入中断;解析稳定度高。

著录项

  • 公开/公告号CN117609134A

    专利类型发明专利

  • 公开/公告日2024-02-27

    原文格式PDF

  • 申请/专利权人 浙江先芯科技有限公司;

    申请/专利号CN202311052565.X

  • 发明设计人

    申请日2023-08-21

  • 分类号G06F13/42;

  • 代理机构杭州杭诚专利事务所有限公司;

  • 代理人王江成

  • 地址 311701 浙江省杭州市淳安县千岛湖镇珍珠半岛

  • 入库时间 2024-04-18 19:59:31

说明书

技术领域

本发明涉及数据传输技术领域,特别是涉及一种SWIM协议解析方法及系统。

背景技术

SWIM接口是意法半导体STM8系列处理器的烧写接口,SWIM接口只需要一根传输线,即可完成双向的传输。SWIM协议使用归零码,且支持两种速率,高速模式和低速模式。现有的SWIM协议解析方法包括两种:A方案:在读取1个bit时,识别到下降沿,延时半个bit的时间,直接读取电平,从而判断该bit的逻辑电平是1还是0;B方案:下降沿触发进入中断,开始定时器计时,在上升沿中断读取定时时间从而判断该bit的逻辑电平是0还是1。A方案在实际应用中会出现不稳定的问题,在干扰严重的环境下,会导致通讯出错误判。B方案频繁进入中断,导致MCU占用率高,需要高性能MCU,MCU选型成本高。

公开日为2022年4月12日,公开号为CN113434437B的中国专利文献公开了一种接口协议数据解析方法及系统,解析方法,包括:载入接口协议数据中一级StructDefinitions节点下的所有二级FieldDef节点,组成二级FieldDef节点集合;判断二级FieldDef节点集合是否为空;若为否,则从二级FieldDef节点集合中按顺序依次取出一个二级FieldDef节点,并从二级FieldDef节点集合中删除;判断二级FieldDef节点是否包含reference字段且字段值为true;若为是,则找到与二级FieldDef节点identity字段值相同的二级StructDef节点;判断二级StructDef节点下的structtype字段值是否为virtual;若为是,则启动virtual类型的StructDef解析流程;若为否,则启动struct类型的StructDef解析流程;解析流程完成后,判断已解析bit流接口协议数据位数是否等于bit流接口协议数据长度;若为是,则解析流程结束。

上述接口协议数据解析方法及系统的缺点是:对于SWIM接口的数据解析来说,由于SWIM协议通过上升沿与下降沿来判断电平,而该接口协议数据解析方法通过字段值判断解析,所以无法对于SWIM接口的数据进行有效解析。

发明内容

本发明的目的是为解决现有协议解析方法及系统的无法有效对SWIM协议进行解析,而现有的SWIM协议解析方法对MCU性能要求高和不稳定的问题,提供一种SWIM协议解析方法及系统,TIM输入捕获触发DMA硬件传输的方法,具有可以对SWIM协议有效解析、解析稳定度高、不需要频繁进入中断的优点。

本发明为解决上述技术问题所采用的技术方案是,第一方面:一种SWIM协议解析方法,包括如下步骤:判断读取字节数是否大于等于1,若读取字节数小于1,则继续读取数据;若读取字节数大于等于1,则开始解析数据;判断10bit协议是否解析完成,若解析未完成,则继续解析数据;若解析完成,则判断全部数据是否解析完成;若全部数据解析未完成则返回接收数据,否则结束;其中,所述解析数据使用TIM输入捕获触发DMA硬件传输的方法。

使用上述第一方面的技术方案,读取字节数大于等于1后开始解析数据,通过TIM输入捕获触发DMA硬件传输的方法来解析数据,解析了10bit协议后重新接收数据进行解析,可以对SWIM协议有效解析,并且解析稳定度高、不需要频繁进入中断。

在第一方面中,作为优选,SWIM发送数据地址之前还包括:初始化外设;SWIM发送数据地址;接收数据;其中,所述初始化外设是对处理器进行设置。具体的,初始化外设是对控制模块中的处理器进行所需要的设置,包括对于串口映射及计数值缓存的设置,而SWIM发送的数据地址通过IO口传输。这样,在进行数据的解析之前,首先对处理器进行了需要的设置,是SWIM协议的数据能够传输的前提,保证了本方法能够对SWIM协议有效解析。

在第一方面中,作为优选,解析数据包括:设置阈值;存储数据;上升沿的TIM1计数值减去下降沿的TIM1计数值得到差值;比较所得差值与所述阈值的大小;若所得差值大于所述阈值,则记录该bit为逻辑电平1;若所得差值小于等于所述阈值,则记录该bit为逻辑电平0。具体的,SWIM协议使用归零码,且支持两种速率,高速模式和低速模式。这两种模式都是使用8M的clock同步,高速模式下,2个低电平加8个高电平表示1;8个低电平加2个高电平表示0;低速模式下,2个低电平加20个高电平表示1;20个低电平加2个高电平表示0,而阈值的设置是根据SWIM协议使用的是低速还是告诉模式分别设置不同的阈值,通过阈值可以判断该bit是0或1。这样可以不使用中断进行对每个bit的电平判断,并且解析稳定度高。

在第一方面中,作为优选,初始化外设包括:设置串口映射到TIM2-CH3,下降沿触发DMA传输,每次下降沿触发TIM1的COUNT计数值到内部缓存;设置另一串口映射到TIM4-CH2,上升沿触发DMA传输,每次上升沿触发TIM1的COUNT计数值到内部缓存。具体的,初始化外设时,SWIM引脚默认是高电平,设置PB10映射到TIM2-CH3,并设置为下降沿触发DMA传输,每一次下降沿触发TIM1的COUNT计数值到内部RAM BUF1缓存,同时设置PB7映射到TIM4-CH2,并设置为上升沿触发DMA传输,每一次上升沿触发TIM1的COUNT计数值到内部RMABUF2缓存。这样,外设初始化后,将对下降沿触发TIM1的COUNT计数值和上升沿触发TIM1的COUNT计数值进行记录,使得数据的解析更加稳定,并且无需进入中断。

在第一方面中,作为优选,判断读取字节数是否大于1包括:判断TIM2-CH3下降沿的TIM1计数值是否大于等于10;若计数值大于等于10,则字节数大于1;若计数值小于10,则字节数小于1。具体的,字节即byte,一般一个字节存储8位无符号数,本方法中除了无符号数之外还包含处理器内部的数,所以通过判断TIM2-CH3下降沿的TIM1计数值是否大于等于10来判断读取的字节数是否已经大于1,即本方法中数据解析的最小单位是1字节,接收1字节的数据之后开始处理数据,同时数据接收的过程也是在进行中的。这样,每当接收1字节的数据之后就开始处理数据,数据处理连贯并且稳定性好。

在第一方面中,作为优选,判断10bit协议是否解析完成包括:判断TIM4-CH2上升沿触发DMA计数值与TM2-CH3下降沿触发事件DMA计数值是否相等;若相等,则10bit协议解析完成;若不相等,则10bit协议解析未完成。具体的,TIM4-CH2上升沿触发DMA计数值与TM2-CH3下降沿触发事件DMA计数值相等时,则表明已经解析了10bit的数据,也就是说本方法以10bit的数据为一组,在接收了10bit的数据之后,判断是否接收完全部数据然后继续接收数据。这样,以10bit的数据为一组,按照一组来解析数据,稳定性更高。

在第一方面中,作为优选,协议解析方法通过检测是否还有接收数据判断全部数据是否解析完成。

第二方面:一种SWIM协议解析系统,应用上述第一方面中的SWIM协议解析方法,其特征在于,包括:控制模块,用于控制其他模块并执行协议解析方法;传输模块,用于信息的传输;其中,在控制模块中还包含有存储器,用来存储得到的计数值。

使用上述第二方面的技术方案,系统通过控制模块控制其他模块并执行协议解析方法,传输模块分别与控制模块和SWIM接口连接,能够有效接收SWIM协议的数据并用第一方面中的SWIM协议解析方法进行解析。

在第二方面中,作为优选,控制模块包括处理器,所述传输模块与控制模块连接。具体的,传输模块包括IO口,传输模块与控制模块和SWIM接口均有连接。这样,通过IO口进行数据的输出和输入,更加稳定。

本发明一种SWIM协议解析方法及系统,系统通过控制模块控制其他模块并执行协议解析方法,传输模块分别与控制模块和SWIM接口连接,能够有效接收SWIM协议的数据并用本申请中的SWIM协议解析方法进行解析;方法读取字节数大于1后开始解析数据,通过TIM输入捕获触发DMA硬件传输的方法来解析数据,解析了10bit协议后重新接收数据进行解析。

本发明的有益效果是,可以对SWIM协议有效解析;TIM输入捕获触发DMA硬件传输,不需要频繁进入中断;解析稳定度高。

针对一种实施方式描述和/或示出的特征可以以相同或类似的方式在一个或更多个其它实施方式中使用,与其它实施方式中的特征相组合,或替代其它实施方式中的特征。应该强调,术语“包括/包含”在本文使用时指特征、整件、步骤或组件的存在,但并不排除一个或更多个其它特征、整件、步骤或组件的存在或附加。

附图说明

图1是本发明一种SWIM协议解析方法的流程图;

图2是本发明一种SWIM协议解析方法所述的解析数据的流程图;

图3是本发明一种SWIM协议解析系统的模块示意图;

图4是本发明一种SWIM协议解析的电路示意图;

图中:300、SWIM协议解析系统;310、SWIM接口;320、传输模块;330、控制模块;331、处理器;332、存储器。

具体实施方式

下面通过实施例,并结合附图对本发明技术方案的具体实施方式作进一步的说明。

在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

实施例1:

在图1至2所示的实施例1中,本发明提供一种技术方案:一种SWIM协议解析方法,包括如下步骤:判断读取字节数是否大于等于1,若读取字节数小于1,则继续读取数据;若读取字节数大于等于1,则开始解析数据;判断10bit协议是否解析完成,若解析未完成,则继续解析数据;若解析完成,则判断全部数据是否解析完成;若全部数据解析未完成则返回接收数据,否则结束;其中,所述解析数据使用TIM输入捕获触发DMA硬件传输的方法。

图1是本发明一种SWIM协议解析方法的流程图,说明了本SWIM协议解析方法的具体流程,是对如何进行SWIM协议解析的具体介绍。如图1所示的流程图,包括以下步骤。

步骤S100,初始化外设。本实施例中,初始化外设包括:设置串口映射到TIM2-CH3,下降沿触发DMA传输,每次下降沿触发TIM1的COUNT计数值到内部缓存;设置另一串口映射到TIM4-CH2,上升沿触发DMA传输,每次上升沿触发TIM1的COUNT计数值到内部缓存。具体的,初始化外设时,SWIM引脚默认是高电平,设置PB10映射到TIM2-CH3,并设置为下降沿触发DMA传输,每一次下降沿触发TIM1的COUNT计数值到内部RAM BUF1缓存,同时设置PB7映射到TIM4-CH2,并设置为上升沿触发DMA传输,每一次上升沿触发TIM1的COUNT计数值到内部RMABUF2缓存,SWIM设置为慢速模式。

步骤S110,接收数据。本实施例中,接收的数据是从SWIM接口发出的数据,传输进入处理器之后,处理器将对从SWIM接口发出的数据进行分析。

步骤S120,判断读取字节数是否大于等于1,如果判断读取字节数大于等于1则继续执行步骤S120,如果判断读取字节数小于1则向下执行步骤S140。本实施例中,判断读取字节数是否大于等于1包括:判断TIM2-CH3下降沿的TIM1计数值是否大于等于10;若计数值大于等于10,则字节数大于1;若计数值小于10,则字节数小于1。具体的,字节即byte,一般一个字节存储8位无符号数,本方法中除了无符号数之外还包含处理器内部的数,所以通过判断TIM2-CH3下降沿的TIM1计数值是否大于等于10来判断读取的字节数是否已经大于1,即本方法中数据解析的最小单位是1字节,接收1字节的数据之后开始处理数据,同时数据接收的过程也是在进行中的。

步骤S140,开始解析1字节数据。本实施例中,数据分析即为解析数据的过程,包括:设置阈值;存储数据;上升沿的TIM1计数值减去下降沿的TIM1计数值得到差值;比较所得差值与所述阈值的大小;若所得差值大于所述阈值,则记录该bit为逻辑电平1;若所得差值大于所述阈值,则记录该bit为逻辑电平0。SWIM协议的低电平时间最短是2个0,时钟源是8MHZ,相当需要识别4MHZ的低电平频率脉冲,在代码开始TIM2-CH3和TIM4-CH2的边沿触发之后,就实时的去判断DMA传输的计数值,每一个下降沿或者上升沿触发一次传输,代表1个bit数据采集完成,而本实施例中1个字节一般包含10个bit。

步骤S150,判断10bit协议解析是否完成,如果10bit协议解析未完成则继续执行步骤S140,如果判断10bit协议解析完成则向下执行步骤S160。本实施例中,判断10bit协议是否解析完成包括:判断TIM4-CH2上升沿触发DMA计数值与TM2-CH3下降沿触发事件DMA计数值是否相等;若相等,则10bit协议解析完成;若不相等,则10bit协议解析未完成。具体的,TIM4-CH2上升沿触发DMA计数值与TM2-CH3下降沿触发事件DMA计数值相等时,则表明已经解析了10bit的数据,也就是说本方法以10bit的数据为一组,在接收了10bit的数据之后,判断是否接收完全部数据然后继续接收数据。

步骤S160,判断数据解析是否完成,如果判断数据解析未完成则返回步骤S120,如果判断数据解析完成则结束。本实施例中,通过检测是否还有接收数据判断全部数据是否解析完成。

图2是本发明一种SWIM协议解析方法所述的解析数据的流程图,说明了本SWIM协议解析方法解析数据的具体流程,是对如何进行解析数据这一过程的具体介绍。如图2所示的流程图,包括以下步骤。

步骤S200,设置阈值。本实施例中,TIM1时钟源是72MHZ,重装载值是0xffff,计数方向是向上计数,计数范围是从0到65535,记录脉冲最大时间大约910us,而SWIM 1个bit的时间脉宽最大是2.75us(SWIM慢速模式,一共是22个cycle代表一个1bit时间),设置阈值为80。

步骤S210,判断上升沿time1count值减去下降沿time1count值是否大于阈值,如果大于阈值,则执行步骤S211,如果小于阈值,则执行步骤S212。本实施例中,低速模式下,2个低电平加20个高电平表示1;20个低电平加2个高电平表示0,直接用上升沿的TIME1计数值减去下降沿的TIME1计数值得到差值,设置阈值为80,如果差值大于80,则记录为逻辑电平1;如果差值小于等于80,则记录为逻辑电平0。

步骤S211,记录为逻辑电平1。本实施例中,如果差值大于80,则记录为逻辑电平1。

步骤S212,记录为逻辑电平0。本实施例中,如果差值小于等于80,则记录为逻辑电平0。

本实施例一种SWIM协议解析方法的工作流程为:从SWIM接口读取数据到处理器,读取字节数大于1后开始解析数据,通过TIM输入捕获触发DMA硬件传输的方法来解析数据,解析了10bit协议后重新接收数据进行解析。

实施例2:

在图3至4所示的实施例1中,本发明提供一种技术方案:一种SWIM协议解析系统,应用上述实施例1中的SWIM协议解析方法,其特征在于,包括:控制模块,用于控制其他模块并执行协议解析方法;传输模块,用于信息的传输;其中,在控制模块中还包含有存储器,用来存储得到的计数值。

图3是本发明一种SWIM协议解析系统的模块示意图,图4是本发明一种SWIM协议解析系统的电路示意图。如图3所示,本实施例中,SWIM协议解析系统300包括SWIM接口310、传输模块320、控制模块330,控制模块中还包括处理器331和存储器332。

如图4所示,本实施例中,SWIM_IN为输入IO,SWIM为输出IO。SWIM设置为输出开漏模式,用于控制SWIM电平输出,SWIM_IN作为输入电平触发,本实施例中使用STM32F103处理器作为的控制模块,SWIM_IN引脚同时连接到了PB10和PB7引脚。SWIM协议的低电平时间最短是2个0,时钟源是8MHZ,相当需要识别4MHZ的低电平频率脉冲,而STM32F103是72MHZ主频,可以轻松识别4MHZ,还可以选择更低成本的M0内核主频48M的处理器进行解析。

本实施例一种SWIM协议解析系统的工作流程为:通过控制模块控制其他模块并执行协议解析方法,传输模块分别与控制模块和SWIM接口连接,能够有效接收SWIM协议的数据并用本申请实施例1中的SWIM协议解析方法进行解析。

最后说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的宗旨和范围,其均应涵盖在本发明的权利要求范围当中。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号