刘轼巍
【摘要】本文阐述了一个拥有高度可扩展性的无线通信系统。设计中主要包括Cortex-M3内核的ARM芯片STM32,无线通讯芯片nRF24L01+,用于DEBUG及系统实时工作状态监视的RS232接口,可直接应用于工业现场的高可靠性RS485接口,放置大型数据表格以及存放系统工作日志的SD卡接口。该系统工作于无需授权许可的ISM即工业、科学医用频段(2.4GHz)上,拥有最大2Mbps的高吞吐率,可应用于布线难度较大的工业现场、要求严格电气隔离的人机控制界面等等场合。
【关键词】无线;STM32;射频;ARM;nRF24L01+
1.前言
1.1 无线通信与有线通信的比较
现今无线通信越来越受到普及,并广泛应用于日常生活中。做如下比较可说明此问题:一是成本廉价。二是建设工程周期短。三是适应性好。四是扩展性好。五是设备维护上更容易实现。
1.2 Cortex-M3内核的ARM对比传统51单片机
本质上Cortex-M3内核的ARM在未使用操作系统时和51单片机的应用场合是相同的,但无疑前者比起后者主要具有如下优势:
(1)成本——虽然单从芯片角度出发,51单片机会更为便宜,但由于ARM集成了大量标准外设及扩展总线,从系统整体角度出发,对于一个需要大量外设的系统而言,ARM的成本反而会由于51的投入,同时使用更少的器件有利于提高硬件系统可靠度。
(2)软件调试——51单片机的软件调试可通过拆卸芯片对其写入程序后放回目标板观察运行结果,个别51芯片也可通过串口烧写程序。此种调试方式对于较为简单的程序,可通过外置的LED小灯等一些外设观察系统内的宏观运行状态,但对微观的指令执行情况较为无力。
(3)存储——主流ARM芯片往往内置有较大的FLASH ROM以及SRAM,在一些拥有大量数据表格或需要开辟较大缓冲区的应用中无疑比51拥有更大的优势,且32-bit拥有4GB的寻址空间,无需和51单片机一样超过64KB的代码只能分页存放并切换运行。
2.通信系统硬件电路组成及原理详解
2.1 系统组成框图(如图1所示)
2.2 ARM处理器
系统中的ARM处理器为意法半导体的STM32F103ZET6,相关介绍如下:
(1)时钟——外部可使用4MHz~16MHz的晶体为处理器提供时钟源,由内部PLL将该时钟倍频至实际运行时所需要的频率(72MHz),相关电路见图2.1.1,振荡电路的非门及反馈电阻已集成在芯片内,因此仅需2颗小电容即可实现,调整外部小电容的容值可微调8MHz时钟源的频率。
(2)存储——STM32F103ZET6中内置了512Kbytes的FLASH,很多繁杂的算法均可采用“以空间换时间”,在FLASH中以放置多张大型数据表格快速查阅的方式进一步提高程序执行速度。
(3)GPIO——片上有PA~PG七組每组16个共计112个GPIO端口,绝大部分的端口都能忍受5V的输入,且支持如下几种GPIO模式:浮空输入(默认)、上拉输入、下拉输入、模拟输入、漏极开路输出、推挽输出、复用功能开漏输出、复用功能推挽输出。
3.通信系统软件部分详解
3.1 软件部分采用事件触发机制
各任务间通过消息队列进行通信,这样的程序最符合“高内聚,低耦合”,与外部硬件连接无关的部分可不作任何改动任意增删软件模块,密切相关的部分则通过函数指针进行回调函数注册,也可非常容易得完成移植,整体程序不存在任何诸如毫秒级的Delay()等CPU空转的情况,可通过宏打开/关闭部分冗余代码用以监视系统运行状态增强系统稳定性。
3.2 软件功能描述
三台(或更多)主机自身有两个地址 ——单播地址与组播地址,单播地址可进行点对点的数据传送,组播则可将多个主机编组,发送封包仅组内主机可见,广播包则无需地址,所有主机均可同时收到,针对于一些诸如时钟基准心跳包,可在其中一台主机上实现较高精度的RTC,并通过其定期广播时间信息,那么其他节点的时间就很容易在没有RTC的状态下动态修正系统时间。
3.3 部分软件实现
DeviceNRFL01p类型为自定义的数据结构,包含了nRF24L01+的各种运行状态,以及硬件对应的SPI口初始化函数指针,基于软件分层思想,SPI接口驱动在此处已完全与nRF24L01+驱动程序隔离,只需在程序范围内实现对应函数原型即可,初始化完SPI口之后会调用读写检测函数,该函数已将系统预设的地址写入nRF24L01芯片,因此eState状态不为ERROR即芯片工作正常。
4.结语
本论文简述了一个带有全双工无线通信功能的小系统。硬件设计均按工业级标准进行,PCB设计对于EFT及ESD问题都作了完备的防护措施。可直接应用在实际项目中,并根据实际需要选择焊接/不焊接部分器件灵活选择功能,针对要求特别苛刻的场合,也可根据实际情况增/删部分功能后针对性得重新设计PCB,对应的软件部分同样为分层模块形式,不使用的部分自检未通过便会注销后续设计的任务,无需再代码中逐步整理,这对于万行以上规模的代码的维护将会提供巨大的便利。
参考文献
[1]STM32 Reference manual RM008[M].ST意法半导体,October 2011.
[2]STM32F103 Datasheet[M].ST意法半导体,Septmber 2009.
[3]nRF24L01+ Datasheet[M].NORDIC Semicondu-ctor,Septmber 2008.
[4]喻金钱,喻斌.STM32F系列ARM Cortex-M3核微控制器开发与应用[M].清华大学出版社,2011.
[5]彭刚,秦志强.基于ARM Cortex-M3的STM32系列嵌入式微控制器应用实践[M].电子工业出版社,2011.