CN112131153B - 一种使用arm处理器串口进行实时通讯的方法 - Google Patents

一种使用arm处理器串口进行实时通讯的方法 Download PDF

Info

Publication number
CN112131153B
CN112131153B CN202010966993.3A CN202010966993A CN112131153B CN 112131153 B CN112131153 B CN 112131153B CN 202010966993 A CN202010966993 A CN 202010966993A CN 112131153 B CN112131153 B CN 112131153B
Authority
CN
China
Prior art keywords
dma
data
serial port
interrupt
transmission
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.)
Active
Application number
CN202010966993.3A
Other languages
English (en)
Other versions
CN112131153A (zh
Inventor
侯凤霞
陈安升
扈光锋
徐兴华
张凌宇
刘垒
林梦娜
袁书博
王康
徐超
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Automation Control Equipment Institute BACEI
Original Assignee
Beijing Automation Control Equipment Institute BACEI
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Automation Control Equipment Institute BACEI filed Critical Beijing Automation Control Equipment Institute BACEI
Priority to CN202010966993.3A priority Critical patent/CN112131153B/zh
Publication of CN112131153A publication Critical patent/CN112131153A/zh
Application granted granted Critical
Publication of CN112131153B publication Critical patent/CN112131153B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Communication Control (AREA)

Abstract

本发明公开一种使用ARM处理器串口进行实时通讯的方法,采用DMA和串口空闲中断相结合的方法实现串口数据的发送和接收,DMA保证将数据的接收和发送转入后台操作,不占用主处理器的时间;在与接收DMA缓存交换数据时需将CACHE使能关闭,保证数据交换的可靠性;发送和接收数据的DAM通道完全独立,互不影响,保证串口的全双工通讯和数据的实时性;利用空闲中断方式,可以实现整包数据接收,在串口通讯线上完成一包数据发送后再进入中断程序进行数据接收,减少进入接收中断的次数,提高程序运行效率;此方法节省发送和接收数据占用主处理器的时间,可以缩短导航周期,提高微惯导系统的精度。

Description

一种使用ARM处理器串口进行实时通讯的方法
技术领域
本发明涉及使用串口进行实时通讯方法,具体涉及一种小型化微机电惯性导航系统用ARM处理器串口实时通讯的实现方法。
背景技术
微小型惯性导航系统由于功耗和体积的需求,采用低功耗小体积的ARM处理器作为系统的核心器件,完成与惯性器件MEMS陀螺仪、MEMS加速度计、磁强计和高度计等数据采集后,经过误差补偿和积分,获得被测载体的加速度、角速率、姿态、位置及速度等运动信息后,需要将惯性信息实时周期性发送给外部设备,数据更新周期为1ms,并实时接收外部设备发送的数据,完成惯性导航系统的初始信息装订和周期性装订数据。为满足微小型惯性导航系统的小体积需求,仅采用体积小功耗低的ARM处理器,该处理器封装较小,内部接口种类丰富,但各个接口的资源有限,串口的缓存较小,接收和发送数据均占用处理器的时间。在惯性导航系统中ARM处理器的主要任务是进行标定参数误差补偿、动态误差补偿及导航滤波解算等,要实现1ms的导航周期并满足软件运行20%的时间余量,需要保证处理器的解算时间,不能占用太多时间进行串口数据的实时接收和发送,受微小型系统体积限制无法增加FPGA等可编程器件辅助实现智能通讯。
发明内容
本发明提供了一种使用ARM处理器串口进行实时通讯的方法,实现可靠实时通讯。
为解决以上技术问题,本发明一种使用ARM处理器串口进行实时通讯的方法,包括:
串口数据的接收,采用ARM处理器的串口空闲中断方式,硬件在检测到串行通讯线上连续发送的数据包中有一段空闲时间后触发空闲中断,数据存储在接收DMA缓存中;
串口数据的发送,采用主动周期性发送方式,软件将要发送的串口数据及数据长度放入相应的存储器中,并启动串口DMA发送,DMA会自动连续进行发送,完成发送后置位相应的标志或者触发发送中断。
进一步地,在数据的接收、发送之前,首先进行初始化,步骤如下:
串口物理层链路的初始化,设置波特率、模式、字长和采样率;使能串口CR3中DMA发送和DMA接收位;使能CR1寄存器中的空闲中断位,设置串口中断入口和中断优先级分组;
串口接收DMA初始化,首先进行DMA通道设置,设置串口DMA接收通道,将串口的外设地址赋值给DMA流,指定DMA存储器的起始地址,设置DMA要接收的数据流长度,将DMA的CR寄存器清零,DMA操作方式设置为外设流控制,外设串口设置为非增量模式,存储器设置为增量模式,根据串口协议设置数据位长度,传输方式设置为单次突发传输,选择要设置的通道号;
串口发送DMA初始化,首先进行DMA通道设置,设置串口DMA发送通道,将串口的外设地址赋值给DMA流,指定DMA存储器的起始地址,设置DMA要发送的数据长度;将DMA的CR寄存器清零,DMA操作方式设置为存储器控制,外设串口设置为非增量模式,存储器设置为增量模式,根据串口协议设置数据位长度,传输方式应设置为单次突发传输;根据需要设置的串口发送对应的通道号。
进一步地,所述串口数据的接收步骤具体包括:
空闲中断为通讯线出现大于一个字节长度的空闲传输时,触发中断,硬件检测到串口中断进入到中断服务流程中后,首先读取串口中断状态寄存器,判断是否为空闲中断位触发的中断,如果为否则清除中断状态寄存器后退出中断服务流程;如果为是则关闭DMA接收,关闭串口DMA接收,读取DMA数据长度寄存器,清除DMA接收标志,按照读取到的数据长度将数据从DMA缓存中取出;在读取之前,关闭CACHE,按照接收数据长度读取完成后,再使能CACHE。
进一步地,解析收到的串口通讯数据在接收中断流程或主流程中进行数据解析。
进一步地,串口数据的发送步骤具体包括:
根据发送数据长度和波特率确定发送周期,在每个定时发送周期到后,首先判断上一个发送周期数据是否完成发送,如未完成,需报发送超时错误;若完成发送则关闭DMA发送,关闭串口DMA发送,清除DMA发送标志,按照发送的数据长度将数据写入DMA缓存中,完成后再次启动DMA发送。
本发明采用串口接收空闲中断和DMA发送接收的通讯方式,该方法能够保证串口数据通讯的实时性和可靠性,能够减少数据通讯占用处理器的时间,使处理器专注于导航解算,缩短惯性导航解算周期,提高惯性导航系统精度,可应用于微机电惯性导航系统中。
附图说明
附图1串口空闲中断和DMA发送接收数据初始化流程图;
附图2串口接收流程图;
附图3串口发送流程图;
具体实施方式
下面结合附图对本发明作进一步详细说明。
如附图1所示的本发明提供的串口和DMA发送接收数据初始化流程框图中,串口初始化步骤如下:
首先进行串口物理层链路的初始化设置,波特率、模式、字长和采样率等;使能串口CR3中DMA发送和DMA接收位;使能CR1寄存器中的空闲中断位,设置好串口中断入口和中断优先级分组,由此便完成了串口的初始化。为防止误触发中断,对串口的使能应该在整个初始化流程最后步骤进行。代码如下,其中temp为要设置的波特率,USART1_IRQn中断向量。
如附图1所示的本发明提供的串口和DMA发送接收数据初始化流程框图中,串口接收DMA初始化步骤如下:
首先进行DMA通道设置,设置串口DMA接收通道,将串口的外设地址赋值给DMA流,即DMA与外设建立链接;指定DMA存储器的起始地址,即DMA自动接收数据缓存的地址;DMA要接收的数据流长度可设置,但在空闲中断方式下,数据长度系统强制为0xFFFF,接收到数据后以字节为单位自动减1;将DMA的CR寄存器清零,保证DMA处于可设置状态;DMA操作方式应设置为外设流控制,这样在串口有数据要接收时便自动触发DMA接收到内部缓存中,外设串口设置为非增量模式,存储器设置为增量模式,收到数据后存储器地址指针自动加1;数据位长度根据串口协议设置为8位(字节模式),传输方式应设置为单次突发传输,即被动实时接收方式;由于ARM处理器具有多个串口,每个串口的接收和发送对应不同的通道,选择要设置的通道号。由此便完成了串口接收通道的DMA初始化。代码如下,其中par、mar、ndtr、chx为外设地址、存储器地址、数据长度和通道号。
如附图1所示的本发明提供的串口和DMA发送接收数据初始化流程框图中,串口发送DMA初始化步骤如下:
首先进行DMA通道设置,设置串口DMA发送通道,将串口的外设地址赋值给DMA流,即DMA与外设建立链接;指定DMA存储器的起始地址,即DMA自动发送数据缓存的地址;根据需要设置DMA要发送的数据长度;将DMA的CR寄存器清零,保证DMA处于可设置状态;在串口发送流程中,DMA操作方式应设置为存储器控制,这样在使能了串口发送后,DMA便自动将缓存中的数据发送到对应的外设中;外设串口设置为非增量模式,存储器设置为增量模式,完成一个字节的数据发送后存储器地址指针自动加1;数据位长度根据串口协议设置为8位(字节模式),传输方式应设置为单次突发传输;根据需要设置的串口发送对应的通道号。由此便完成了串口发送通道的DMA初始化。代码如下,其中par、mar、chx为外设地址、存储器地址、数据长度和通道号。
如附图2所示的本发明提供的串口接收流程框图中,串口接收步骤如下:
空闲中断为通讯线出现大于一个字节长度的空闲传输时,触发中断,硬件检测到串口中断进入到中断服务流程中后,首先读取串口中断状态寄存器,判断是否为空闲中断位触发的中断,如果为否则清除中断状态寄存器后退出中断服务流程;否则关闭DMA接收,关闭串口DMA接收,读取DMA数据长度寄存器,清除DMA接收标志,按照读取到的数据长度将数据从DMA缓存中取出,在读取之前,为确保在对ARM处理器内存连续操作时,不与CACHE发生冲突,关闭CACHE,按照接收数据长度读取完成后,再使能CACHE。用户可根据需要确定是否在接收中断流程中处理解析收到的串口通讯数据,如发送数据时序紧张,可在主流程中进行数据解析。由此完成了串口空闲中断方式的DMA接收流程。
如附图3所示的本发明提供的串口发送流程框图中,串口发送步骤如下:
串口发送对处理器来说一般都是主动周期性发送,发送周期根据发送数据长度和波特率确定,并保留20%的时间余量,在每个定时发送周期到后,首先判断上一个发送周期数据是否完成发送,如未完成,需报发送超时错误。若完成发送则关闭DMA发送,关闭串口DMA发送,清除DMA发送标志,按照发送的数据长度将数据写入DMA缓存中,完成后再次启动DMA发送。由此完成了DMA发送数据流程。
上述具体实施方式仅限于解释和说明本发明的技术方案,但并不能构成对权利要求保护范围的限定。本领域技术人员应当清楚,在本发明的技术方案的基础上做任何简单的变形或替换而得到的新的技术方案,均落入本发明的保护范围内。

Claims (3)

1.一种使用ARM处理器串口进行实时通讯的方法,其特征在于,包括:
串口数据的接收,采用ARM处理器的串口空闲中断方式,硬件在检测到串行通讯线上连续发送的数据包中有一段空闲时间后触发空闲中断,数据存储在接收DMA缓存中;
串口数据的发送,采用主动周期性发送方式,软件将要发送的串口数据及数据长度放入相应的存储器中,并启动串口DMA发送,DMA会自动连续进行发送,完成发送后置位相应的标志或者触发发送中断;
在数据的接收、发送之前,首先进行初始化,步骤如下:
串口物理层链路的初始化,设置波特率、模式、字长和采样率;使能串口CR3中DMA发送和DMA接收位;使能CR1寄存器中的空闲中断位,设置串口中断入口和中断优先级分组;
串口接收DMA初始化,首先进行DMA通道设置,设置串口DMA接收通道,将串口的外设地址赋值给DMA流,指定DMA存储器的起始地址,设置DMA要接收的数据流长度,将DMA的CR寄存器清零,DMA操作方式设置为外设流控制,外设串口设置为非增量模式,存储器设置为增量模式,根据串口协议设置数据位长度,传输方式设置为单次突发传输,选择要设置的通道号;
串口发送DMA初始化,首先进行DMA通道设置,设置串口DMA发送通道,将串口的外设地址赋值给DMA流,指定DMA存储器的起始地址,设置DMA要发送的数据长度;将DMA的CR寄存器清零,DMA操作方式设置为存储器控制,外设串口设置为非增量模式,存储器设置为增量模式,根据串口协议设置数据位长度,传输方式应设置为单次突发传输;根据需要设置的串口发送对应的通道号;
所述串口数据的接收步骤具体包括:
空闲中断为通讯线出现大于一个字节长度的空闲传输时,触发中断,硬件检测到串口中断进入到中断服务流程中后,首先读取串口中断状态寄存器,判断是否为空闲中断位触发的中断,如果为否则清除中断状态寄存器后退出中断服务流程;如果为是则关闭DMA接收,关闭串口DMA接收,读取DMA数据长度寄存器,清除DMA接收标志,按照读取到的数据长度将数据从DMA缓存中取出;在读取之前,关闭CACHE,按照接收数据长度读取完成后,再使能CACHE。
2.根据权利要求1所述的一种使用ARM处理器串口进行实时通讯的方法,其特征在于,解析收到的串口通讯数据在接收中断流程或主流程中进行数据解析。
3.根据权利要求1所述的一种使用ARM处理器串口进行实时通讯的方法,其特征在于,串口数据的发送步骤具体包括:
根据发送数据长度和波特率确定发送周期,在每个定时发送周期到后,首先判断上一个发送周期数据是否完成发送,如未完成,需报发送超时错误;若完成发送则关闭DMA发送,关闭串口DMA发送,清除DMA发送标志,按照发送的数据长度将数据写入DMA缓存中,完成后再次启动DMA发送。
CN202010966993.3A 2020-09-15 2020-09-15 一种使用arm处理器串口进行实时通讯的方法 Active CN112131153B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010966993.3A CN112131153B (zh) 2020-09-15 2020-09-15 一种使用arm处理器串口进行实时通讯的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010966993.3A CN112131153B (zh) 2020-09-15 2020-09-15 一种使用arm处理器串口进行实时通讯的方法

Publications (2)

Publication Number Publication Date
CN112131153A CN112131153A (zh) 2020-12-25
CN112131153B true CN112131153B (zh) 2024-04-02

Family

ID=73846859

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010966993.3A Active CN112131153B (zh) 2020-09-15 2020-09-15 一种使用arm处理器串口进行实时通讯的方法

Country Status (1)

Country Link
CN (1) CN112131153B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113094305B (zh) * 2021-04-02 2024-03-26 北京黑蚁兄弟科技有限公司 一种异步通信处理方法、装置和存储介质
WO2023124286A1 (zh) * 2021-12-30 2023-07-06 深圳市创客工场科技有限公司 桌面智能激光设备中的数据交互方法、装置和设备
CN115098424A (zh) * 2022-06-06 2022-09-23 北京航空航天大学 基于dma的阵列memsimu的数据同步采集方法
CN115033520B (zh) * 2022-07-11 2023-08-08 深圳市金科泰通信设备有限公司 Iic数据传输方法、装置、单片机设备及存储介质

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2008361A (en) * 1977-10-04 1979-05-31 Ncr Co Method and apparatus for serially transmitting information
KR20080006150A (ko) * 2006-07-11 2008-01-16 삼성전자주식회사 직렬 통신 방식을 이용한 데이터 송수신 장치 및 방법
CN105446925A (zh) * 2015-06-16 2016-03-30 北京天诚盛业科技有限公司 提高串口数据接收正确性的方法和装置
CN105955764A (zh) * 2016-04-22 2016-09-21 佛山市南海区欧谱曼迪科技有限责任公司 一种stm32单片机iap串口程序烧录的改进方法
CN106874226A (zh) * 2015-12-10 2017-06-20 重庆川仪自动化股份有限公司 基于stm32f4芯片的串口数据接收、发送、传输装置及方法
CN108306967A (zh) * 2018-01-31 2018-07-20 深圳市元征科技股份有限公司 一种数据处理方法及终端
CN109062847A (zh) * 2018-07-31 2018-12-21 深圳职业技术学院 片上系统、用于rs485串口通讯的ip核及其控制方法
CN111651256A (zh) * 2020-05-31 2020-09-11 西安爱生技术集团公司 一种基于FreeRTOS的串行通信数据同步方法

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2008361A (en) * 1977-10-04 1979-05-31 Ncr Co Method and apparatus for serially transmitting information
KR20080006150A (ko) * 2006-07-11 2008-01-16 삼성전자주식회사 직렬 통신 방식을 이용한 데이터 송수신 장치 및 방법
CN105446925A (zh) * 2015-06-16 2016-03-30 北京天诚盛业科技有限公司 提高串口数据接收正确性的方法和装置
CN106874226A (zh) * 2015-12-10 2017-06-20 重庆川仪自动化股份有限公司 基于stm32f4芯片的串口数据接收、发送、传输装置及方法
CN105955764A (zh) * 2016-04-22 2016-09-21 佛山市南海区欧谱曼迪科技有限责任公司 一种stm32单片机iap串口程序烧录的改进方法
CN108306967A (zh) * 2018-01-31 2018-07-20 深圳市元征科技股份有限公司 一种数据处理方法及终端
CN109062847A (zh) * 2018-07-31 2018-12-21 深圳职业技术学院 片上系统、用于rs485串口通讯的ip核及其控制方法
CN111651256A (zh) * 2020-05-31 2020-09-11 西安爱生技术集团公司 一种基于FreeRTOS的串行通信数据同步方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
"A Flexible Virtual Development Environment for Embedded Systems";Sang-Young Cho 等;2007 Fifth Workshop on Intelligent Solutions in Embedded Systems;全文 *
"基于DMA 控制器的UART串行通信设计";张为 等;《电子设计工程》;第20卷(第6期);全文 *

Also Published As

Publication number Publication date
CN112131153A (zh) 2020-12-25

Similar Documents

Publication Publication Date Title
CN112131153B (zh) 一种使用arm处理器串口进行实时通讯的方法
CN102546843B (zh) 一种通过软件模拟实现多个uart通信接口的方法
US6970921B1 (en) Network interface supporting virtual paths for quality of service
EP0453863A2 (en) Methods and apparatus for implementing a media access control/host system interface
CN101556564B (zh) 数据接收/发送方法和装置
CN104144088A (zh) 一种提高时延测量精度的网络时延测量方法
US7191262B2 (en) High-throughput UART interfaces
JP2011239469A (ja) 低遅延のデータパケット受信及び処理
KR20070039937A (ko) 메시지 메모리 내에서 메시지를 저장하기 위한 방법 및상응하는 메시지 메모리
US7610415B2 (en) System and method for processing data streams
CN109412939A (zh) 记录工业网络通信周期过程数据的通信网关和工作方法
KR20090103696A (ko) 메모리 제어 장치, 메모리 제어 방법 및 정보 처리 장치
CN113852533A (zh) 一种多通道数据通信系统、方法及电子设备
CN101447988A (zh) 一种基于fpga的千兆数据通信卡
KR100268885B1 (ko) 비동기 데이터 송수신 장치
CN106126467B (zh) 基于Local Bus总线的多路RS422串口通信方法
US20130036243A1 (en) Host-daughtercard configuration with double data rate bus
CN113364655B (zh) 一种基于dsp的惯性寻北组件的可靠性通讯系统和通讯方法
CN112511537A (zh) 一种sce-mi协议桥及仿真系统
US7107383B1 (en) Method and system for multi-channel transfer of data and control information
US7181551B2 (en) Backward-compatible parallel DDR bus for use in host-daughtercard interface
US7500239B2 (en) Packet processing system
CN109151316A (zh) 一种基于fpga的多工业相机数据调度装置
CN112637027B (zh) 基于uart的帧边界界定装置及发送方法和接收方法
Sieczkowski et al. A method for real-time data acquisition using Matlab software

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