一种解码方法及装置的制造方法_4

文档序号:8545981阅读:来源:国知局
中断周期、存储缓冲区中的本次遍历字节的后4位作为高4位,本次遍历字节的后一个相邻字节的前4位作为低4位,组成新字节,如果所述新字节中出现所述预设数值中的任意一个,则确定存在由高到低的跳变;
[0216]判断本次中断周期、存储缓冲区中的第二个字节,如果为所述预设数值中的任意一个,则确定存在由高到低的跳变。
[0217]解码模块依据所述存储缓冲区中的字节,检测所述前导码的具体实现方式为:设置16位的全局变量A,所述A的最高位为I ;确定所述前导码起始位在采样得到的数据序列中的位置a ;按照以下方式分别确定A的剩余位数的值:
[0218]A:在本次中断周期以及其之后的中断周期、存储缓冲区中的后续字节中查找由低到尚的跳变;
[0219]B:记录所述低到高的跳变在采样得到的数据序列中的位置b ;
[0220]C:如果不小于a,将b减去a的差值作为低电平的采样次数,如果b小于a,则将b减去a的差值与64之和作为低电平的采样次数;
[0221]D:如果所述低电平的采样次数在第三数值与第四数值之间,则确定所述A的次高位为O ;如果所述低电平的采样次数在第五数值与第六数值之间,则确定所述A的次高位及所述次高位的前一位均为O ;如果所述低电平的采样次数为其它数值,则确定解码出错;
[0222]循环执行A至D,直至得到A中全部位置的数值;
[0223]如果所述A的值为1001100110011001,则确定检测到前导码,否则,则确定解码出错O
[0224]解码模块依据所述存储缓冲区中的字节,检测所述帧前界定码的具体实现方式为:设置16位的全局变量A,所述A的最高位为I ;
[0225]确定所述前导码起始位在采样得到的数据序列中的位置a ;按照以下方式分别确定A的剩余位数的值:
[0226]A:在本次中断周期以及其之后的中断周期、存储缓冲区中的后续字节中查找由低到尚的跳变;
[0227]B:记录所述低到高的跳变在采样得到的数据序列中位置b ;
[0228]C:如果不小于a,将b减去a的差值作为低电平的采样次数,如果b小于a,则将b减去a的差值与64之和作为低电平的采样次数;
[0229]D:如果所述低电平的采样次数在第三数值与第四数值之间,则确定所述A的次高位为0,如果所述低电平的采样次数在第五数值与第六数值之间,则确定所述A的次高位及所述次高位的前一位均为O ;如果所述低电平的采样次数为其它数值,则确定解码出错;
[0230]循环执行A至D,直至得到A中全部位置的数值;
[0231]如果所述A的值为1011001001001101,则确定检测到帧前定界码,否则,则确定解码出错。
[0232]解码模块依据所述存储缓冲区中的字节,检测所述数据码的具体实现方式可以为:设置16位的全局变量A,所述A的最高位为I ;确定所述前导码起始位在采样得到的数据序列中的位置a ;按照以下方式分别确定A的剩余位数的值:
[0233]A:在本次中断周期以及其之后的中断周期、存储缓冲区中的后续字节中查找由低到尚的跳变;
[0234]B:记录所述低到高的跳变在采样得到的数据序列中位置b ;
[0235]C:如果不小于a,将b减去a的差值作为低电平的采样次数,如果b小于a,则将b减去a的差值与64之和作为低电平的采样次数;
[0236]D:如果所述低电平的采样次数在第三数值与第四数值之间,则确定所述A的次高位为0,如果所述低电平的采样次数在第五数值与第六数值之间,则确定所述A的次高位及所述次高位的前一位均为O ;如果所述低电平的采样次数为其它数值,则确定解码出错;
[0237]循环执行A至D,直至得到A中全部位置的数值;
[0238]依据预设的规则,将A转换为数据码B,预设的规则可以为将A从高位到低位两两分成一组,每组对应数据码B中的一位,对于任意一组,第一类型组合对应第一码值,第二类型组合对应第二码值。
[0239]解码模块依据所述存储缓冲区中的字节,检测所述帧结束码的具体实现方式可以为:设置16位的全局变量A,所述A的最高位为I ;
[0240]确定所述前导码起始位在采样得到的数据序列中的位置a ;
[0241 ] 按照以下方式分别确定A的剩余位数的值:
[0242]A:在本次中断周期以及其之后的中断周期、存储缓冲区中的后续字节中查找由低到尚的跳变;
[0243]B:记录所述低到高的跳变在采样得到的数据序列中位置b ;
[0244]C:如果不小于a,将b减去a的差值作为低电平的采样次数,如果b小于a,则将b减去a的差值与64之和作为低电平的采样次数;
[0245]D:如果所述低电平的采样次数在第三数值与第四数值之间,则确定所述A的次高位为0,如果所述低电平的采样次数在第五数值与第六数值之间,则确定所述A的次高位及所述次高位的前一位均为O ;如果所述低电平的采样次数为其它数值,则确定解码出错;
[0246]循环执行A至D,直至得到A中全部位置的数值;
[0247]如果所述A的值为1011001100100110,则确定检测到帧结束码,否则,则确定解码出错。
[0248]本实施例所述装置在实际应用中的硬件连接如图4所示,其中,本实施例所述装置可以为嵌入式微处理器,嵌入式微处理器的SSP接口设置为从机模式,将IEC61158-2驱动电路的PO引脚连接到嵌入式微处理器的SSP接口的MISO引脚,以便嵌入式微处理器将曼彻斯特编码通过IEC61158-2驱动电路输出到现场总线上。将IEC61158-2驱动电路的PI引脚连接到嵌入式微处理器的SSP接口的MOSI引脚,以便IEC61158-2驱动电路将曼彻斯特CMOS信号通过MOSI引脚进入嵌入式微处理器。SSP接口的SSEL引脚连接高电平,说明SSP接口始终处于工作状态。嵌入式微处理器产生一个时钟信号,通过PWM引脚连接SSP接口的SCK引脚,作为SSP接口的采样时钟信号。IEC61158-2驱动电路与嵌入式微处理器的GND引脚一起并接地。
[0249]使用图4所示硬件电路进行编码的步骤包括:
[0250]I) SSP接口设置在解码时已经完成设置,在发送前,完成整包发送报文的预编码。
[0251]1.数据位的值为1,编码后用十六进制表示为OxFFOO ;
[0252]i1.数据位的值为0,编码后用十六进制表示为OxOOFF;
[0253]2)同时完成前导码、帧前定界码和帧结束码的编码。
[0254]3)整个编码存放在发送缓冲区中等待发送。
[0255]4)发送时刻到时,SSP接口使能发送,禁止接收,发送缓冲区数据通过SSP接口MISO引脚发送至IEC61158-2驱动电路。
[0256]5)发送连续性保证
[0257]1.SSP接口为8帧收发FIFO队列,开始发送时写入8帧队列数据发送;
[0258]每发送完4帧队列数据产生发送半空中断,中断处理程序中再写入4帧队列数据。
[0259]本申请实施例方法所述的功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算设备可读取存储介质中。基于这样的理解,本申请实施例对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一台计算设备(可以是个人计算机,服务器,移动计算设备或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0260]本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。
[0261]对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
【主权项】
1.一种解码方法,其特征在于,包括: 对接收到的编码进行采样; 将采样得到的数据序列存储到接收队列; 在所述接收队列中的数据序列的帧数达到第一数值后,产生解码中断; 在本次中断周期,对所述接收队列中的数据帧进行解码。
2.根据权利要求1所述的方法,其特征在于,所述对所述接收队列中的数据帧进行解码包括: 判断所述接收队列中的数据帧是否为全O或全1,如果否,则对所述数据帧进行解码,如果所述本次解码中断周期中的先入先出接收队列中的数据帧为全O,则记录总线为空闲低电平状态,如果所述本次解码中断周期中的先入先出接收队列中的数据帧为全1,则记录总线为空闲高电平状态。
3.根据权利要求2所述的方法,其特征在于,在所述编码为曼彻斯特码的情况下,所述对所述数据帧进行解码包括: 将所述接收队列中的数据帧存储到预设字节的存储缓冲区中,其中,所述数据帧在所述存储缓冲区中的存放顺序与其在所述接收队列中的存放顺序相同; 依据所述存储缓冲区中的字节,依次检测前导码起始位、前导码、帧前界定码、数据码及帧结束码。
4.根据权利要求3所述的方法,其特征在于,所述依据所述存储缓冲区中的字节,检测所述前导码起始位包括: 检测所述存储缓冲区中的数据帧是否存在由高到低的跳变; 若检测到由高到低的跳变,且所述总线为空闲高电平状态,则确定从所述缓冲存储区中的数据帧中检测到编码的前导码起始位; 若检测到由高到低的跳变,且所述总线为空闲低电平状态,则判断所述由高到低的跳变之前的高电平被采样的次数是否达到第二数值,如果是,则确定从所述缓冲存储区中的数据帧中检测到前导码起始位。
5.根据权利要求4所述的方法,其特征在于,所述存储缓冲区为8个字节;所述检测所述存储缓冲区中的数据帧是否存在由高到低的跳变至少包括以下一项:取上一中断周期中存放在存储缓冲区中的最后一个字节的后4位作为高4位,取本次中断周期中存放在存储缓冲区中的第一个字节的前4位作为低4位,组成新字节,如果在所述新字节中出现以下任意一个预设数值,则确定存在由高到低的跳变,所述预设数值包括:0x80、OxCO、OxEO、OxFO、0xF8、OxFC、OxFE ; 判断本次中断周期、所述存储缓冲区中的第一个字节,如果出现所述预设数值中的任意一个,则确定存在由高到低的跳变; 遍历所述存储缓冲区中的所有字节:取本次中断周期、存储缓冲区中的本次遍历字节的后4位作为高4位,本次遍历字节的后一个相邻字节的前4位作为低4位,组成新字节,如果所述新字节中出现所述预设数值中的任意一个,则确定存在由高到低的跳变; 判断本次中断周期、存储缓冲区中的第二个字节,如果为所述预设数值中的任意一个,则确定存在由高到低的跳变。
6.根据权利要求5所述的方法,其特征在于,所述依据所述存储缓冲区中的字节,检测所述前导码包括: 设置16位的全局变量A,所述A的最高位为I ; 确定所述前导码起始位在采样得到的数据序列中的位置a ; 按照以下方式分别确定A的剩余位数的值: A:在本次中断周期以及其之后的中断周期、存储缓冲区中的后续字节中查找由低到高的跳变; B:记录所述低到高的跳变在采样得到的数据序列中的位置b ; C:如果不小于a,将b减去a的差值作为低电平的采样次数,如果b小于a,则将b减去a的差值与64之和作为低电平的采样次数; D:如果所述低电平的采样次数在第三数值与第四数值之间,则确定所述A的次高位为O ;如果所述低
当前第4页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1