CN101471787A - 基于无线通信模块的软件模拟uart的方法 - Google Patents
基于无线通信模块的软件模拟uart的方法 Download PDFInfo
- Publication number
- CN101471787A CN101471787A CNA2007101729659A CN200710172965A CN101471787A CN 101471787 A CN101471787 A CN 101471787A CN A2007101729659 A CNA2007101729659 A CN A2007101729659A CN 200710172965 A CN200710172965 A CN 200710172965A CN 101471787 A CN101471787 A CN 101471787A
- Authority
- CN
- China
- Prior art keywords
- data
- wireless communication
- communication module
- software simulation
- receiving
- 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.)
- Pending
Links
Images
Landscapes
- Communication Control (AREA)
Abstract
本发明公开了一种基于无线通信模块的软件模拟UART方法,包括中断处理方法,以及位于中断处理方法流程末端的数据发送方法和数据接收方法,三种方法共同组成了本发明的软件模拟UART的方法。本发明仅使用2个普通I/O和1个定时器,由于不需要INT的限制,可以扩展出多个串口,且带FIFO的功能,扩展模拟UART的收发数据在中断服务中完成。本发明对于基于无线通信模块的进行二次开发的通信终端企业来说,能够削减制造成本,节约人力资源,简化生产工艺;解决了基于无线通信模块二次开发过程中需要额外RS232芯片的问题,提供一种简便、安全、廉价、稳定的方法,无需硬件额外支出,而且还加强对I/O口的复用,提高多UART口处理能力。
Description
技术领域
本发明涉及一种基于无线通信模块的软件模拟UART(通用异步收发器)的方法,特别是基于无线通信模块的一种软件算法替代普通RS232接口电路的方法。
背景技术
目前大多数公司,基于无线通信模块的辅助EVB板(一种电路板)大部分必须集成多个RS232接口芯片,以满足各种要求。例如在SIM300模块辅助EVBV2.02上集成两块SPEX sp3238eea RS232接口芯片(一种RS232接口芯片),这两块SPEX sp3238eea RS232接口芯片分别提供MAIN(主函数)串口和DEBUG(调试)串口支持。为实现稳定可靠的串口通信在硬件设计上还必须考虑添加光耦隔离抗干扰等硬件电路。这种方法在实现方法上并不复杂,但最大的问题是增加成本,在以百万级计算的大规模制造中,这种方法的缺点一览无余。电子产品的开发设计时,通常要求在保证性能的情况下降低硬件成本,软件模拟扩展串口提供了一种降低成本的好方法。
发明内容
本发明的目的是提供一种基于无线通信模块的软件模拟UART的方法,该方法仅使用2个普通I/O和1个定时器,由于不受限制,可以扩展出多个串口,且带FIFO(先进先出队列)的功能,该方法扩展模拟UART的收发数据在中断服务中完成。
本发明的目的是通过以下技术方案实现的:
一种基于无线通信模块的软件模拟UART方法中的中断处理方法,其特点在于,其包括以下步骤:
1)接收起始计数为零;
2)如果三次采样到接收I/O引脚的电平为高、低、低,接收I/O口电平计数设置为8位,时间计数清零;
3)分别给接收和发送I/O口电平检测位清零,之后分成两个分支;
4)如果接收口电平采样计数超过3并且接收起始计数不为零,则进入数据接收子程序;
5)如果发送口电平采样计数超过3,则进入发送数据子程序。
其中,中断定时间隔为波特率定时间隔的1/3,以3倍的波特率对RxD进行采样。
一种基于无线通信模块的软件模拟UART方法中的数据发送方法,其特点在于,其包括以下步骤:
1)当启动字节发送时,通过TxD先发起始位;
2)然后发数据位和奇偶数效验位;
3)最后再发停止位。
其中,该发送过程由发送状态机控制,每次中断只发送1个位,经过若干个定时中断完成1个字节帧的发送。
一种基于无线通信模块的软件模拟UART方法中的数据接收方法,其特点在于,其包括以下步骤:
1)当不在字节帧接收过程时,每次定时中断以3倍的波特率监视RxD的状态,当其连续3次采样电平依次为高、低、低时,表示检测到起始位,则开始启动一次字节帧接收;
2)数据接收过程中,依次存储RxD的逻辑位形成字节数据,当数据接收完毕且停止位为1时,表示接收到了有效数据;
3)将接收结果存储到接收FIFO队列中去。
其中,该字节帧接收过程由接收状态机控制,每次中断只接收1个位,经过若干个定时中断完成1个字节帧的接收。
本发明的积极进步效果在于:
1、对于基于无线通信模块的进行二次开发的通信终端企业来说,能够削减制造成本,节约人力资源,简化生产工艺;
2、解决了基于无线通信模块二次开发过程中需要额外RS232芯片的问题,提供一种简便、安全、廉价、稳定的方法,无需硬件额外支出,而且还加强对I/O口的复用,提高多UART口处理能力。
附图说明
图1为普通MCU(微控制器)与SIM300模块连接图。
图2为本发明的MCU与SIM300模块连接图。
图3为本发明较佳实施例中,中断处理方法的流程图。
图4为本发明较佳实施例中,数据发送方法的流程图。
图5为本发明较佳实施例中,数据接收方法的流程图。
具体实施方式
下面结合附图给出本发明较佳实施例,以详细说明本发明的技术方案。
一、本发明的硬件连接
本实施例中无线通信模块选用SIMCOM公司的SIM300模块,但不局限于该模块。如图1所示为普通MCU与SIM300模块的连接图,图中有两块RS232接口芯片分别提供MAIN串口和DEBUG串口支持。但电子产品的开发设计中,通常要求在保证性能的情况下降低硬件成本,所以如图2所示为本发明中的MCU与SIM300模块的连接图,图中省去了额外的RS232芯片,仅使用2个普通I/O口和一个定时器。
二、本软件模拟UART的方法中的中断处理方法
本发明的软件模拟UART的方法中包括中断处理方法,以及位于中断处理方法流程末端的数据发送方法和数据接收方法,三种方法共同组成了本发明的软件模拟UART的方法。中断处理方法中首先打开定时器的中断,将定时器设置为自装载模式,依照波特率设置定时中断的定时间隔,启动定时器,并进行UART各变量的初始化。中断定时时间为波特率定时的1/3,即以3倍的波特率对RxD进行采样,实现起始位的判别,当起始位到达时启动接收过程状态机。将该定时进行3分频再调用数据的发送和接收过程,进行准确波特率下的串口通信。
如图3所示为中断处理方法的具体步骤流程图。
步骤101,接收起始计数为零,如果不为零则执行步骤109。
步骤102,判断三次采样到接收I/O引脚的电平是否为高、低、低,如果结果为是则继续下一步骤;否则执行步骤109,中断退出。
步骤103,接收I/O口电平计数设置为8位,时间计数清零。
步骤104,分别给接收和发送I/O口电平检测位清零,之后分成两个分支105和107。
步骤105,如果接收口电平采样计数超过3并且接收起始计数不为零,则进入步骤106数据接收子程序;否则执行步骤109。
步骤107,如果发送口电平采样计数超过3,则进入步骤108发送数据子程序;否则执行步骤109。
步骤109,中断退出。
三、本软件模拟UART的方法中的数据发送和数据接收方法
在串口的异步通信中,数据以字节为单位的字节帧进行传送,发送端和接收端必须按照相同的字节帧格式和波特率进行通信,其中字节帧格式规定了起始位、数据位、寄偶效验位、停止位。起始位是字节帧的开始,使数据线处于逻辑0状态,用于向接收端表明开始发送数据帧,起到使发送和接收设备实现同步。停止位是字节帧的终止,使数据线处于逻辑1状态,用于向接收端表明数据帧发送完毕。波特率采用标准速度,如4800、9600、19200、28800、38400、57600、115200等。
在本设计对硬件要求方面,仅仅占用CPU的任意2个I/O端口和1个定时器,利用定时器的定时中断功能实现精确的波特率定时,发送和接收都在定时中断的控制之下进行。
如图4所示为数据发送方法的流程图,与图3中步骤108相对应。
步骤1081,当启动字节发送时,通过TxD先发起始位;
步骤1082,然后发数据位和奇偶数效验位;
步骤1083,最后再发停止位。
上述发送过程由发送状态机控制,每次中断只发送1个位,经过若干个定时中断完成1个字节帧的发送。当数据发送状态结束时,检测发送FIFO队列是否为空,若非空则取出发送数据,然后启动发送状态;当处于发送状态时,则按照状态机的状态进行起始位、数据位和停止位的发送。
如图5所示为数据接收方法的流程图,与图3中步骤106相对应。
步骤1061,当不在字节帧接收过程时,每次定时中断以3倍的波特率监视RxD的状态,当其连续3次采样电平依次为高、低、低时,表示检测到起始位,则开始启动一次字节帧接收;
步骤1062,数据接收过程中,依次存储RxD的逻辑位形成字节数据,当数据接收完毕且停止位为1时,表示接收到了有效数据;
步骤1063,将接收结果存储到接收FIFO队列中去。
上述字节帧接收过程由接收状态机控制,每次中断只接收1个位,经过若干个定时中断完成1个字节帧的接收。数据接收过程中,依次存储RxD的逻辑位形成字节数据,当数据接收完毕且停止位为1时,表示接收到了有效数据,就将结果存储到接收FIFO队列中去。
为了提高串口的性能,在发送和接收上都实现了FIFO功能,提高通信的实时性。FIFO的长度可以进行自由定义,适应用户的不同需要。波特率的计算按照计算公式进行,在设置最高波特率时一定要考虑模拟UART程序代码的执行时间,该定时时间必须大于模拟UART的程序的规定时间。CPU的执行速度越快,则可以实现更高的串口通讯速度。
综上所述,本发明提出的模拟UART设计方法,其独特之处在于:仅仅使用任意2个普通I/O引脚和1个定时中断实现了全双工串口,对硬件的占用较少,具有多串口扩展能力;在串口接收的起始位判别时采用了连续3次采样的判别方法,该方法实现简单、准确率高;用定时中断实现了串口数据的发送和接收,并实现了FIFO队列,使串口发送和接收工作效率高。
虽然以上描述了本发明的具体实施方式,但是本领域的技术人员应当理解,这些仅是举例说明,在不背离本发明的原理和实质的前提下,可以对这些实施方式做出多种变更或修改。因此,本发明的保护范围由所附权利要求书限定。
Claims (6)
1、一种基于无线通信模块的软件模拟通用异步收发器方法中的中断处理方法,其特征在于,其包括以下步骤:
1)接收起始计数为零;
2)如果三次采样到接收I/O引脚的电平为高、低、低,接收I/O口电平计数设置为8位,时间计数清零;
3)分别给接收和发送I/O口电平检测位清零,之后分成两个分支;
4)如果接收口电平采样计数超过3并且接收起始计数不为零,则进入数据接收子程序;
5)如果发送口电平采样计数超过3,则进入发送数据子程序。
2、根据权利要求1所述的基于无线通信模块的软件模拟通用异步收发器方法中的中断处理方法,其特征在于,中断定时间隔为波特率定时间隔的1/3,以3倍的波特率对接收数据进行采样。
3、一种基于无线通信模块的软件模拟通用异步收发器方法中的数据发送方法,其特征在于,其包括以下步骤:
1)当启动字节发送时,通过发送数据先发起始位;
2)然后发数据位和奇偶数效验位;
3)最后发停止位。
4、根据权利要求3所述的基于无线通信模块的软件模拟通用异步收发器方法中的数据发送方法,其特征在于,该发送过程由发送状态机控制,每次中断只发送1个位,经过若干个定时中断完成1个字节帧的发送。
5、一种基于无线通信模块的软件模拟通用异步收发器方法中的数据接收方法,其特征在于,其包括以下步骤:
1)当不在字节帧接收过程时,每次定时中断以3倍的波特率监视发送数据的状态,当其连续3次采样电平依次为高、低、低时,表示检测到起始位,则开始启动一次字节帧接收;
2)数据接收过程中,依次存储接收数据的逻辑位形成字节数据,当数据接收完毕且停止位为1时,表示接收到了有效数据;
3)将接收结果存储到接收先进先出队列中去。
6、根据权利要求5所述的基于无线通信模块的软件模拟通用异步收发器方法中的数据接收方法,其特征在于,该字节帧接收过程由接收状态机控制,每次中断只接收1个位,经过若干个定时中断完成1个字节帧的接收。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2007101729659A CN101471787A (zh) | 2007-12-25 | 2007-12-25 | 基于无线通信模块的软件模拟uart的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2007101729659A CN101471787A (zh) | 2007-12-25 | 2007-12-25 | 基于无线通信模块的软件模拟uart的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101471787A true CN101471787A (zh) | 2009-07-01 |
Family
ID=40828930
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2007101729659A Pending CN101471787A (zh) | 2007-12-25 | 2007-12-25 | 基于无线通信模块的软件模拟uart的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101471787A (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102521183A (zh) * | 2011-12-02 | 2012-06-27 | 深圳市科陆电子科技股份有限公司 | 用于嵌入式系统的模拟串口方法 |
CN102546843A (zh) * | 2012-01-17 | 2012-07-04 | 厦门雅迅网络股份有限公司 | 一种通过软件模拟实现多个uart通信接口的方法 |
CN103268248A (zh) * | 2012-10-17 | 2013-08-28 | 厦门雅迅网络股份有限公司 | Arm平台linux系统下模拟多路全双工串口的方法 |
CN103327012A (zh) * | 2013-05-30 | 2013-09-25 | 江西洪都航空工业集团有限责任公司 | 一种基于通讯协议的可通用rs232/422/485数据接收方法 |
CN104156335A (zh) * | 2014-08-08 | 2014-11-19 | 成都联星微电子有限公司 | 一种uart多接口复用方法 |
CN107302531A (zh) * | 2017-06-19 | 2017-10-27 | 青岛华潞佳电子科技有限公司 | 一种基于状态机和环形队列的串口命令解析方法 |
CN108304285A (zh) * | 2018-01-15 | 2018-07-20 | 航天科工防御技术研究试验中心 | 一种多端口通用异步收发器测试方法 |
CN109783431A (zh) * | 2019-02-25 | 2019-05-21 | 东莞蕾纳智能科技有限公司 | 微处理器间i/o端口通信方法 |
CN110879791A (zh) * | 2019-09-30 | 2020-03-13 | 湖南格兰博智能科技有限责任公司 | 一种非阻塞的两线串口通讯模拟方法 |
CN112597081A (zh) * | 2020-12-22 | 2021-04-02 | 青岛鼎信通讯股份有限公司 | 基于低压物联感知终端的uart软件实现方法 |
-
2007
- 2007-12-25 CN CNA2007101729659A patent/CN101471787A/zh active Pending
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102521183B (zh) * | 2011-12-02 | 2018-01-26 | 深圳市科陆电子科技股份有限公司 | 用于嵌入式系统的模拟串口方法 |
CN102521183A (zh) * | 2011-12-02 | 2012-06-27 | 深圳市科陆电子科技股份有限公司 | 用于嵌入式系统的模拟串口方法 |
CN102546843A (zh) * | 2012-01-17 | 2012-07-04 | 厦门雅迅网络股份有限公司 | 一种通过软件模拟实现多个uart通信接口的方法 |
CN103268248A (zh) * | 2012-10-17 | 2013-08-28 | 厦门雅迅网络股份有限公司 | Arm平台linux系统下模拟多路全双工串口的方法 |
CN103268248B (zh) * | 2012-10-17 | 2015-12-16 | 厦门雅迅网络股份有限公司 | Arm平台linux系统下模拟多路全双工串口的方法 |
CN103327012A (zh) * | 2013-05-30 | 2013-09-25 | 江西洪都航空工业集团有限责任公司 | 一种基于通讯协议的可通用rs232/422/485数据接收方法 |
CN104156335A (zh) * | 2014-08-08 | 2014-11-19 | 成都联星微电子有限公司 | 一种uart多接口复用方法 |
CN107302531A (zh) * | 2017-06-19 | 2017-10-27 | 青岛华潞佳电子科技有限公司 | 一种基于状态机和环形队列的串口命令解析方法 |
CN108304285A (zh) * | 2018-01-15 | 2018-07-20 | 航天科工防御技术研究试验中心 | 一种多端口通用异步收发器测试方法 |
CN109783431A (zh) * | 2019-02-25 | 2019-05-21 | 东莞蕾纳智能科技有限公司 | 微处理器间i/o端口通信方法 |
CN109783431B (zh) * | 2019-02-25 | 2023-02-07 | 东莞蕾纳智能科技有限公司 | 微处理器间i/o端口通信方法 |
CN110879791A (zh) * | 2019-09-30 | 2020-03-13 | 湖南格兰博智能科技有限责任公司 | 一种非阻塞的两线串口通讯模拟方法 |
CN110879791B (zh) * | 2019-09-30 | 2021-03-19 | 湖南格兰博智能科技有限责任公司 | 一种非阻塞的两线串口通讯模拟方法 |
CN112597081A (zh) * | 2020-12-22 | 2021-04-02 | 青岛鼎信通讯股份有限公司 | 基于低压物联感知终端的uart软件实现方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101471787A (zh) | 基于无线通信模块的软件模拟uart的方法 | |
CN102546843B (zh) | 一种通过软件模拟实现多个uart通信接口的方法 | |
CN102819512B (zh) | 一种基于spi的全双工通信装置及其方法 | |
CN202870808U (zh) | 一种spi串口模块的fpga实现装置 | |
CN101127023B (zh) | 一种多总线接口的通用异步串口扩展芯片 | |
CN104809094B (zh) | Spi控制器及其通信方法 | |
CN102306136B (zh) | 基于单片机输入捕获功能的波特率自适应方法 | |
CN107592250B (zh) | 基于航空fc总线多速率自适应测试设备 | |
CN110471872A (zh) | 一种基于zynq芯片实现m-lvds总线数据交互系统和方法 | |
CN102722462A (zh) | 一种同步通信装置及其控制方法 | |
CN106933772A (zh) | 基于uart ip核的sci通讯方法 | |
CN100480923C (zh) | I2c总线从控制器软实现方法 | |
CN102223452A (zh) | 移动终端的tty测试方法及系统 | |
CN101146090B (zh) | 一种基于usart总线的发送接收数据的方法及其装置 | |
CN102546033A (zh) | 采用脉冲调制结合串口方式实现的多机通信装置 | |
CN103107862B (zh) | 逻辑器件及其mdio数据发送方法 | |
CN202533933U (zh) | 可编程逻辑门阵列的i2c接口配置电路及可编程逻辑门阵列 | |
CN103164314A (zh) | 基于异步物理层接口的PCIe接口芯片硬件验证方法 | |
CN104156335A (zh) | 一种uart多接口复用方法 | |
CN102323914B (zh) | 一种自动检测韦根输入的控制器接口的控制方法 | |
CN102970300A (zh) | 一种异步通信协议 | |
CN200944235Y (zh) | 数字信号处理器同步串口与异步串行设备的接口装置 | |
CN208477514U (zh) | 一种智能温控器的spi转uart的模拟电路 | |
CN102420734A (zh) | 一种can总线拓扑结构实现系统 | |
CN205725785U (zh) | 一种并行数据同步采集装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Open date: 20090701 |