历史上的今天
返回首页

历史上的今天

今天是:2026年03月14日(星期六)

2023年03月14日 | 基于LPC2365和嵌入式μC/OS-II下的多串口通信编程方法教程

2023-03-14 来源:elecfans

本文介绍了以LPC2365为核心处理器、嵌入式实时操作系统μC/OS-II下的多串口通信编程方法。对于固定长度的短字节帧数据,通过设置合适的字节触发深度,一次中断完成数据接收任务;对于变长的长字节帧数据,则通过多次中断和等待延时的方法判断数据稳定并完成帧数据的接收;对于大量数据的接收和发送采用建立FIFO数据队列的方法。


通过这些措施较好地完成了多串口较大数据量的通信任务。


国产某掠海恒高硬体拖靶在拖曳飞行时,需要将自身的各种参数通过无线链路实时上传至拖曳母机,同时实时接收拖曳母机的遥控指令完成相应的动作。拖靶自身的参数包括:开关高控状态、蓄电池电压、无线电高度表值、飞行高度装定值、垂向加速度值、舵翼角、温度值、普通性能GPS接收机输出的主要参数值、高性能测量GPS接收机输出的主要参数值等。其中,前面7项由一块采集板完成采集并装配成帧数据,通过RS232串口以9 600 bps的波特率、1 Hz的速率输出。


数据帧长度固定为12字节,同时接收6字节/帧的遥控指令数据。普通性能GPS接收机以9 600 bps的波特率、1 Hz的速率输出$GPGGA和$GPRMC两条语句,其字节数可变,但最多不超过1 60字节;高性能GPS则以57 600 bps的波特率、20 Hz的速率输出RT、RD、TO、SI、RC、CP、DC、FC、PV 9个参数,这些总的参数数据量随所观测到的卫星数目而变化,但最多不超过305字节。


现在需要将采集板和普通性能GPS接收机的数据组成每帧75字节数据(如果收到遥控指令时,则需要一次返回3帧同样数据)、以每秒一帧的速率上传至拖曳母机以供实时显示。将高性能测量GPS接收机输出的数据直接上传至拖曳母机存储以供事后处理。由此可见这是一个典型的多串口较大数据量的通信应用问题。


1 工作原理

利用具有多个串口资源的ARM7处理器LPC2365芯片分别实时接收数据采集板和普通性能GPS接收机发送过来的数据,并按要求进行组帧后,通过互斥型信号量存入FIFO类型的发送数据队列中;将接收到的高性能GPS接收机数据也存入同一发送数据队列中;当发送数据队列不为空时,通过一个二值信号量启动串口发送任务进行数据的发送,直到一帧数据发送完毕为止。发送数据流向示意图如图1所示。

II下的多串口通信编程方法

应用程序是基于嵌入式实时操作系统μC/OS-II编写完成的,针对不同的功能创建不同的任务,包括串口接收任务、串口发送任务、组帧任务等。


2 硬件设计

主控CPU选用NXP公司生产的ARM7处理器LPC2365,该芯片拥有256 KB的Flash存储器、32 KB的SRAM、4个全双工UART串口以及多达70个通用I/O端口,硬件资源非常丰富。4个全双丁串口可分别与数据采集板、普通性能GPS接收机、高性能GPS接收机以及数传模块进行通信;256 KB的Flash存储器和32 KB的SRAM可以存储和运行嵌入式实时操作系统μC/OS-II下的应用程序。


由于高性能GPS接收机以57 600 bps的波特率、20Hz的速率和305字节/帧的数据量输出数据,其数据量占空比高达85%,考虑到还需要下传其他参数信息,因此应选用波特率更高的数传模块完成数据传输任务。

II下的多串口通信编程方法

美国GE MDS公司生产的EL806数传模块拥有先进的调频扩频技术,在902~928 MHz频段上提供了速率最高可达115 200 bps(连续工作)的工业级的无线通信设备;在无线数据通信的可靠性、完整性和纠错能力方面具有较强优势;同时,该产品具有供电范围较宽、功耗较低、功率可达1 W、环境适应性较强的工业级性能。硬件系统框图如图2所示。


3 软件设计

3.1 μC/OS-II的移植

μC/OS-II是一个完整的、可移植、可固化、可裁剪、源代码公开的占先式实时多任务内核,它可移植到多种不同架构的微处理器上,包括8位、16位、32位单片机或DSP,以及64位的微处理器。


要在自己的硬件环境中运行该操作系统,首先必须将其移植到相应CPU体系结构中,好在国内已有大量的书籍和文章介绍移植方法,严格按照其步骤进行源代码编写和修改就可以得到一份自己移植的操作系统。更简捷、可靠的办法是从网站下载针对某一具体架构处理器的移植好的例程,大大方便了用户的使用。关于移植μC/OS-II到ARM7的方法可参考文献。


3.2 应用程序编写


要使用μC/OS-II嵌入式实时操作系统,编写应用程序必须遵守其编程规范。在本应用程序中,主要编写了串口中断服务程序和串口数据的收发任务,在任务间进行数据交换时,使用了互斥型信号量和二值信号量。


对于串口中断服务程序的编写,需要注意的问题主要在于通信帧数据是否为固定长度。在本应用程序中,串口1接收和发送的数据帧长度固定且较短,其中断服务程序和任务编程相对较简单;串口0和2接收到的数据帧是不定长的且长度较长,需要考虑数据帧长度是否为触发深度的整数倍。设置串口接收中断触发深度为14,当通信帧的长度不是14的整数倍时,对方将通信帧全部发送完毕后,最后一批数据必定不足14字节,从而导致超时中断,就可以在超时中断中发送信号量来通知接收任务,成功地结束接收过程。


当通信帧的长度正好为14的整数倍时,对方将通信帧全部发送完毕后,最后一批数据必定是14字节,只能触发正常的接收中断,不会触发超时中断。在通信帧数据不定长的情况下,不能通过正常的接收中断来判断接收过程是否结束。为此,在通信任务中应为等待信号量函数设置超时参数,当接收到的数据稳定不变时就可以结束接收过程。串口0中断服务程序和接收数据任务程序片段代码如下:

II下的多串口通信编程方法

II下的多串口通信编程方法

依据所要完成的任务并结合硬件系统框图,将串口0和串口1接收到的数据存放在一个全局数组中,分别创建串口0和串口1接收任务,两个接收任务将接收到的数据直接写入全局数组的相应元素中。由于要求将串口0和串口1接收到的数据组帧以每秒一帧的速率发送出去,而串口0正好是每秒接收到一帧数据,或者说与串口0相连接的普通性能GPS接收机每秒发送一帧数据,所以发送帧数据的组装和写入队列任务的启动可以由串口0接收任务中的信号量来控制,这样可以避免因计时误差而导致下传的GPS帧数据跳变或重复。


由于需要将串口2接收到的高性能GPS接收机数据和串口0及串口1接收到的数据组帧后写入发送数据队列,所以涉及到发送数据队列资源的使用问题,也就是共享资源的使用问题。互斥信号量具有处理优先级反转的功能,特别适合对共享资源的互斥访问,其优先级继承值必须高于所有需要访问这个共享资源的任务的优先级。这里,串口2接收任务的优先级为9,数据组帧任务的优先级为13,所以设置互斥信号量的优先级继承值为8。当这两个任务向数据队列中写入数据时,首先需要获取互斥型信号量,待写完数据后应及时释放信号量,以供其他任务使用该资源。


在主函数main()中,创建了串口3接收数据任务,该任务的功能是创建其他任务,并在无限循环中等待串口3接收数据,当串口3接收到数据后对其进行判断,并依据其内容执行相应的指令。其任务优先级设为最高基于以下两点:该任务是关键任务,当接收到指令时必须执行,不得遗漏;该任务执行的不是很频繁,可以保障低任务优先级的任务得到执行。其程序代码如下:

II下的多串口通信编程方法

II下的多串口通信编程方法

数据组帧任务的主要功能是每秒将有关参数组装成一帧数据写入串口3,发送缓存数据队列(75字节),如果收到一条指令则将当前帧重复3次写入串口3发送缓存数据队列(225字节),其程序如下:

II下的多串口通信编程方法

对于串口3发送任务相对较简单,需要注意一点的是在等待发送结束信号量后,一定要将数据缓存信号量清零,代码如下:

II下的多串口通信编程方法

II下的多串口通信编程方法

结语

实际应用表明,具有多达4个串口的ARM7处理器LPC2365芯片应用在多串口通信的工程实践中可以减化硬件设计,在实时操作系统μC/ OS-II下,采用上述关键技术编写多串口通信应用程序可以使系统工作可靠,运行稳定,满足实时性要求。


推荐阅读

史海拾趣

AMICC [AMIC TECHNOLOGY]公司的发展小趣事

在电子行业发展日新月异的背景下,AMICC始终坚持技术创新。公司投入大量研发资源,成功开发出一系列具有自主知识产权的新型半导体产品。这些产品不仅提高了性能,还降低了成本,为公司在市场竞争中赢得了优势。同时,AMICC还积极与国内外高校和研究机构合作,推动产学研深度融合,为公司的持续发展注入新的活力。

Dowosemi公司的发展小趣事

作为一家高新技术企业,Dowosemi公司深知研发投入对企业发展的重要性。他们每年都将大量的资金投入到研发领域,不断推出新的产品和解决方案。这些新产品不仅提升了公司的技术实力,也为公司带来了更多的市场机会。正是这种对研发的重视和投入,让Dowosemi公司在竞争激烈的电子行业中保持了持续的发展动力。

Gauthier Connectique公司的发展小趣事
能够灵敏地接收来自遥控器的微弱红外线信号,确保用户指令的准确传输。
Hendon Semiconductors公司的发展小趣事

Hendon Semiconductors的起源可以追溯到上世纪90年代,当时它是Philips半导体在澳大利亚的一个分支机构。1997年,随着业务重组和战略调整,该分支机构转变为独立运营的公司,并更名为Integrated Electronic Solutions Pty. Ltd。这一转变标志着Hendon Semiconductors在电子设计与制造领域迈出了重要一步。通过继承Philips半导体的技术遗产和市场资源,Hendon Semiconductors迅速在行业内站稳脚跟,并开始了其自主发展的道路。

振华新云(CEC)公司的发展小趣事

背景:为了进一步扩大市场份额和提高品牌影响力,振华新云积极开展市场拓展和国际合作。

内容:公司积极参加国内外电子展会和论坛等活动,加强与国内外客户的沟通和交流。同时,积极寻求与国际先进企业的合作机会,共同开展技术研发和市场推广等活动。

成果:通过市场拓展和国际合作,振华新云的产品逐渐走向世界舞台,赢得了广大客户的信赖和好评。同时,公司也积累了宝贵的国际化经验和资源,为未来的国际化发展奠定了坚实基础。

FCI connector [富加宜连接器]公司的发展小趣事

在FCI的发展历程中,贝恩资本的收购起到了关键的作用。贝恩资本是一家在全球近75个工业领域和技术公司有着丰富投资经验的私有投资基金。在2005年收购FCI后,贝恩资本为FCI提供了强大的财力支持和国际业务扩展能力。这些支持使得FCI能够进一步巩固其在全球连接器市场的领先地位。

问答坊 | AI 解惑

有谁认识熟”红外框”(触摸屏)的电子工程师

招聘熟”红外框”(触摸屏)的电子工程师 我公司想招一个电子工程师,要求:对”红外手写” (也叫触摸屏)非常熟悉的,专职和兼职都可以.工作地点:杭州.(也可在深圳),薪金优 ,有意者可联系我,或把简历发至公司邮箱:bearbear-bear@163.com电话:0755-82132 ...…

查看全部问答>

[笔记].Nios II 软核性能基准.[Nios II]

一些表格 表1 Nios II处理器系统的最大时钟频率(tMAX)(MHz)     表2 Nios II处理器系统的MIPS(每秒钟一百万个指令)       表3 在不同设备家族上的Nios II处理器系统的MIPS/MHz比     表4 Ni ...…

查看全部问答>

TMS320F240用哪个软件烧写?

知道的说下,找了好长时间了,有的说是CC4.1,有的又说不是,到底哪个软件可以呢 先谢…

查看全部问答>

【MSP430共享】基于蓝牙的高压线电流自动化检测系统设计

在高压危险场所,为提高操作人员的人身安全,使用隔空测量数据是非常需要的,因此采用蓝牙通信系统实现了对远离危险场所进行测量和记录所需数据。本系统使用超低功耗性能优秀的MSP430系列单片机作为核心控制器件,由蓝牙PDA接收信号并对其进行相应 ...…

查看全部问答>

原来ARM7上的ucosii系统要移植到cortex-m3的板子上,求指教

现在主要问题是这个系统原来跑在ARM7的平台上,现在因为某些原因要转移到STM32的平台上。   新的开发平台有现成的ucosii系统+UCGUI,我应该不用再移植了吧, 但是 原来系统里的控制任务要移植过来,不知道一般是怎么移植的,大家都是直接移 ...…

查看全部问答>

陶瓷贴片电容知识

通常大家所说的贴片电容是指片式多层陶瓷电容 (Multilayer Ceramic Capacitors),简称MLCC。它是在若干片陶瓷薄膜坯上被覆以电极桨材料,叠合后一次烧结成一块不可分割的整体,外面再用树脂包封而成的。具有 小体积、大容量、Q值高、高可靠和耐高温 ...…

查看全部问答>

AM335x平台 使用SD卡的建议

The table below lists the SD cards tested which have no issue on performance. 没有问题 The table below lists the SD cards tested which have poor performance. 表现不佳 …

查看全部问答>

EK-LM4F120 launchpad 之软件安装

我的CCS5是在官网下的就是速度慢     这个是在一个论坛里找到的           http://pan.baidu.com/s/1orfAu     主要这几个选项            剩下的默认就 ...…

查看全部问答>

MSP430G2553串口问题求助

在编写串口程序之前,小红板子上的32768hz的晶振要不要焊接。…

查看全部问答>

求解HT1621与LCD的连接

第一次用HT1621,看完手册后还是有些地方不解,HT1621的SEG0可以连接LCD的A1段电极也可以连接D1段电极,这个连接关系是不确定的,任意连接? 如果用来驱动多个LCD的话,公共电极COM就是用来选择要显示的LCD的,相当于数码管显示中的位选,这样理解 ...…

查看全部问答>