内置在MCU中用于实现工业总线通讯的硬件编解码方法技术

技术编号:19689804 阅读:33 留言:0更新日期:2018-12-08 10:40
本发明专利技术公开了一种内置在MCU中用于实现工业总线通讯的硬件编解码方法,包括内置在MCU中的编解码模块,该编解码模块由解码模块和发码模块组成,其中,所述的解码模块用于测量多个事件之间的脉冲宽度并将其解析成数字信号后存放在MCU的解码数据寄存器中;所述的发码模块用于将数字信号调制成对应的脉冲宽度数据,并存放至MCU的发码数据寄存器中,再以高低电平的形式发送。本发明专利技术采用自行设计的解码模式和发码模式来实现工业总线脉冲信号的编解码工作,从根本解决了传统方式所存在的技术问题,既能确保总线通讯的时序性,降低开发难度和开发成本,而且编解码精度高,并且从整体上确保了系统的稳定性、一致性以及信号传输的距离,因此,本发明专利技术适于推广应用。

【技术实现步骤摘要】
内置在MCU中用于实现工业总线通讯的硬件编解码方法
本专利技术涉及消防
,具体涉及的是一种内置在MCU中用于实现工业总线通讯的硬件编解码方法。
技术介绍
目前,在工业总线中多数采用MBUS、CAN、RS485等总线进行通讯,在这些总线中,可以实现供电总线通讯只有MBUS或其他特定消防总线。由于没有统一的标准,消防总线在消防行业中应用时存在着性能参差不齐的情况,例如供电性能或智能性。特别是为了实现工业总线上的解码,都是采用纯软件方式实现:例如通过MCU的外部中断+Timer配合记录事件的产生。由于不同MCU之间性能的差异,采用上述方式将会导致进入中断的延时时间不同,此时加上其他外部中断的产生,最终会造成中断存在不确定的延时性,进而影响了解码的精度。再因为消防总线一般是以脉冲宽度进行编码,所以不确定的延时也会导致编码出现不确定的问题。由于消防总线通讯对时序性的要求非常高,因而采用纯软件的方式会对整个消防系统造成很强的干扰性,严重影响了系统的稳定性和一致性。此外,在现有的工业总线编解码过程中,脉冲宽度值都是MCU软件以数组的方式进行存放,这需要MCU高频率不停的工作,由此而带来的后果是,既增加了整个系统的功耗,而且也影响到了信号的传输距离,并且在开发过程中,软件编写的难度较大,耗时也长。因此,有必要对现有的工业总线,尤其消防总线的通讯方式进行改进,以便解决总线通讯时序性及功耗、传输距离、软件编程方面所存在的问题。
技术实现思路
针对上述现有技术的不足,本专利技术提供了一种内置在MCU中用于实现工业总线通讯的硬件编解码方法,其采用硬件内置在MCU中的方式,结合软件流程的设计,实现了工业总线的通讯。为实现上述目的,本专利技术采用的技术方案如下:内置在MCU中用于实现工业总线通讯的硬件编解码方法,包括内置在MCU中的编解码模块,该编解码模块由解码模块和发码模块组成,其中,所述的解码模块用于测量多个事件之间的脉冲宽度并将其解析成数字信号后存放在MCU的解码数据寄存器中;所述的发码模块用于将数字信号调制成对应的脉冲宽度数据,并存放至MCU的发码数据寄存器中,再以高低电平的形式发送;所述的编解码方法则包括解码模式和发码模式,其中,解码模式包括以下步骤:(1)设置解码触发机制,一旦触发,则执行步骤(2);(2)解码模块连续测量出多个事件之间的脉冲宽度值;(3)解码模块将其中两个事件之间的脉冲宽度值与MCU预设的范围值进行比较,如果脉冲宽度值未超出预设的范围值,则执行步骤(4);如果超出预设的范围值,则解码模块判定解码出现错误,重新测量该两个事件之间的脉冲宽度值,并继续进行比较,直至该脉冲宽度值在预设的范围值内后,执行步骤(4);(4)解码模块将脉充宽度值转换为由数字编码代表的0/1逻辑值,然后装入至MCU的移位计数器中;(5)循环步骤(3)、(4),然后存储已成帧字节于MCU的解码数据寄存器中;(6)MCU判断数字是否接收完成,是,则响应中断,否,则继续循环步骤(1)~(5);发码模式包括以下步骤:(1)发码模块判断是否有数据发送,是,则按位调制出与数据位对应的脉充宽度固定值,执行步骤(2);否则继续等待;(2)发码模块按位发送脉充宽度固定值,发送长度自动减一;(3)当一位发送完成后,继续按步骤(2)的方式发送,直至发码模块判断数据发送完成或中止发送后响应中断;(4)重复执行步骤(1)~(3)。具体地说,所述解码模式中的步骤(2)包括以下步骤:(2a)解码模块自动捕捉一个数据边沿响应中断,置以数据timeA;(2b)测量下一个数据边沿捕捉响应中断,置以数据timeB;(2c)按照步骤(2b)所述的方式进行循环,最终获得数据timeA、timeB、timeC……,执行步骤(2d);(2d)采用后一位捕捉的边沿数据减去前一位边沿数据的方式,依次捕捉到多个事件之间的脉冲宽度值。进一步地,所述的解码模块在将已成帧字节存储于MCU的解码数据寄存器后,可以直接读取解码数据寄存器中的数据。再进一步地,所述发码模式步骤(1)中的按位调制出与数据位对应的脉冲宽度固定值的具体过程如下:(a)发码模块将接收中的已成帧数据直接存放至MCU的发码数据寄存器中,并加载到发送移位寄存器;(b)发码模块将发送移位寄存器中的数据按位调制出数据位对应的脉冲宽度固定值。与现有技术相比,本专利技术具有以下有益效果:(1)本专利技术在MCU中内置了专用的编解码模块,可以自动捕捉事件的脉冲信号宽度,然后将其直接转换为数字逻辑值后自动装入至MCU的移位计数器中,如此一来,一方面可以克服不同MCU由于性能差异而存在中断的延时时间不同的问题;另一方面,即使有其他外部中断的产生,解码响应中断的延时性也不会受到任何影响。(2)本专利技术所采用的解码模块,在结合MCU的预设值范围后,可以自动对解码是否有误进行判断,同时,解码模块在将数据存放至MCU的解码数据寄存器中后,还可以直接读取解码数据寄存器中的数据,从而判断解码的完整性,如此也进一步确保了解码的精度。(3)本专利技术在发码时,以前述解码的数据为基准,先将数据按位调制出与数据位对应的脉冲宽度固定值(采用依次自动捕捉每个数据边沿响应中断,并以后一位边沿数据减去前一位边沿数据的方式获得多个事件之间的脉冲宽度值),然后再按位的方式发送,发送时长度自动减一,如此既确保了编码的准确性,又能满足总线通讯对时序性的要求,增强了总线抗干扰的能力,很好地确保了系统整体的稳定性和一致性。(4)本专利技术由于在MCU中内置了编解码模块,该编解码模块为固定功能产品,总线解码的脉冲宽度值无需在MCU中以数组形式进行存放,因而本专利技术在实际应用时,既能避免因为不同MCU而导致的软件编写难度大的问题,节约了flash空间,同时还能有效地降低MCU的功耗(无需让MCU时刻保持高频工作),并且MCU也无需在通讯上消耗过多的资源,从而不仅从整体上节约了开发的时间,降低了开发成本,而且也确保了系统的稳定性,使其信号传输的距离得到了很好的保障。附图说明图1为本专利技术中编解码模块内置在MCU的示意图。图2为本专利技术的流程示意图。具体实施方式下面结合附图说明和实施例对本专利技术作进一步说明,本专利技术的方式包括但不仅限于以下实施例。如图1所示,本专利技术提供了一种编解码模块,其可内置于MCU中,依靠与MCU的硬件配合,结合软件流程的设计,实现了工业总线的通讯。本专利技术的编解码模块在使用时能自动判断脉冲信号的宽度并将其解析成数字信号存放在MCU中,然后在发送时再按位调制出与数据位对应的脉冲宽度固定值,最后以高低电平的形式进行发送。为了实现上述功能,本专利技术的工作流程分为解码模式和发码模式(如图2所示),分别如下:解码模式首先,设置一个解码触发机制,一旦触发,则解码模块会连续测量出多个事件(例如事件A、事件B、事件C,等等)之间的脉冲宽度值。具体的测量方式如下:(1)自动捕捉一个数据边沿响应中断,置以数据timeA;(2)测量下一个数据边沿捕捉响应中断,置以数据timeB;(3)按照步骤(2)所述的方式进行循环,最终获得数据timeA、timeB、timeC……,执行步骤(4);(4)采用后一位捕捉的边沿数据减去前一位边沿数据的方式(例如timeB-timeA、timeC-timeB),依次捕捉到多个事件本文档来自技高网...

【技术保护点】
1.内置在MCU中用于实现工业总线通讯的硬件编解码方法,其特征在于,包括内置在MCU中的编解码模块,该编解码模块由解码模块和发码模块组成,其中,所述的解码模块用于测量多个事件之间的脉冲宽度并将其解析成数字信号后存放在MCU的解码数据寄存器中;所述的发码模块用于将数字信号调制成对应的脉冲宽度数据,并存放至MCU的发码数据寄存器中,再以高低电平的形式发送;所述的编解码方法则包括解码模式和发码模式,其中,解码模式包括以下步骤:(1)设置解码触发机制,一旦触发,则执行步骤(2);(2)解码模块连续测量出多个事件之间的脉冲宽度值;(3)解码模块将其中两个事件之间的脉冲宽度值与MCU预设的范围值进行比较,如果脉冲宽度值未超出预设的范围值,则执行步骤(4);如果超出预设的范围值,则解码模块判定解码出现错误,重新测量该两个事件之间的脉冲宽度值,并继续进行比较,直至该脉冲宽度值在预设的范围值内后,执行步骤(4);(4)解码模块将脉充宽度值转换为由数字编码代表的0/1逻辑值,然后装入至MCU的移位计数器中;(5)循环步骤(3)、(4),然后存储已成帧字节于MCU的解码数据寄存器中;(6)MCU判断数字是否接收完成,是,则响应中断,否,则继续循环步骤(1)~(5);发码模式包括以下步骤:(1)发码模块判断是否有数据发送,是,则按位调制出与数据位对应的脉充宽度固定值,执行步骤(2);否则继续等待;(2)发码模块按位发送脉充宽度固定值,发送长度自动减一;(3)当一位发送完成后,继续按步骤(2)的方式发送,直至发码模块判断数据发送完成或中止发送后响应中断;(4)重复执行步骤(1)~(3)。...

【技术特征摘要】
1.内置在MCU中用于实现工业总线通讯的硬件编解码方法,其特征在于,包括内置在MCU中的编解码模块,该编解码模块由解码模块和发码模块组成,其中,所述的解码模块用于测量多个事件之间的脉冲宽度并将其解析成数字信号后存放在MCU的解码数据寄存器中;所述的发码模块用于将数字信号调制成对应的脉冲宽度数据,并存放至MCU的发码数据寄存器中,再以高低电平的形式发送;所述的编解码方法则包括解码模式和发码模式,其中,解码模式包括以下步骤:(1)设置解码触发机制,一旦触发,则执行步骤(2);(2)解码模块连续测量出多个事件之间的脉冲宽度值;(3)解码模块将其中两个事件之间的脉冲宽度值与MCU预设的范围值进行比较,如果脉冲宽度值未超出预设的范围值,则执行步骤(4);如果超出预设的范围值,则解码模块判定解码出现错误,重新测量该两个事件之间的脉冲宽度值,并继续进行比较,直至该脉冲宽度值在预设的范围值内后,执行步骤(4);(4)解码模块将脉充宽度值转换为由数字编码代表的0/1逻辑值,然后装入至MCU的移位计数器中;(5)循环步骤(3)、(4),然后存储已成帧字节于MCU的解码数据寄存器中;(6)MCU判断数字是否接收完成,是,则响应中断,否,则继续循环步骤(1)~(5);发码模式包括以下步骤:(1)发码模块判断是否有数据发送,是,则按位调制出与数据位对应的脉充宽度固定值,执行步骤(2);否则继续等...

【专利技术属性】
技术研发人员:不公告发明人
申请(专利权)人:四川赛科安全技术有限公司现代单片机香港有限公司
类型:发明
国别省市:四川,51

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1