一种实现极性自适应的模拟uart的方法

文档序号:9708257阅读:378来源:国知局
一种实现极性自适应的模拟uart的方法
【技术领域】
[0001]本发明涉及通讯领域,具体涉及一种实现极性自适应的模拟UART的方法。
【背景技术】
[0002]随着我国市场经济改革日趋成熟和电力行业体制改革的不断深化,电力市场引入竞争机制,电网内部管理也逐渐走向商业化市场,而商业化运行的核心就是供电和购电双方以电力交换点的电能量作为计量结算依据,原来人工抄表和统计结算的抄表方式显然不能适应市场商业化运营的需要,因此,必须建立以自动化为基础的电能量计量自动化系统,以提高电能量的采集、传输、处理的精确性、可靠性和及时性。
[0003]电能量采集系统由系统主站、数据通道、厂站设备三部分组成,实现了对电网和电能表实时数据采集和监测,独立完成分时计费、电能量统计、电能量平衡、电能量管理以及电力营业考核自动化等功能;并具有远程维护、授权Internet用户远程查询等远程管理功能;并且通过与MIS、SCADA、DMS、EMS等系统实现数据交换与共享,为其他子系统提供了准确、完整的信息数据。
[0004]电能表随着微电子技术的进步有许多的通讯方式应用其中,其中最常规的应该属于485的通讯,485通讯以其结构简单,通信速率高、传输距离远等诸多优点在工业控制系统中得到了广泛的应用,但是485通讯时是有极性连接的,根据RS485通讯传输线容易接反的特点,为了使工程施工和使用方便,实现了无极性的S485通讯,为了满足这一需求,许多厂家采用了硬件的无极性485芯片,但是在网络环境受到干扰的情况下,无极性485芯片会产生错误,导致不停地切换485的通讯极性,使得通讯成功率低下,有的厂家则采用软件算法,但是对系统的资源要求比较多,严重的影响整个系统的运行效率。

【发明内容】

[0005]本发明的目的是为了提供能保证在有干扰的网络环境中通讯时485芯片不会错误、不停地切换的一种实现极性自适应的模拟UART的方法。
[0006]本发明通过以下技术方案实现:一种实现极性自适应的模拟UART的方法,步骤如下:
步骤a)将电能表上电初始化,配置一个定时器,并将接收引脚配置为双边沿外部中断输入,发送引脚配置为普通输出;
步骤b)检测电能表的中断信号,一旦检测到中断信号就开启定时器,关闭外部中断,进入定时中断,并根据波特率定定时器间隔;
步骤c)进入定时中断后,读取接收引脚的电平;若为低电平则为负极性,若为高电平则为正极性,并确定定时器的间隔为位周期T0;
步骤d)继续在定时器中断中读取接收引脚的电平,如为负极性则对接收的每位数据进行取反处理;
步骤e)根据字节的奇偶校验位,对接收的字节进行合法性判断,直到数据全部接收完毕,进行数据帧的合法性校验;
步骤f)若电能表在处理完接收数据后需要应答,则在间隔为TO的定时器中断中,将数据逐位在发送引脚上发送出去,若为负极性,则需要先将数据按位取反后再发送;
步骤g)数据全部发送完毕后,关闭定时器,再将接收引脚配置成双边沿外部中断输入,进入接收模式,回到步骤b。
[0007 ]作为优选,所述步骤a中的定时器为微妙级定时器。
[0008]作为优选,接收模式可按照正负逻辑进行数据接收也可按照正逻辑或负逻辑进行接收。
[0009]作为优选,接收的数据开始可按双极性接收,当接收到特定字符时,可关闭掉另外一个极性的接收。
[0010]本发明通过利用一个定时器、多个10边沿中断,实现多路模拟UART功能,分别按正负逻辑进行数据接收,也可根据需求按正逻辑或负逻辑进行接收,接收到数据的后续处理,可以按照数据帧的特点和系统的特点进行设计,后续的设计可根据不同的需求和资源,灵活掌握,提供了多种可能。
[0011]本发明的有益之处在于:1)利用一个定时器和多个10边沿中断,高效实现多路模拟UART功能,使得效率更高;2)利用定时器捕获边沿变化,数据分别按正负逻辑进行数据接收,也可根据需求按正逻辑或负逻辑进行接收,接收到数据的后续可按照数据帧的特点和系统的特点处理,保证极性能自动适应,不会在干扰的情况下错误的切换。
【具体实施方式】
[0012]下面结合【具体实施方式】,对本发明作进一步描述。
[0013]本实施方式中,一种实现极性自适应的模拟UART的方法,步骤如下:
步骤a)将电能表上电初始化,配置一个定时器,并将接收引脚配置为双边沿外部中断输入,发送引脚配置为普通输出;
步骤b)检测电能表的中断信号,一旦检测到中断信号就开启定时器,关闭外部中断,进入定时中断,并根据波特率定定时器间隔;
步骤c)进入定时中断后,读取接收引脚的电平;若为低电平则为负极性,若为高电平则为正极性,并确定定时器的间隔为位周期T0;
步骤d)继续在定时器中断中读取接收引脚的电平,如为负极性则对接收的每位数据进行取反处理;
步骤e)根据字节的奇偶校验位,对接收的字节进行合法性判断,直到数据全部接收完毕,进行数据帧的合法性校验;
步骤f)若电能表在处理完接收数据后需要应答,则在间隔为T0的定时器中断中,将数据逐位在发送引脚上发送出去,若为负极性,则需要先将数据按位取反后再发送;
步骤g)数据全部发送完毕后,关闭定时器,再将接收引脚配置成双边沿外部中断输入,进入接收模式,回到步骤b。
[0014]本实施方式中,所述步骤a中的定时器为微妙级定时器。
[0015]本实施方式中,接收模式可按照正负逻辑进行数据接收也可按照正逻辑或负逻辑进行接收。
[0016]本实施方式中,接收的数据开始可按双极性接收,当接收到特定字符时,可关闭掉另外一个极性的接收。
[0017]本实施方式中,模拟UART首先开启一个定时器,定时器的步进根据波特率的最小周期确定,小于最小周期的1/20即可;接收时,将输入信号设置成双边沿触发,捕获定时器的值并放入一个缓冲区中,如果MCU具有DMA功能,可以使用DMA加边沿捕获功能来实现,后续分析缓冲区中的定时器的值,得出每个电平的宽度,从而分析出通讯的数据内容;发送时,根据起始位、数据内容、奇偶校验位、停止位等,确定每个电平的发送持续时间,根据定时器的比较翻转电平模式,进行比较10输出。
[0018]本实施方式中,采用模拟UART的方式,可同时分别按正负逻辑进行数据接收,也可根据需求按正逻辑或负逻辑进行接收,接收到数据的后续处理,可以按照数据帧的特点和系统的特点进行设计;例如一帧数据的开始按双极性接收,当接收到特定字符时,可以关闭掉另外一个极性的接收,后续的设计可根据不同的需求和资源,灵活掌握,提供了多种可會泛。
[0019]本实施方式中,利用一个定时器、多个10边沿中断,高效率地实现多路模拟UART功能,如果配合处理器的DMA功能,效率更高,对UART资源较少的芯片,有绝对的优势。
[0020]本实施方式中,定时器间隔根据波特率而定,是位周期的一半,比如波特率是B,那么位周期是T0=1/B,定时间隔为TO/2 = 1/2B。
[0021]本发明的保护范围包括但不限于以上实施方式,本发明的保护范围以权利要求书为准,任何对本技术做出的本领域的技术人员容易想到的替换、变形、改进均落入本发明的保护范围。
【主权项】
1.一种实现极性自适应的模拟UART的方法,其特征在于,步骤如下: 步骤a)将电能表上电初始化,配置一个定时器,并将接收引脚配置为双边沿外部中断输入,发送引脚配置为普通输出; 步骤b)检测电能表的中断信号,一旦检测到中断信号就开启定时器,关闭外部中断,进入定时中断,并根据波特率定定时器间隔; 步骤c)进入定时中断后,读取接收引脚的电平;若为低电平则为负极性,若为高电平则为正极性,并确定定时器的间隔为位周期TO; 步骤d)继续在定时器中断中读取接收引脚的电平,如为负极性则对接收的每位数据进行取反处理; 步骤e)根据字节的奇偶校验位,对接收的字节进行合法性判断,直到数据全部接收完毕,进行数据帧的合法性校验; 步骤f)若电能表在处理完接收数据后需要应答,则在间隔为TO的定时器中断中,将数据逐位在发送引脚上发送出去,若为负极性,则需要先将数据按位取反后再发送; 步骤g)数据全部发送完毕后,关闭定时器,再将接收引脚配置成双边沿外部中断输入,进入接收模式,回到步骤b。2.根据权利要求1所述的一种实现极性自适应的模拟UART的方法,其特征在于:所述步骤a中的定时器为微妙级定时器。3.根据权利要求1所述的一种实现极性自适应的模拟UART的方法,其特征在于:接收模式可按照正负逻辑进行数据接收也可按照正逻辑或负逻辑进行接收。4.根据权利要求1所述的一种实现极性自适应的模拟UART的方法,其特征在于:接收的数据开始可按双极性接收,当接收到特定字符时,可关闭掉另外一个极性的接收。
【专利摘要】本发明公开了一种实现极性自适应的模拟UART的方法,通过利用一个定时器、多个IO边沿中断,实现多路模拟UART功能,分别按正负逻辑进行数据接收,也可根据需求按正逻辑或负逻辑进行接收,接收到数据的后续处理,可以按照数据帧的特点和系统的特点进行设计,后续的设计可根据不同的需求和资源,灵活掌握。
【IPC分类】G06F13/38, G08C19/00
【公开号】CN105468554
【申请号】CN201510839635
【发明人】郑坚江, 王运兵, 应碧锋, 陈恢云, 应必金, 刘其君
【申请人】宁波三星医疗电气股份有限公司
【公开日】2016年4月6日
【申请日】2015年11月27日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1