软件设计在道闸控制系统设计中是至关重要的,它决定着系统的可靠性、稳定性。本应用软件的设计思想是主要采用模块化程序设计,在程序设计过程中,为了使各个模块有效地完成任务,需要把整个系统划分为几个既相互独立又相互联系的模块,使得对外的数据交换相对简单,增强了可维护性。
1)系统软件设计
(1)软件功能概述
软件设计包括无线通信标签软件设计和主控器软件设计两大部分。其中无线通信标签软件设计包括激励源与通信标签通信的软件设计、无线通信收发标签之间的软件设计、无线通信接收标签与主控系统通信的设计。主控器软件设计还包括人机交互设计、网络通信设计、数据存储软件设计、实时时钟设计这几部分。
(2)道闸控制系统的工作流程
图8-13 智能道闸控制系统整体工作流程
智能道闸控制系统工作流程如图8-13所示。唤醒天线使用125kHz频率,每秒发送9次信号。车辆在前门唤醒区域内被唤醒,发送车辆信息为车牌+0x1234;在后门唤醒区域内被唤醒,发送信息为车牌+0xabcd,其中车牌为8个字节的字符,0x1234为进门信号,0xabcd为出门信号。标签每次被唤醒后连续发送3次数据,发送结束后如果依然还停留在该区域,则不再发送数据。只有当标签两次进入相同唤醒区域的时间间隔大于10秒,标签才能再次发送数据。
当车辆进入前门唤醒区域后,平时处于休眠状态的标签被唤醒,并且以2.4GHz的频率连续向主控器发送信息,如车牌+0x1234,3次。主控器的程序在初始化之后,等待接收标签信息。当主控器接收到标签信息后对信息进行判断和匹配,如果匹配正确无误,则开启道闸并向LED发送信息:车牌+时间,其中时间为1个字节的字符,或者当车辆超期时,则主控器向LED发送信息:车牌+“0”,且不开道闸。当车辆行驶到后门唤醒区域时,标签再次被唤醒,发送信息:车牌+0xabcd,则主控器接收信息后判断并匹配,准确无误后关闭道闸。当连续有多辆车进入时,关闸以最后一辆进门的车辆为准。
2)主控器软件设计
(1)网络模块通信设计
PC上位机软件通过以太网访问道闸主控系统,然后向其发送TCP命令、读取文件记录和修改SD卡中的数据。
在以太网中数据传递靠的是MAC地址,而不是IP地址,IP地址和MAC地址具有映射关系,由网络层的ARP协议负责对其进行相应的解析。常用的以太网MAC帧格式有两种标准,一种是DIX Ethernet V2标准,另一种是IEEE的802.3标准。目前最常用的是Ethernet V2格式,如图8-14所示。由图可知,以太网V2帧格式主要由一个导言区、一个起始帧定界符和一个以太网帧组成,其中以太网帧由目标地址、源地址、类型、有效负载以及帧校验序列(FCS)组成。
图8-14 以太网V2帧结构
以太网帧中的导言区包括了8个字节的由二进制0、1间隔组成的代码,当帧在媒介上传输时,导言区自然形成一周期性方波时钟信号用来建立同步。然后再由起始帧定界符表示一帧的实际开始,以使接收器对实际帧的第一位定位。以太网帧主要是通过目标地址和源地址的位置建立通信。6个字节的目标地址是指目的站点的MAC地址,表明要把数据送到哪个站点。若目标地址第一位为0,则指定了一个特定的站点;若为1,则表示目标地址为一组地址,而该地址是事先定义好的;若所有位全为1,则表示接收者为局域网上的所有站点,即该地址是一个广播地址。6个字节的源地址是指源主机的MAC地址,表明该帧来自哪个主机。类型域共占两个2字节,用于表示数据域中包含的高层协议,告诉接收设备该如何解释数据域。在帧传输的最后进行帧校验,使用4个字节的循环冗余校验码进行错误检验。每一个以太网帧均由一个或多个片段组成,每个片段对应一个描述符,LM3S6965内置的以太网控制器中的DMA管理器能够将一个以太网帧的多个片段进行分散(用于接收)和集中(用于发送)。
(2)数据存储软件设计
主控板接收到汽车里的无线通信标签发送的信息后,需要判断车辆是出门还是进门,并且将数据保存到SD卡中。通过与保存在SD卡中的数据进行比对,判断数据库中是否有该车辆以及是否超期,如果该车辆存在且不超期,则开启道闸。
SPI总线模式的数据是以字节为单位进行传输的,每个命令或数据块都是字节对齐。主控板与SD卡的各种通信由主控板控制,在对SD卡进行任何操作前必须首先拉低SD卡的片选信号CS将其选中,然后主控板可向SD卡发送命令。SD卡要对主控板发送的任何命令给予响应,不同的命令会有不同的响应格式(1字节或2字节响应)。SD卡除了对命令响应外,在执行写操作时,要对主控板发送的每一个数据块进行响应(向主机发送一个特殊的数据响应标志)。SPI命令格式如表8-2所示,由6个字节构成,高位在前。
表8-2 SPI命令格式
SD卡在上电复位后,自动进入SD模式,因此本应用中SD卡与LM3S6965的底层软件接口设计首先要使SD卡进入SPI模式,并在SPI模式下对SD卡的内存单元实现读写操作。
主控板在向SD卡发送任何命令之前,应向SD卡发送至少74个时钟周期,以等待SD卡完成上电复位过程,此时主控板应将片选信号线置高。在上电复位完成之后,再将片选信号线CS置低,即选中SD卡,并且再次发送8个时钟周期,确保SD卡选中,发送软件复位指令(CMD0,0x00),如果接收到应答信号0x01,则表示SD卡进入SPI模式,并且处于空闲状态。若要对SD卡实现读写操作,主控板应不断发送指令(CMD1,0x01),直到收到SD卡正确的响应数据0x00,表明SD卡已经被激活,退出空闲状态,可以对SD卡寄存器进行读写和完成数据的传输操作,SD卡初始化成功。
在完成上述操作后,应设置一次性写入或者读取SD卡内数据的长度,这可通过发送设置块长度指令(CMD16,0x10)来实现。本设计中设定一次读写的数据块长度为512字节。当要读取、写入SD卡某一数据块的内容时,则可通过发送读取数据指令(CMD17,0x11)、写入数据块指令(CMD24,0x18)来完成。
对SD卡进行发送命令/接受响应以及读取/写入数据块都是采用LM3S6965的SPI总线进行发送/接收字节或字符串来实现的。SD卡初始化流程如图8-15所示。
图8-15 SD卡初始化流程
(3)人机交互软件设计
人机交互软件是由按键程序和液晶显示(LCD)程序组成的,按键用来发送命令,液晶显示工作状态和参数修改配置情况。
LM1095R为192×128点阵中文/图形液晶显示模块,内置RA8803控制器。用户只要透过MCU对RA8803写入中/英文字型码,就可以直接在LCD面板上显示中英文字型,而不需要透过MCU以绘图方式来处理中英文的显示。
LM1905R提供给使用者两种窗口选择:显示窗口和工作窗口。显示窗口是实际LCD面板的大小,而工作窗口是在实际的显示窗口内设定比显示窗口小的子窗口,并且可以在显示窗口内任意调整所需要放置的地方。
LCD初始化流程如图8-16所示。(www.xing528.com)
图8-16 LCD初始化流程
3)无线通信软件设计
无线通信软件工作流程如图8-17所示。
图8-17 无线通信软件工作流程
(1)激励源软件设计
激励源软件工作流程如图8-18所示。
图8-18 激励源软件工作流程
为防止收到干扰信号,MCP2030唤醒芯片需要收到2ms高电平、2ms低电平的唤醒使能输出时序。唤醒使能输出时序之后是一串表示激励源的ID号的编码。因此激励源发送的125kHz的唤醒信号包括一串MCP2030的使能输出时序和激励源的ID号。
(2)无线通信模块通信软件设计
为了降低模块的功耗,延长电池的使用寿命,车上无线通信模块具有休眠功能。在初始化时,CC2530通过SPI总线对MCP2030的寄存器进行配置。在对MCP2030进行配置操作前,CC2530必须先拉低MCP2030的片选信号CS,然后发送配置命令。命令格式如表8-3所示。
表8-3 MCP2030命令格式
为了有效避免其他信号干扰所激起的激活现象,使MCP2030正常工作,在此设定使能输出序列为2ms高电平、2ms低电平,命令为(0xe1,0x41)。同时在初始化时还需配置使能通道自动选择功能、解调信号输出功能、接收灵敏度控制等。
CC2530的供电模式3用于获得最低功耗的运行模式。在供电模式3下,内部稳压器供电的所有内部电路都关闭,稳压器和所有振荡器也都关闭。复位和外部I/O端口中断是该模式下仅有的运行功能。CC2530软件工作流程如图8-19所示。
图8-19 CC2530软件工作流程
复位和使能的外部I/O中断是唤醒设备的两个仅有的方式。本设计中采用的是外部I/O中断方式唤醒设备。如图8-19所示,进入供电模式3之前,需配置I/O工作模式并开启I/O中断位。系统进入供电模式3,I/O管脚侦测外部中断。当有外部I/O中断时,CC2530切换到工作状态,向主控板发送车辆信息。
为了防止受到同为2.4GHz频段内的其他频率的信号干扰,CC2530初始化时,需对无线模块配置通信通道。IEEE802.15.4—2006标准指定16个通道,它们位于2.4GHz频段之内,步长为5 MHz,编号为11~26。频率与通道的关系为:fc=2 405+5(k-11)[MHz]k∈[11,26]。CC2530支持的载波频率范围是2 394 MHz到2 507 MHz。载波频率可以通过编程FREQCTRL设置,操作频率fc可由下式表示:
式中,FREQCTRL.FREQ[6:0]是寄存器的第0位至第6位。
无线通信发送的帧格式如图8-20所示。
图8-20 帧格式
本应用中通信方式采用的是点对点通信,因而软件设计中,需将主控器上无线通信模块的地址写入帧格式中的地址信息域中。
主控板上无线通信模块的工作流程如图8-21所示。该模块不用电池供电,因此在初始化时,不必考虑睡眠状态与工作状态的切换。
主控板上无线通信模块实时等待无线数据接收,并将数据通过异步串行通信直接转发给LM3S6965。在转发过程中,模块不对数据做任何判断和处理,全部交由主控器处理。为了确保数据转发成功,模块在收到主控板的应答信息后才开始进入下一次无线数据接收,否则重新转发。
图8-21 主控板无线通信模块工作流程
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。