CN108701112A - 一种基于查询方式模拟串口通信的方法和装置 - Google Patents
一种基于查询方式模拟串口通信的方法和装置 Download PDFInfo
- Publication number
- CN108701112A CN108701112A CN201780009007.1A CN201780009007A CN108701112A CN 108701112 A CN108701112 A CN 108701112A CN 201780009007 A CN201780009007 A CN 201780009007A CN 108701112 A CN108701112 A CN 108701112A
- Authority
- CN
- China
- Prior art keywords
- break period
- timer
- bit
- data
- serial port
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0002—Serial port, e.g. RS232C
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Systems (AREA)
- Synchronisation In Digital Transmission Systems (AREA)
Abstract
一种基于查询方式模拟串口通信的方法,由定时器以及通用IO接口来模拟串口通信,包括以下步骤:模拟串口接收数据时,控制该定时器以第一中断时间(T1)定时采样该通用IO接口的电平;当查询到数据报文的起始位时,对该第一中断时间(T1)的采样点延时指定时间(T)后,调整该定时器的第一中断时间为第二中断时间(T2)进行采样,按位接收该数据报文;完成接收该数据报文的停止位后,恢复该定时器以该第一中断时间(T1)定时查询该通用IO接口的电平。
Description
技术领域
本申请涉及通信技术领域,具体涉及一种基于查询方式模拟串口通信的方法和装置。
背景技术
在工业控制领域,串口因为协议简单使用方便,因此使用非常普遍。串行接口采用串行通信方式的扩展接口,将数据一位一位地顺序传送。
随着工业控制终端的功能集成和扩展,很多工业控制终端会碰到微控制器(Microcontroller Unit,MCU)硬件串口资源不足的情况。而更换微控制器或者使用串口扩展芯片会产生额外的硬件开销,从而增加产品的研发和生产成本,因此,就需要用软件来模拟串口通信。
现有的软件模拟串口的方法,一般通过使用微控制器的可中断IO接口来检测通信线上的边沿信号,不仅增加了微控制器选型的局限性,同时对于微控制器的时钟精度要求较高。
现有的模拟串口通信方法,需要具有外部中断能力的IO接口才可作为通信口使用,对IO接口的要求特殊,会增加产品的微控制器的选型局限性。并且,利用中断边沿来录制电平波形,会将两个数据报文之间的空闲时间记录在数据时间中,还需要额外增加数据解析处理程序。该数据解析处理程序需从该电平波形中提取出数据报文,并判断一帧数据报文是否接受完毕,因此数据通信处理过程复杂,影响串口通信效率。并且微控制器的时钟一般都存在误差,微控制器的时钟误差也会给模拟串口通信带来不稳定因素,出现通信异常或者数据出错。
因此,现有技术的模拟串口技术还有待于改进。
发明内容
本申请针对以上要解决的技术问题,提供一种基于查询方式模拟串口通信的方法和装置,采用通用定时器和通用IO接口即可实现模拟串口通信功能,同时通过动态调整数据报文起始位的定时中断时间,以较长的第二中断时间完成数据接收,再恢复回第一中断时间进行检测采样,避免了微控制器时钟误差造成的通信数据异常,提高数据接收准确率。
第一方面,本申请实施例提供了一种基于查询方式模拟串口通信的方法,由定时器以及通用IO接口来模拟串口通信,包括以下步骤:
模拟串口接收数据时,控制该定时器以第一中断时间(T1)定时采样该通用IO接口的电平;
当查询到数据报文的起始位时,对第一中断时间(T1)的采样点延时指定时间(T)后,调整该定时器的第一中断时间为第二中断时间(T2)进行采样,按位接收该数据报文;
完成接收该数据报文的停止位后,恢复该定时器以该第一中断时间(T1)定时查询该通用IO接口的电平。
该模拟串口发送数据时,根据通用IO接口的比特率设定该定时器的第三中断时间(T3),在每个第三中断时间的周期内根据发送数据报文的数据位设定模拟串口的电平状态,当一个数据报文发送完成后停止定时器。
其中,该定时器的第一中断时间(T1)为:T1=T2-2T;
该定时器的第二中断时间(T2)为:其中A为通信比特率;
该定时器的第三中断时间(T3)为:其中A为通信比特率。
在一种延时实施例中,模拟串口接收数据时,该定时器以第一中断时间(T1)定时采样该通用IO接口的电平,当第一中断时间(T1)的采样点正好在起始位的下降沿时,关闭该定时器,对该第一中断时间(T1)延时指定时间(T),之后重新设置该定时器至该第二中断时间(T2)进行采样,
其中,该指定时间(T)为:T=T2*X%,X%是系统允许的时钟误差。
在另一种延时实施例中,模拟串口接收数据时,该定时器以第一中断时间(T1)定时采样的采样点落在起始位中接近下降沿的位置时,关闭该定时器,对该第一中断时间(T1)延时指定时间(T),之后重新设置该定时器至该第二中断时间(T2)进行采样,
其中,该指定时间(T)为:T=T2*X%,X%是系统允许的时钟误差。
模拟串口接收数据时,还包括以下步骤:
第二中断时间(T2)到,接收起始位,修改状态为接收数据位;
第二中断时间(T2)到,接收数据位,并记录读取次数,若读取次数等于数据报文的有效位数,修改状态为接收校验位;
第二中断时间(T2)到,接收校验位,根据接收到的数据内容以及校验位确定校验结果;校验结果错误时设置错误标志;校验结果正确时修改状态为接收停止位;
第二中断时间(T2)到,接收停止位;收到错误的停止位时,设置错误标志;收到正确的停止位时,修改状态为接收起始位。
第二方面,本申请实施例还提供了一种基于查询方式模拟串口通信的装置,包括定时器设定单元、定时查询单元、延时模块以及接收模块,
模拟串口接收数据时,该定时器设定单元用于以第一中断时间(T1)定时采样通用IO接口的电平;
当该定时查询单元查询到数据报文的起始位时,该延时模块用于对该第一中断时间(T1)的采样点延时指定时间(T),该定时器设定单元还用于调整该第一中断时间为第二中断时间(T2)进行采样,该接收模块用于按位接收该数据报文;
该接收模块完成接收该数据报文的停止位后,该定时器设定单元还用于恢复以该第一中断时间(T1)定时查询该通用IO接口的电平。
该装置还包括发送模块,该模拟串口发送数据时,该定时器设定单元用于根据通用IO接口的比特率设定第三中断时间(T3),该发送模块用于在每个第三中断时间的周期内根据发送数据报文的数据位设定模拟串口的电平状态,当一个数据报文发送完成后停止定时器。
其中,该定时器的第一中断时间(T1)为:T1=T2-2T;
该定时器的第二中断时间(T2)为:其中A为通信比特率;
该定时器的第三中断时间(T3)为:其中A为通信比特率。
具体实施时,模拟串口接收数据时,该定时器设定单元用于以第一中断时间(T1)定时采样该通用IO接口的电平,当第一中断时间(T1)的采样点在起始位的下降沿时,该延时模块用于对该第一中断时间(T1)延时指定时间(T),然后重新设置该定时器至该第二中断时间(T2)进行采样,
其中,该指定时间(T)为:T=T2*X%,X%是系统允许的时钟误差。
具体实施时,模拟串口接收数据时,该延时模块用于在该定时器以第一中断时间(T1)定时采样的采样点落在起始位中接近下降沿的位置时,对该第一中断时间(T1)延时指定时间(T),之后重新设置该定时器至该第二中断时间(T2)进行采样,
其中,该指定时间(T)为:T=T2*X%,X%是系统允许的时钟误差。
该接收模块用于按位接收该数据报文,包括起始位接收单元、数据位接收单元、校验位接收单元以及停止位接收单元,
该起始位接收单元用于接收起始位,修改状态为接收数据位;
该数据位接收单元用于接收数据位,并记录读取次数,若读取次数等于数据报文的有效位数,修改状态为接收校验位;
该校验位接收单元用于接收校验位,根据接收到的数据内容以及校验位确定校验结果;校验结果错误时设置错误标志;校验结果正确时修改状态为接收停止位;
该停止位接收单元用于接收停止位;收到错误的停止位时,设置错误标志;收到正确的停止位时,修改状态为接收起始位。
本申请的有益效果在于:提供一种基于查询方式模拟串口通信的方法和装置,采用通用定时器和通用IO接口即可实现模拟串口通信功能,对微控制器的选型没有任何限制,并能够节省微控制器的硬件资源。同时通过动态调整数据报文起始位的定时中断时间,以较长的第二中断时间完成数据接收,再恢复回第一中断时间进行检测采样,避免了微控制器因时钟误差造成的通信数据异常,提高数据接收准确率。并且,该基于查询方式模拟串口通信的方法和装置,通过设置用于延时的指定时间,可增大微控制器允许的时钟误差范围。
附图说明
一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。
图1是本申请实施例提供的基于查询方式模拟串口通信的方法的流程图;
图2是本申请实施例提供的基于查询方式模拟串口通信的装置的模块图;
图3是本申请实施例提供的基于查询方式模拟串口通信的方法的接收数据的定时中断采样示意图;
图4是本申请实施例提供的基于查询方式模拟串口通信方法的接收数据时定时中断延时采样的示意图;
图5是本申请实施例提供的基于查询方式模拟串口通信方法的接收数据时另一定时中断延时采样的示意图;
图6是本申请实施例提供的基于查询方式模拟串口通信的方法的单个数据报文接收流程图;以及
图7是本申请实施例提供的基于查询方式模拟串口通信的方法的单个数据报文发送流程图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
本申请涉及的基于查询方式模拟串口通信的方法和装置,采用通用定时器和通用IO接口即可实现模拟串口通信功能,对微控制器的选型没有任何限制,并能够节省微控制器的硬件资源。
在模拟串口接收数据时,控制该定时器以第一中断时间(T1)定时采样该通用IO接口的电平;当查询到数据报文的起始位时,对该第一中断时间(T1)延时指定时间(T),调整该定时器的第一中断时间为第二中断时间(T2)进行采样,按位接收该数据报文;完成接收该数据报文的停止位后,恢复该定时器以该第一中断时间(T1)定时查询该通用IO接口的电平。
通过调整数据报文起始位的定时中断时间,以较长的第二中断时间(T2)完成数据接收,再恢复至第一中断时间(T1)继续检测采样。避免了微控制器因时钟误差造成的通信数据异常。
并且,为了提高数据接收准确率,设置用于延时的指定时间,可增大微控制器允许的时钟误差范围。本实施例中,该第一中断时间(T1)设置为小于通信协议要求的第二中断时间(T2)。当设备的第一中断时间(T1)的采样点正好在起始位的下降沿时,将该第一中断时间(T1)延时指定时间(T)再将定时器的中断时间改为通信协议要求的第二中断时间(T2),以避免微控制器的时钟,比如微控制器的内部时钟,不稳定造成的通信异常。
本实施例中,假设通信比特率为A位/秒,则每接收一位数据需要的时间T2=1/A秒。每发送一位数据需要的时间T3=1/A秒。假设微控制器允许的时钟误差为X%,则允许的误差时间T=T2×X%。即检测到起始位后,延时T,再切换定时中断采样的时间为第二中断时间T2。
比特率A是单片机或计算机在串口通信时的速率。指的是信号被调制以后在单位时间内的变化,即单位时间内载波参数变化的次数。比如,每秒钟传送240个字符,而每个字符格式包含10位,比如包括1个起始位、1个停止位、7个数据位和1个校验位。这时的波特率为240波特,比特率为10位*240个/秒=2400位/秒。
依据通信比特率A以及允许的时钟误差X%,计算出定时中断采样起始位的第一中断时间T1,其中,推理过程如下:
T1=T2-2T;T1=T2-2T2×X%;T1=T2(1-2×X%)
比如,以9600位/秒的通信比特率,起始位1位,数据位8位,校验位1位,停止位1位,校验方式为偶校验为例加以说明。即相邻数据位之间的时间间隔T2=104微秒。同时以允许误差范围为10%为例加以说明。
计算各个中断时间的过程如下:
T2=1/9600=104微秒;
T=T2×X%=104*10%=10.4微秒,为便于微控制器处理计算,可四舍五入取整,即T=10微秒;
T1=T2(1-2×X%)=T2*(1-2*10%)=83微秒。
以下实施例均以第一中断时间T1,83微秒;第二中断时间T2,104微秒;指定时间(T)10微秒为例加以说明。可以理解的是,其它微控制器在接收不同数据格式的数据报文时,则中断时间对应发生改变。
实施例1
请参考图2,本实施例涉及基于查询方式模拟串口通信的装置,包括接收模块10、缓存单元17、延时模块20、定时器设定单元40、定时查询单元30以及发送模块50。
模拟串口接收数据时,该定时器设定单元40用于以第一中断时间T1定时采样通用IO接口的电平。
当该定时查询单元30查询到数据报文的起始位时,该定时器设定单元40还用于调整该第一中断时间为第二中断时间T2进行采样,该接收模块10用于按位接收该数据报文。
该接收模块10完成接收该数据报文的停止位后,该定时器设定单元40还用于恢复该第一中断时间T1定时查询该通用IO接口的电平。
请参考图3,所示为正常接收的波形的终端采样示意图。该定时查询单元30定时查询IO接口的电平,当查询起始位时,该定时器设定单元40设置第一中断时间T1为80微秒,如图3中短实线箭头所示。当检测到起始位后延时指定时间T,比如10微秒再重新设置定时中断时间为第二中断时间T2104微秒,如图中长实线箭头所示。当一帧数据接收完成后,再重新设置定时中断采样时间为第一中断时间T180微秒,重复之前的查询步骤。
该发送模块50用于在该模拟串口发送数据,该定时器设定单元40用于根据通用IO接口的比特率设定第三中断时间T3,该发送模块50在每个第三中断时间的周期内根据发送数据报文的数据位设定模拟串口的电平状态,当一个数据报文发送完成后停止定时器。
其中,该定时器的第一中断时间T1为:T1=T2-2T;
该定时器的第二中断时间T2为:其中A为通信比特率;
该定时器的第三中断时间T3为:其中A为通信比特率。
在特定采样点该延时模块20还用于避免数据出错。
比如,模拟串口接收数据时,当第一中断时间(T1)的采样点在起始位的下降沿时,该延时模块20对该第一中断时间T1延时指定时间T,然后重新设置该定时器至该第二中断时间T2进行采样,其中,该指定时间T为:T=T2*X%,X%是系统允许的时钟误差。
请参考图4,所示的第一中断时间(T1)的采样点刚好落在在电平信号的下降沿。
定时查询单元30定时中断采样IO接口电平,当第一中断时间(T1)采样点刚好在下降沿时,对第一中断时间T1延时指定时间T 10微秒,再设置定时中断采样时间为第二中断时间T2104微秒,则可以保证每次采样点都在离下降沿10微秒左右的地方,避免微控制器时钟不稳定,在一个时钟周期内采样两次。该延时模块20的设置可以避免采样点刚好落在起始位的下降沿,避免由于微控制器时钟误差,在一个脉冲内采样两次信号,导致数据错误。
在另一延时情形中,模拟串口接收数据时,该延时模块20在该定时器以第一中断时间T1定时采样的采样点落在起始位中接近下降沿的位置时,对该第一中断时间T1延时指定时间T,之后重新设置该定时器至该第二中断时间T2进行采样。
如图5所示,所示的采样点接近电平信号的下降沿。
该定时查询单元30以第一中断时间T1定时中断采样IO接口电平,当采样点在离第一个下降沿右边80微秒的地方时,实际会小于80微秒,该延时模块20延时10微秒,再重新设置定时中断采样时间为第二中断时间T2104微秒,则每次的采样点离波形上升沿还有14微秒的余量,不会出现在同一个脉冲信号内重复采样的情况。
本申请的模拟串口通信方法,通过延时时间,可以增大微控制器时钟的误差范围。减少微控制器因时钟误差较大而无法模拟串口通信的问题。
请一并参考图2和图6,该接收模块10包括起始位接收单元12、数据位接收单元14、校验位接收单元15以及停止位接收单元16。
该起始位接收单元12判断并接收起始位,完成起始位接收后修改状态为接收数据位。该数据位接收单元14判断并接收数据位,并记录读取次数,若读取次数等于数据报文的有效位数,修改状态为接收校验位。该校验位接收单元15判断并接收校验位,根据接收到的数据内容以及校验位确定校验结果;校验结果错误时设置错误标志;校验结果正确时修改状态为接收停止位。该停止位接收单元16判断并接收停止位;收到错误的停止位时,设置错误标志;收到正确的停止位时,修改状态为接收起始位。
实施例2
请一并参考图1和图3,本实施例的基于查询方式模拟串口通信的方法,由定时器以及通用IO接口来模拟串口通信,其改进部分主要在数据接收过程,主要包括以下步骤:
步骤101:模拟串口接收数据时,控制该定时器以第一中断时间T1定时采样该通用IO接口的电平;
步骤102:当通过采样点查询到数据报文的起始位时,对以第一中断时间T1的当前采样点延时指定时间T,然后,调整该定时器的第一中断时间为第二中断时间T2继续进行采样;
步骤103:按位接收该数据报文,比如,该数据报文包括起始位1位,数据位8位,校验位1位,停止位1位;
步骤104:完成接收该数据报文的停止位后,恢复该定时器以该第一中断时间T1定时查询该通用IO接口的电平。
模拟串口接收数据时,包括以下步骤:第二中断时间(T2)到,接收起始位,修改状态为接收数据位;第二中断时间(T2)到,接收数据位,并记录读取次数,若读取次数等于数据报文的有效位数,修改状态为接收校验位;第二中断时间(T2)到,接收校验位,根据接收到的数据内容以及校验位确定校验结果;校验结果错误时设置错误标志;校验结果正确时修改状态为接收停止位;第二中断时间(T2)到,接收停止位;收到错误的停止位时,设置错误标志;收到正确的停止位时,修改状态为接收起始位。
请同时参考图6,所示为单个数据报文的接收流程图:
步骤1:设置第一中断时间T1为80微秒。设置IO接口模式为数据接收模式,转至步骤2。
步骤2:以第一中断时间T1采样的定时中断时间到,读取IO接口电平,若为低电平,表示读取到起始位。关闭定时器,延时指定时间T,再重新设置定时器中断时间为第二中断时间T2104微秒,并开启定时器中断采样,转到步骤3执行。若为高电平,执行步骤2。
步骤3:以第二中断时间T2采样的定时中断时间到,读取IO接口电平,并记录读取次数,若读取次数等于数据报文的设定有效位数,比如N位,具体由通信协议中指定的数据位决定,则转到步骤4执行,否则执行步骤3。
步骤4:以第二中断时间T2采样的定时中断时间到,读取IO接口电平,根据接收到的有效数据以及校验位来判断校验和是否正确。若校验错误,设置奇偶校验错误标志。若校验正确,转到步骤5执行。
步骤5:以第二中断时间T2采样的定时中断时间到,将读取到的有效数据报文保存到串口接收缓冲区缓存单元17。读取IO接口电平,判断结束位是否正确,若结束位为低电平,则设置接收数据错误标志。若结束位为高电平,转到步骤1执行。
该基于查询方式模拟串口通信的方法还包括数据发送过程:该模拟串口发送数据时,根据通用IO接口的比特率设定该定时器的第三中断时间T3,在每个第三中断时间的周期内根据发送数据报文的数据位设定模拟串口的电平状态,当一个数据报文发送完成后停止定时器。
请参考图7,所示为单个数据报文的发送流程图:
步骤1:设置定时中断时间为第三中断时间T3104微秒。设置IO接口模式为发送模式,转到步骤2执行。
步骤2:以第三中断时间T3采样的定时中断时间到,发送起始位,转到步骤3执行。
步骤3:以第三中断时间T3采样的定时中断时间到,发送数据报文的数据位,并记录发送次数,若发送次数等于数据报文的有效位数N,由通信协议中指定的数据位决定,则转到步骤4执行,否则继续执行步骤3。
步骤4:以第三中断时间T3采样的定时中断时间到,根据发送的数据内容和校验方式,计算校验位,并发送。转到步骤5执行。
步骤5:以第三中断时间T3采样的定时中断时间到,发送停止位。设置发送完成标志。转到步骤1执行。
其中,该第一中断时间T1、第二中断时间T2以及第三中断时间T3的计算关系如下:该第一中断时间T1为:T1=T2-2T;
该第二中断时间T2为:其中A为通信比特率;
该第三中断时间T3为:其中A为通信比特率。
模拟串口接收数据时,该定时器以第一中断时间T1定时采样该通用IO接口的电平,当第一中断时间(T1)的采样点正好在起始位的下降沿时,关闭该定时器,对该第一中断时间T1延时指定时间T,之后重新设置该定时器至该第二中断时间T2进行采样,
其中,该指定时间T为:T=T2*X%,X%是系统允许的时钟误差。
模拟串口接收数据时,该定时器以第一中断时间T1定时采样的采样点落在起始位中接近下降沿的位置时,关闭该定时器,对该第一中断时间T1延时指定时间T,之后重新设置该定时器至该第二中断时间T2进行采样。
通过延时指定时间T,可以增大微控制器时钟的误差范围。减少微控制器因时钟误差较大而无法模拟串口通信的问题。
本申请实施例提供的基于查询方式模拟串口通信的方法,采用通用定时器和通用IO接口即可实现模拟串口通信功能,对微控制器的选型没有任何限制,并能够节省微控制器的硬件资源。同时通过动态调整数据报文起始位的定时中断时间,以较长的第二中断时间完成数据接收,再恢复回第一中断时间进行检测采样,避免了微控制器因时钟误差造成的通信数据异常,提高数据接收准确率。并且,该基于查询方式模拟串口通信的方法和装置,通过设置用于延时的指定时间,可增大微控制器允许的时钟误差范围。
通过以上的实施方式的描述,本领域普通技术人员可以清楚地了解到各实施方式可借助软件加通用硬件平台的方式来实现,当然也可以通过硬件。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;在本申请的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本申请的不同方面的许多其它变化,为了简明,它们没有在细节中提供;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
Claims (12)
1.一种基于查询方式模拟串口通信的方法,由定时器以及通用IO接口来模拟串口通信,其特征在于,包括以下步骤:
模拟串口接收数据时,控制所述定时器以第一中断时间(T1)定时采样所述通用IO接口的电平;
当查询到数据报文的起始位时,对所述第一中断时间(T1)的采样点延时指定时间(T)后,调整所述定时器的所述第一中断时间(T1)为第二中断时间(T2)进行采样,按位接收所述数据报文;
完成接收所述数据报文的停止位后,恢复所述定时器以第一中断时间(T1)定时查询所述通用IO接口的电平。
2.根据权利要求1所述的方法,其特征在于,还包括:
模拟串口发送数据时,根据通用IO接口的比特率设定所述定时器的第三中断时间(T3),在每个第三中断时间的周期内根据发送数据报文的数据位设定模拟串口的电平状态,当一个数据报文发送完成后停止定时器。
3.根据权利要求2所述的方法,其特征在于,
所述定时器的第一中断时间(T1)为:T1=T2-2T;
所述定时器的第二中断时间(T2)为:其中A为通信比特率;
所述定时器的第三中断时间(T3)为:其中A为通信比特率。
4.根据权利要求1-3任意一项所述的方法,其特征在于,模拟串口接收数据时,所述定时器以第一中断时间(T1)定时采样所述通用IO接口的电平,当第一中断时间(T1)的采样点在起始位的下降沿时,关闭所述定时器,对所述第一中断时间(T1)延时指定时间(T),之后重新设置所述定时器至所述第二中断时间(T2)进行采样,
其中,所述指定时间(T)为:T=T2*X%,X%是系统允许的时钟误差。
5.根据权利要求4所述的方法,其特征在于,模拟串口接收数据时,所述定时器以第一中断时间(T1)定时采样的采样点落在起始位中接近下降沿的位置时,关闭所述定时器,对所述第一中断时间(T1)延时指定时间(T),之后重新设置所述定时器至所述第二中断时间(T2)进行采样,
其中,所述指定时间(T)为:T=T2*X%,X%是系统允许的时钟误差。
6.根据权利要求5所述的方法,其特征在于,模拟串口接收数据时,包括以下步骤:
第二中断时间(T2)到,接收起始位,修改状态为接收数据位;
第二中断时间(T2)到,接收数据位,并记录读取次数,若读取次数等于数据报文的有效位数,修改状态为接收校验位;
第二中断时间(T2)到,接收校验位,根据接收到的数据内容以及校验位确定校验结果;校验结果错误时设置错误标志;校验结果正确时修改状态为接收停止位;
第二中断时间(T2)到,接收停止位;收到错误的停止位时,设置错误标志;收到正确的停止位时,修改状态为接收起始位。
7.一种基于查询方式模拟串口通信的装置,其特征在于,包括定时器设定单元、定时查询单元、延时模块以及接收模块,
模拟串口接收数据时,所述定时器设定单元用于以第一中断时间(T1)定时采样通用IO接口的电平;
当所述定时查询单元查询到数据报文的起始位时,所述延时模块用于对所述第一中断时间(T1)的采样点延时指定时间(T),所述定时器设定单元还用于调整所述第一中断时间为第二中断时间(T2)进行采样,所述接收模块用于按位接收所述数据报文;
所述接收模块完成接收所述数据报文的停止位后,所述定时器设定单元还用于恢复所述第一中断时间(T1)定时查询所述通用IO接口的电平。
8.根据权利要求7所述的装置,其特征在于,还包括发送模块,所述模拟串口发送数据时,所述定时器设定单元用于根据通用IO接口的比特率设定第三中断时间(T3),所述发送模块用于在每个第三中断时间的周期内根据发送数据报文的数据位设定模拟串口的电平状态,当一个数据报文发送完成后停止定时器。
9.根据权利要求8所述的装置,其特征在于,
所述定时器的第一中断时间(T1)为:T1=T2-2T;
所述定时器的第二中断时间(T2)为:其中A为通信比特率;
所述定时器的第三中断时间(T3)为:其中A为通信比特率。
10.根据权利要求7-9任意一项所述的装置,其特征在于,模拟串口接收数据时,所述定时器设定单元用于以第一中断时间(T1)定时采样所述通用IO接口的电平,当第一中断时间(T1)的采样点在起始位的下降沿时,所述延时模块用于对所述第一中断时间(T1)延时指定时间(T),然后重新设置所述定时器至所述第二中断时间(T2)进行采样,
其中,所述指定时间(T)为:T=T1*X%,X%是系统允许的时钟误差。
11.根据权利要求7-9任意一项所述的装置,其特征在于,模拟串口接收数据时,所述延时模块用于在所述定时器以第一中断时间(T1)定时采样的采样点落在起始位中接近下降沿的位置时,对所述第一中断时间(T1)延时指定时间(T),之后重新设置所述定时器至所述第二中断时间(T2)进行采样,
其中,所述指定时间(T)为:T=T1*X%,X%是系统允许的时钟误差。
12.根据权利要求11所述的装置,其特征在于,所述接收模块用于按位接收所述数据报文,包括起始位接收单元、数据位接收单元、校验位接收单元以及停止位接收单元,
所述起始位接收单元用于接收起始位,修改状态为接收数据位;
所述数据位接收单元用于接收数据位,并记录读取次数,若读取次数等于数据报文的有效位数,修改状态为接收校验位;
所述校验位接收单元用于接收校验位,根据接收到的数据内容以及校验位确定校验结果;校验结果错误时设置错误标志;校验结果正确时修改状态为接收停止位;
所述停止位接收单元用于接收停止位;收到错误的停止位时,设置错误标志;收到正确的停止位时,修改状态为接收起始位。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2017/113591 WO2019104531A1 (zh) | 2017-11-29 | 2017-11-29 | 一种基于查询方式模拟串口通信的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108701112A true CN108701112A (zh) | 2018-10-23 |
CN108701112B CN108701112B (zh) | 2020-04-28 |
Family
ID=63844115
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780009007.1A Active CN108701112B (zh) | 2017-11-29 | 2017-11-29 | 一种基于查询方式模拟串口通信的方法和装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN108701112B (zh) |
WO (1) | WO2019104531A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110879791A (zh) * | 2019-09-30 | 2020-03-13 | 湖南格兰博智能科技有限责任公司 | 一种非阻塞的两线串口通讯模拟方法 |
CN110908940A (zh) * | 2019-10-14 | 2020-03-24 | 百富计算机技术(深圳)有限公司 | 串口通讯参数调整的方法及终端设备 |
CN111610359A (zh) * | 2020-05-29 | 2020-09-01 | 上海挚达科技发展有限公司 | 一种充电桩控制引导电路电压采集的滤波方法 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3237662B1 (en) | 2014-12-24 | 2021-04-21 | INVISTA Textiles (U.K.) Limited | Easily settable stretch fabrics including low-melt fiber |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102521183A (zh) * | 2011-12-02 | 2012-06-27 | 深圳市科陆电子科技股份有限公司 | 用于嵌入式系统的模拟串口方法 |
CN103699509A (zh) * | 2014-01-03 | 2014-04-02 | 烟台东方威思顿电气有限公司 | 基于定时器录波的串口通讯方法 |
CN107357742A (zh) * | 2017-07-14 | 2017-11-17 | 上海瀚银信息技术有限公司 | 一种串口模拟方法和计算机设备 |
-
2017
- 2017-11-29 CN CN201780009007.1A patent/CN108701112B/zh active Active
- 2017-11-29 WO PCT/CN2017/113591 patent/WO2019104531A1/zh active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102521183A (zh) * | 2011-12-02 | 2012-06-27 | 深圳市科陆电子科技股份有限公司 | 用于嵌入式系统的模拟串口方法 |
CN103699509A (zh) * | 2014-01-03 | 2014-04-02 | 烟台东方威思顿电气有限公司 | 基于定时器录波的串口通讯方法 |
CN107357742A (zh) * | 2017-07-14 | 2017-11-17 | 上海瀚银信息技术有限公司 | 一种串口模拟方法和计算机设备 |
Non-Patent Citations (1)
Title |
---|
郏正学 等: "单片机模拟串口数据接收程序的实现及优化", 《单片机与嵌入式系统应用》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110879791A (zh) * | 2019-09-30 | 2020-03-13 | 湖南格兰博智能科技有限责任公司 | 一种非阻塞的两线串口通讯模拟方法 |
CN110879791B (zh) * | 2019-09-30 | 2021-03-19 | 湖南格兰博智能科技有限责任公司 | 一种非阻塞的两线串口通讯模拟方法 |
CN110908940A (zh) * | 2019-10-14 | 2020-03-24 | 百富计算机技术(深圳)有限公司 | 串口通讯参数调整的方法及终端设备 |
CN111610359A (zh) * | 2020-05-29 | 2020-09-01 | 上海挚达科技发展有限公司 | 一种充电桩控制引导电路电压采集的滤波方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2019104531A1 (zh) | 2019-06-06 |
CN108701112B (zh) | 2020-04-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108701112A (zh) | 一种基于查询方式模拟串口通信的方法和装置 | |
CN109857685B (zh) | 一种mpu与fpga扩展多串口的实现方法 | |
CN107491581B (zh) | 一种对数字电路进行仿真验证的方法及时钟发生器 | |
JP5300732B2 (ja) | 高速シリアルバッファを有するメモリシステム | |
WO2023207376A1 (zh) | 时序调整方法和装置、存储介质及电子设备 | |
KR20090077015A (ko) | 듀얼-모드 메모리 상호접속을 포함하는 메모리 제어기 | |
US20200295874A1 (en) | Check code processing method, electronic device and storage medium | |
CN108874686B (zh) | 内存参数调节方法、装置及设备 | |
CN113660351B (zh) | 数据通信方法、装置、通信终端及计算机可读存储介质 | |
US11805026B2 (en) | Channel training using a replica lane | |
US11409689B2 (en) | Method and device for sending data according to a signal timing | |
CN110290187A (zh) | 数据信息的传输方法及装置、存储介质、电子装置 | |
CN104836636A (zh) | 基于新型can帧进行通信的方法、装置及系统 | |
CN108021034A (zh) | 一种精确定时及数据同步的系统及方法 | |
CN105430678A (zh) | Ptn设备接口测试的方法及装置 | |
CN101094108B (zh) | 测试低速容错can网络中nerr位读取与数据帧同步的方法 | |
JP6725692B2 (ja) | 非同期フィードバックトレーニング | |
CN102821457A (zh) | 基于软件无线电的时钟同步方法和软件无线电系统 | |
CN105376117A (zh) | 一种fc交换机芯片数据监控测试方法 | |
CN101277503B (zh) | 模拟基带支持WiMAX系统测试的方法 | |
EP3260984B1 (en) | Asynchronous feedback training | |
CN102193774B (zh) | 数据读取方法及装置 | |
Fatang et al. | The design and application of I2C Bus in the TD-LTE Comprehensive Test Instrument | |
JPH03177989A (ja) | タイムレコーダシステム | |
CN109474493A (zh) | 具有自检功能的通信方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |