基于ARM的门禁系统设计.docx

上传人:牧羊曲112 文档编号:1667671 上传时间:2022-12-13 格式:DOCX 页数:37 大小:1.84MB
返回 下载 相关 举报
基于ARM的门禁系统设计.docx_第1页
第1页 / 共37页
基于ARM的门禁系统设计.docx_第2页
第2页 / 共37页
基于ARM的门禁系统设计.docx_第3页
第3页 / 共37页
基于ARM的门禁系统设计.docx_第4页
第4页 / 共37页
基于ARM的门禁系统设计.docx_第5页
第5页 / 共37页
点击查看更多>>
资源描述

《基于ARM的门禁系统设计.docx》由会员分享,可在线阅读,更多相关《基于ARM的门禁系统设计.docx(37页珍藏版)》请在三一办公上搜索。

1、基于ARM的门禁系统设计摘要随着人类生活水平、认知水平和人们对安防要求的不断提高以及工业自动化的蓬勃发展,智能化管理已经走进了人们的社会生活,而在智能化管理中,门禁监控系统得到了越来越多的应用,门禁,又称出入管理控制系统,是一种管理人员进出的数字化管理系统。但传统的门禁监控系统一般采用门禁控制和视频图片摄录相分离的实现办法,这给现场布线带来了很多的不便,同时其成本也会大大提高。所以,设计稳定性高、保密性强和易于扩展的较通用型门禁系统具有重要的实际意义。整个系统的设计采用具有丰富多片内外设的 LPC2368 ARM为微控制器,选用 ZLG522S/LT 读卡模块为读卡器(使用 Mifare 卡)

2、,并采用 HUIGANG 继电器作为门锁开关,同时有门状态指示灯。系统通过 RS-485 总线与上位机进行通信。该系统具有按用户与时间权限刷卡开门和记录功能、添加用户功能、设置时间权限和考勤时间段,并能将记录信息通过SD 卡导出。该电子门禁系统具有实际应用中的单门门禁考勤系统的主要功能,并具有稳定性、可靠性,保密性强和人机界面友好的优点。关键词:ARM 微控制器,读卡模块,RS-485,SD 卡概述本设计皆在完成一个管理人员进出的数字化出入管理控制系统。在现今的社会生活中,人们已经逐渐进入并融入到了数字化电子化的生活,社会的各个方面都已经实现或基本实现了数字化,门禁系统作为人们生活中必不可少的

3、管理类应用,在人类的工作中显得尤为的重要,而对于这样一个应用,在这样一个大的背景下,实现其数字化与电子化是十分必要的,智能考勤系统基于现代电子与信息技术,利用智能卡或指纹等生物信息的唯一性来对员工上下班进行现代化高效管理,在各厂矿、机关、银行等场合已广泛应用并成为单位管理现代化和信息化的标志。但目前很多门禁系统的核心控制单元主要依赖单片机来实现,它虽然也能完成相应的基本功能,但其扩展能力有限,在性能和存储容量等方面已不能很好地满足人们的要求,然而,随着嵌入式技术的不断发展,特别是基于ARM 处理器的嵌入式系统由于其可扩展性强、稳定性高、功耗低、性能和价格比较合理等特点已在实际生活中得到了越来越

4、多的应用。因此,决定尝试做一个基于ARM的电子门禁系统。目前,欧美电子门禁系统市场正逐渐进入成熟阶段,其产业的分工已进人细分阶段。在国内,电子门禁系统处于成长期和初始阶段。第1章系统总体方案概述1.1系统工作原理系统采用 LPC2368 ARM 为微控制器,选用ZLG522S/LT 读卡模块为读卡器(使用Mifare 卡),并采用HUIGANG 继电器作为门锁开关,具有门状态指示灯,同时仿效实际产品引出必要的接口,如门磁检测,门内开关接口,门外铃声按钮接口,RS-485 通信接口和电源接口等。系统通过 RS-485 总线与上位机进行通信。该系统具有按用户与时间权限刷卡开门和记录功能、添加用户功

5、能、设置时间权限和考勤时间段,并能将记录信息通过SD 卡导出。上位机在 VC 开发环境下编程,具有一些实际电子门禁系统的主要简单功能。更详细的工作原理在下面的软硬件部分具体给出。1.2 设计思想门禁系统由门禁控制器、读卡器、出门按钮、通讯集线器、感应卡和管理软件组成。1.2.1 门禁控制器的选择门禁控制器有多种控制芯片可以选择,如 8051 系列单片机、ARM 系列控制器等。由于本门禁考勤系统使用的串行口较多,在速度的要求上较高,而ARM 系列控制器很容易得到满足。虽然其价格较贵,但综合考虑,ARM 系列控制器更适合本系统。在众多的ARM 控制器中,LPC2300 系列较其他系列的优点显著,十

6、分适用于串行通信的场合。 1.2.2 门禁系统的类型选择门禁系统一般有以下类型:1. 不联网门禁:适用场合:已装修好不便于重新布线,安全性能要求不高的场合。2. RS-485 联网门禁:适用场合:小区、学校、仓库等人数稍多,门需统一管理,安全性能要求一般的场合。3. CAN-bus 联网门禁:适用场合:通信性能稳定性要求高,传输速度要求快、传输距离要求远的场合,如金融机构、政府企事业机关等。4. TCP/IP 以太网联网门禁:适用场合:适合安装在大项目、人数多、速度快、跨地域的工程中。由于本系统的技术要求和应用场所是中距离通信场合,综合以上四种类型及本系统对安全性的要求不是很高的基础上,RS-

7、485 联网系统可以胜任。1.2.3 感应卡的选择常见的门禁系统有:密码门禁系统、非接触 IC 卡(感应式IC 卡)门禁系统和指纹虹膜掌型生物识别门禁系统等。密码门禁系统由于其本身的安全性弱和便捷性差已经面临淘汰;生物识别门禁系统安全性高,但成本高;现在国际最通用的还是非接触IC 卡门禁系统。非接触IC 卡由于其较高的安全性,便捷性和性价比高成为门禁系统的主流。所以该系统使用非接触IC 卡。非接触IC 卡RS-485 门禁考勤系统示意图如图1-1所示。图 1-1 非接触IC 卡RS-485 门禁考勤系统示意图第2章硬件设计技术文档本设计为门禁考勤系统,顾名思义,其兼具门禁和考勤的功能。下面为本

8、系统的硬件设计说明。2.1 门禁考勤系统的功能框图见图2-1图 2-1 门禁考勤系统的功能框2.2 硬件电路分析2.2.1 电路原理图(见图2-2)图 2-2 门禁考勤系统电路原理图2.2.2 硬件使用的资源LPC2368 是基于一个支持实时仿真和嵌入式跟踪的 32/16 位ARM7TDMI-STM CPU 的微控制器,并带有512 kB 的嵌入高速Flash 存储器。128 位宽度的存储器接口和独特的加速结构使32 位代码能够在最大时钟速率下运行。对代码规模有严格控制的应用可使用16 位Thumb 模式将代码规模降低超过30%,而性能的损失却很小。其特别适合于串行通信的场合。LPC2368

9、内部由512K 的Flash,58K 的片内SRAM,包括32K 的局部总线SRAM、8K 的USB 使用的SRAM、16K 的以太网SRAM 和2K 的电池SRAM。此门禁考勤系统只使用了片内 Flash、局部总线SRAM 和2K 的电池SRAM,没有外部扩展存储器。如表2-1 所示,为LPC2368I/O 口的使用和分配表。表 2-1 LPC2368I/O 口的使用和分配表功能模块使用LPC2368引脚引脚功能看门狗复位P124给SP706S喂狗串口UARTO(RS-232C和RS-485)接口P0.2(TXDO)串口UARTO的输出输入P0.3(RXDO)P1.22(GPIO)RSM48

10、5CHT的收发控制读卡器模块P0.10(TXD2)微控制器与读卡模块的UART通信接口P0.11(RXD2)P0.27(SDAO)微控制器与读卡模块的I2C通信接口P0.28(SCLO)P2.11(INT)按键和门内开关P0.6P0.9四个独立按键P0.23门内开门开关输入指示灯P1.28门关闭指示灯P1.29门打开指示灯继电器和蜂鸣器P1.26继电器控制端(高电平有效)P1.27直流蜂鸣器控制(低电平有效)门磁检测P1.25检测门磁状态(低电平为门开)SD卡接口P0.21、P0.22、P2.11、P2.12、P2.13、P0.20、P0.19、P2.8、P3.25引脚具体说明见表2-3ZLG

11、7290接口P0.0(SDAO)此接口出去次三接口外,还有电源和地接口2.2.3 各个部分单元电路原理及其分析1. 电源电路系统设计为 3.3V 应用系统,但是LPC2300 系列ARM 微控制器需要2种类型的电源,分别是3.3V 和1.8V,而与PC 机通信使用的RS-485 收发器(RSM485CHT)和继电器都是5V 器件,所以设计5V 电源为系统前级电源,3.3V 为后级电源。对于LPC2300 系列ARM 的1.8V 内核供电,本系统使用片内的DC-DC,由于本系统没有使用AD/DA 功能,所以不区分模拟电源和数字电源。如图 2-3(a)、(b)所示,首先由CON30 电源接口输入9

12、V 直流电源,二极管D11 防止电源反接,经过C11、C12 滤波,再通过LM2575 将电源稳压至5V,然后通过L2、C111、C110 组成的滤波电路,输出稳定的低纹波5V 电压,再使用LDO 芯片(低压差电源芯片)稳压输出3.3V 电压。考虑到系统长时间处于工作状态,从节能方面考虑采用了开关电源LM2575 设计。系统使用的电源是 9V 直流电源,由CON30 电源接口输入,接头上的电源极性为外正内负。当系统上电后,POWER 指示LED1 应点亮。LDO 芯片采用了SPX1117M3-3.3,其特点为输出电流大,输出电压精度高,稳定性高。图 2-3 系统前后级电源和RTC 电源电路LP

13、C2300 系列ARM 集成有RTC 外设,其单独供电,此次设计中提供了两种供电方式,系统电源和外部电池供电,如图2-3(c)所示。系统电源方式便于调试系统时使用,电池供电方式在实际应用中使用。2. 时钟系统、RTC 时钟电路系统采用 ARM 嵌入式工业控制模块T2368 中的最小系统,其中使用外部12.000MHz 无源晶振作为主时钟源。对于实时时钟(RTC)功能,在CPU的RTCK1 和RTCK2 脚之间接一个32.768KHz 的晶振。3. 看门狗复位电路由于 ARM 芯片的高速、低功耗、低工作电压等特性导致其噪声容限低,对电源的纹波、瞬态响应性能、时钟源的稳定性、电源监控可靠性等诸多方

14、面也提出了更高的要求。使用了专用微处理器电源监控芯片SP706S 以提高系统的可靠性,同时该芯片还带有硬件看门狗电路。如图 2-4 所示,在电路中将看门狗复位信号输出脚( WDO )通过R32 连接到 SP706S 的手动复位输入脚( MR )上,信号nRST 连接到CPU 的复位脚nRST。可通过定时翻转 P1.24 的电平来喂狗,一旦在1.6 秒内未翻转P1.24 的电平,则SP706S 内部的看门狗溢出,WDO 脚输出低电平, MR 脚被WDO 脚拉低为低电平,导致SP706S 在RST脚输出200ms 的复位脉冲令CPU 复位,同时SP706S 内部清零看门狗让其重新计数。图 2-4

15、系统复位电路当复位按键RST 按下时,SP706S 的RST脚输出低电平复位系统。4. 串口 UART0(RS-232C 和 RS-485)接口由于系统是 3.3V ,所以使用了SP3232E 进行RS-232C 电平转换,SP3232E 是3V 工作电源的RS-232C 转换芯片。如图2-5 所示,CON2 为UART0接口,可以在串口调试阶段使用,在实际应用中,则要使用CON3 的RS-485接口。RS-485 收发器采用嵌入式隔离RS-485 收发器RSM485CHT,如图2-5(c)所示。RSM485CHT 隔离收发器模块,是集成电源隔离、电气隔离、RS-485接口芯片,总线保护器件于

16、一身,其为5V 工作电源器件。电路设计中采用保守方法,加入了PESD1CAN 隔离,是系统稳定性更高。RS-232C 与RS-485 功能可以通过跳线JP2 来切换,如图2-5(b)。JP2跳线器说明见表2-2。图 2-5 UART0(RS-232C AND RS-485)接口JP2功能备注控制器的UART0与CON2(RS-232C)连接(模式1)串口调试时使用控制器的UART0与CON3(RS-485C)连接(模式2)实际应用中使用5. JTAG 接口电路和ISP 跳线电路采用 ARM 公司提出的标准20 脚JTAG 仿真调试接口,JTAG 信号的定义及与T2368 的连接如图2-6(a)

17、所示。其中RTCK 引脚加上拉电阻,使系统重启后,LPC2368 内部的JTAG 接口使能,可以直接进行JTAG 仿真调试,同时P29:0引脚不为跟踪功能;当要使用 ISP 功能时,将PC 的串口与CON2 相连,并将跳线JP2 设置为第一种模式,使用UART0 通信。同时把JP1(如图2-6 JTAG 接口电路(c)短接,是ISP 的硬件条件得到满足。图 2-6 JTAG 接口电路6. 读卡模块现在,门禁考勤系统一般都使用非接触式无线智能卡,Mifare 卡就是其中的一员,可以实现一卡通功能,具有数据传送速度快、防碰撞、保密性高等特点。读卡器采用 ZLG500S 系列读卡模块(ZLG522S

18、/LT),ZLG522S/LT 为3.3V 供电,具有I2C 和UART 两种通信接口,和天线一体化,主动检测卡片进入的模块。此系统中,将两种接口都引出来,但只使用UART 接口,如图2-7(b)所示。图 2-7 读卡模块7. 按键、门内开关和指示灯此系统中设计了四个独立按键、一个门内开关按钮接口和门状态指示灯(红:门关;绿:门开)、下位机向PC 机发送信息指示灯(通信时闪烁),如图2-8(a)(b)所示。图 2-8 按键、门内开关和指示灯电路8. 继电器和蜂鸣器此系统应用继电器做开门开关;且有蜂鸣器提示声。继电器采用 HUIGANG 继电器,其为5V 工作器件,而系统为3.3V 系统,所以在

19、设计上采用了NPN 三极管来实现3.3V 系统控制5V 的器件,用P1.26控制(高电平闭合),驱动电路如图2-9(a)所示;直流蜂鸣器,用P1.27 控制(低电平蜂鸣),驱动电路如图2-9(b)所示。两个驱动中的二极管起到继流的作用。图 2-9 继电器和蜂鸣器驱动电路9. SD 卡接口系统使用LPC2368 为控制器,使用该内部自带SD/MMC 卡控制器来访问SD 卡。LPC2368 与SD/MMC 卡卡座的连接引脚LPC2368 微控制器与SD/MMC 卡卡座接口电路如图2-10 所示。图中,微控制器与 SD/MMC 卡卡座的连接引脚如表2-3 所示。表 2-3 LPC2368 与SD/M

20、MC 卡卡座的连接引脚LPC2368 引脚引脚名称卡座引脚含义P0.21SDPWR-卡供电控制引脚。P0.21 为低电平时给卡供电P0.22SDDATA0DAT0/DO双向的数据信号DAT0P2.11SDDATA1DAT1/IRQ双向的数据信号DAT1P2.12SDDATA2DAT2双向的数据信号DAT2P2.13SDDATA3DAT3/CS双向的数据信号DAT3P0.20SDCMDCMD/DI双向的命令/响应信号P0.19SDCLKCLK/SCK微控制器向卡发送的用于同步双方通信的时钟信号P2.8SD_CDCARD_INSRET卡完全插入到卡座中检测线。完全插入时,卡座输出低电平,否则输出高

21、电平P3.25SD_WPCARD_WP看是否写保护检测。写保护时,卡座输出高电平;否则输出低电平图 2-10 SD/MMC 卡的SD 总线接口电路接口电路包括以下部分:(1)SD 总线如图 2-10 所示,LPC2368 的P0.22、P2.11、P2.12、P2.13、P0.20 根据引脚功能,直接连接到卡座的相应接口,其中数据线DAT0DAT3 双向数据线P0.22、P2.11、P2.12、P2.13 和命令线P0.20 分别接上拉电阻。(2) SD/MMC 卡ESD 保护电路如图 2-10 所示,在卡座的数据总线DAT0DAT3、时钟线CLK 和命令线CMD 上,使用了一个ESD 保护器

22、件PESD5V0L6U,作用是:当SD/MMC卡插入或拔出时,保护卡不受高压静电的损害。(3) 卡供电控制卡的供电采用可控方式,这是为了防止 SD/MMC 卡进入不确定状态时,可以通过对卡重新上电使卡复位而无需拔卡。可控电路采用P 型MOS 管2SJ355,有微控制器的GPIO 口P0.21 进行控制。采用 2SJ355 的目的是当它开通时,管子上的压降比较小。(4) 卡检测电路包括:卡是否完全插入到卡座中和卡是否写保护。检测信号由卡座的两个引脚以电平的方式输出。当卡插入到卡座并插入到位时,卡座的CARD_INSERT(第10 脚)由于卡座内部触点连接到GND,输出低电平;当卡拔出时,该引脚由

23、于上拉电阻R83 的存在而输出高电平,该输出由微控制器的输入引脚GPIO(P2.8)来检测。卡是否写保护的检测与卡是否完全插入到卡座中的检测原理是一样的。10. TinyARM2300 接口图 2-11 底板与核心板接口电路以上介绍的是此系统的底板电路设计,下面是底板与核心板T2368 的接口排针(2.00mm),如图2-11 所示。此系统只使用了T2368 中的LPC2368最小系统,所以只给出此最小系统的原理图,如图2-12 所示。T2368 中的以太网接口没有使用,不区分模拟地和数字地。图 2-12 T2368 核心板的最小系统电路图11. 外部测试板、外部接口和剩余 IO 引出插针如所

24、示,其有继电器指示灯,门磁模拟和门内开门开关三部分组成。如图 2-13(b)所示,其为此次设计的外部接口和几个测试点,P1.25 为门磁检测输入端,BELL_1 和GND 为外部按铃接口,RelayA 和RelayB 为继电器输出接口,BELL_2 为门内开门开关接口。图 2-13(a)和(c)为剩余IO 引出排针和与ZLG7290 相连的接口,为系统的更新和升级做好准备。图 2-13 外部接口和剩余IO 引出接口注:由于此次制板为单面腐蚀制板,所以图2-11 中的(a)(b)在此次制板中没有引出。第3章软件设计说明3.1 软件任务软件设计分为下位机和上位机两大块。下位机软件任务:以 LPC2

25、368 芯片为主微控制器,对硬件的各个模块(各模块参见硬件技术文档)进行控制,制作一个具有刷卡开门和记录功能的门禁考勤系统,编程实现如下功能:1. 按时间和权限刷卡开门及在不同时间段内考勤功能;2. 记录刷卡事件、 记录考勤信息、 添加用户发卡功能;3. 与 PC 机通讯使用RS-485 总线,可以将用户数据下载到下位机系统中、 将记录信息导出到 SD 卡上;上位机软件任务:上位机软件的任务主要是与下位机通过定义的 RS-485 协议,进行通信,进而实现以下功能:1. 将用户数据下载到下位机系统中;2. 显示刷卡信息、 发卡功能;3. 设定时间权限和考勤时间段、 查看刷卡记录功能;4. 开门功

26、能: 设置刷卡后的允许开门时间长度(即刷卡开门后,在这个时间内门没有打开,则系统将门关闭);3.2 下位机软件设计资源分配本设计应用前后台系统,使用到的LPC2368 片内外设和I/O 口使用参见硬件技术文档。下面介绍一下微控制器片内部分存储器的使用和分配。3.2.1 512K 片内Flash 部分扇区和电池SRAM 分配片内 Flash 部分扇区分配如图3-1 所示,池SRAM 地址分配如图3-2 所示。图 3-1 片内Flash 部分扇区分配 图 3-2 电池SRAM 地址分配 3.2.2 后台任务和中断优先级分配后台任务和中断优先级分配如下表 3-1 所示:表 3-1 VIC 中断功能和

27、优先级分配中断源功能VIC 优先等级串口UART0与上位机通信0GPIO(P0口)的EINT3中断收键1TIMER2(1)中断收键延时,(2)继电器工作2UART2与ZLG522S/LT 读卡器通信3RTC(1)检查门磁,点亮门状态灯,并将门状态发送到上位机,(2)门处于开状态过长,则关闭门,(3) 更新开门时间权限段和考勤时间段43.3 下位机软件设计3.3.1 下位机软件设计整体思想系统中有四种模式,分别为:刷卡开门考勤模式、发卡模式、RS-485 协议处理模式、将记录数据导出到SD 卡中。通过按键KEY1 的值来判断系统该工作在那种模式和切换模式。对于处理上位机命令、中断延时收键和RTC

28、 中断的功能则在后台处理。3.3.2 主程序的流程框架作为前台的主函数,首先对使用到的 GPIO 口、各个模块和外设进行初始化,然后进入模式选择循环,其流程框图如图3-3 所示。3.3.3 主要功能模式刷卡开门和考勤模式程序设计1. 刷卡开门和考勤模式主程序设计此模式是此设计的主要功能,系统通过读卡器读出进入读卡范围内的Mifare 卡序列号,然后查询系统中的用户数据库,然后进行用户权限级别和时间权限的判断,从而进行相应的处理(记录刷卡信息和考勤信息)。用户权限是指权限是大权限,还是小权限,大权限用户则不受时图 3-3 主程序流程框图间的约束,随时可以刷卡开门;小权限用户则在设定的时间段内才可

29、以开门。此权限在发卡的时候确定。时间权限是指,小权限用户在哪个时间段内可以刷卡开门。此时间段可以通过上位机来随时设置。此模式主程序流程框图如图 3-4 所示。图 3-4 刷卡开门和考勤模式主程序流程框图2. 主要子函数的程序设计系统模式中主要子函数有:主控制器和 ZLG522S/LT 读卡模块与Mifare卡通信、用户查询函数、刷卡记录函数与考勤处理和记录函数。(1)主控制器和ZLG522S/LT 读卡模块与Mifare 卡通信调用ZLG522S模块的操作软件包,主要是读卡器对Mifare 卡的一系列操作此模式中对卡片的请求使用“标准模式”。(2)用户查询函数、刷卡记录函数与考勤处理和记录函数

30、用户信息、刷卡事件记录和考勤事件记录,是三个结构体,同时开门时间权限和考勤段的设置也是一个结构体,如程序清单3-1 所示。用户查询函数作用是在读到Mifare 卡序列号后,查询“用户信息存储区”,如果有此用户,则返回True 和此用户信息的首地址,否则返回False。刷卡记录函数的作用是将刷卡的信息记录在存储器中,程序流程图如图3-5 所示。考勤记录函数的作用是将考勤的信息记录在存储器中,其程序流程图和刷卡记录函数的流程图类似,不再赘述。程序清单3-1 定义的结构体struct infoUser1 /* 用户信息(6 个字) */uint32 cardNO;char name8;char ph

31、oneNO11;char limet;struct eventRcd1 /* 刷卡事件记录结构体(6) */uint32 cardNO;char name8;uint32 active;uint32 datas;uint32 times;struct attdRcd1 /* 考勤事件记录结构体(5) */uint32 cardNO;char name8;uint32 datas;uint32 times;struct timeamr1 /* 开门权限设置结构体 */uint8 alhour;uint8 almin;uint8 purview; /* 开门时间权限3:no;1:yes */uin

32、t8 check; /* 考勤阶段标志3:no; */* 1:yes 第一阶段;2:yes 第二阶段*/;考勤处理函数的功能,是判断现在是否为考勤时间段,如果在则进行考勤,否则不考勤。此系统中,设置了两个考勤时间段,并且可以用上位机来设置。其功能实现思想,是在每个考勤时间段内,将用户第一次刷卡做为考勤信息,且同时在卡片的指定存储块内设置一个标志,当此用户再次刷卡时,就不对其进行考勤。3.3.4 主要功能模式发卡模式一些门禁系统,都有专门的发卡器。而此项功能完全可以在一个系统中完成。此系统中的发卡模式,能够将上位机的新用户信息写到新卡片的指定存储块内,并将新用户添加到用户信息存储区。模式的工作流

33、程如图3-6 所示。此模式中,将新用户数据添加到用户信息存储区时,用到了LPC2300 系列ARM 的在应用编程(IAP)功能。由于此次试验中的用户比较少,所以,在添加新用户时,先将原有用户信息拷贝到一个数组中,再将新用户信息添加到该数组中,然后将更新了的用户信息烧写到Flash 中。同时更改用户数量也用到了IAP 功能,原理与此类似。3.3.5 RS-485 通信协议定义1. 通信协议概述门禁考勤系统分为下位机和上位机,二者通过 RS-485 来通信,所以根据此系统的特点,定义了一个RS-485 通信协议。该协议可以分为功能层、通信协议层和通信驱动层,但是由于其要实现的功能比较简单,所以将功

34、能层与通信协议层合二为一,分为功能协议层和通信驱动层:(1) 通信驱动层:本层负责从通信接口UART0 发送数据和接收数据。(2) 功能协议层:下位机与上位机通信定义了一套协议,本层负责把要发送的数据和命令按协议进行组装和把接收到的数据按协议进行解析。图 3-6 发卡模式工作流程框图2. 通信驱动层此驱动层就是 LPC2368 的片内外设UART0。 3. 功能协议层(1) 通信帧结构下位机和上位机通信的帧结构如图 3-7 所示,各字段的意义见表3-2。图 3-7 RS-485 通信帧结构表3-2 通信帧各字段意义字段长度(Byte)说明帧头STX01数据帧的起始位,数值为:0x2A目的机地址

35、AIM1此数据帧是发给地址为AIM 的节点源机地址ORG1此数据帧是从地址为ORG 的节点发出总帧长FrameLen1整个数据帧的总长度命令类型Cmd1发送数据节点发给接收节点的数据用途或命令(命令集参见下位机程序文件UART0.h 和上位机文件protocol.h)信息长度InfoLen1该帧所带信息的长度若所发信息长度为0,则Length = 0信息InfoInfoLen信息数据,其长度由InfoLen 字段指出,当InfoLen = 0时,则该字段不存在校验和BCC1校验和。从STX0 开始到Info 的最后一个字节的异或,最后取反帧结束符ETX01帧结束标志,数值为:0x054. 发送

36、数据到上位机下位机发送数据到上位机函数如下所示。/* 函数名称: RS485_Send* 函数功能: 通过 RS-485 发送数据到上位机* 输入参数: nCMD: 命令类型;pInfo: 要发送信息的指针;nInfoLen1:要发送信息的长度* 输出参数: 无*/void RS485_Send(uint8 nCMD,const void *pInfo, uint8 nInfoLen)uint8 SendBuf60; / 发送缓冲区RS485_SEND(); / 将RSM485CHT 隔离收发器设置为发送模式/ 组装数据SendBufFRAME_START = STX0;SendBufAIM_

37、ADDR = AIM;SendBufORG_ADDR = ORG;SendBufFRAME_LEN = nInfoLen+PROTOCOL_485_LEN; / 帧长SendBufCMD_CODE = nCMD; / 命令码SendBufINFO_LEN = nInfoLen; / 信息长度memcpy(&SendBufINFO, pInfo, nInfoLen); / 信息SendBufBCC+nInfoLen= CheckSum(SendBuf,SendBufFRAME_LEN - 2); / 校验码/ CheckSum()为计算校验码函数SendBufFRAME_END + nInfoL

38、en = ETX0;/ 发送数据UART0_Send(SendBuf, (uint32)SendBufFRAME_LEN);RS485_RECEIVE(); / 将RSM485CHT 隔离收发器设置为接收模式程序将帧内各字段填入发送缓冲区,最后调用通信驱动层函数UART0_Send 把缓冲区的数据发送出去。5. 接收上位机命令和数据下位机接收上位机命令和数据的函数如下所示:/* 函数名称:IRQ_UART0* 函数功能:串口 0 接收中断服务程序* 入口参数:无* 出口参数:无*/void _irq IRQ_UART0(void)uint32 i = 0;uint32 IIR = 0;/* U

39、ART0 接收中断处理 */while (IIR = U0IIR) & 0x01) = 0) / 若尚有中断待处理switch (IIR & 0x0e)case 0x04: /* RDA中断处理入口 */for (i = 0; i (8 - 1); i+)GuiUAT0DataBufGuiRcvNum+ = U0RBR;/ 读空FIFO,清除RDA 中断break;case 0x0c: /* CTI 中断处理入口 */while (U0LSR & 0x01) != 0)GuiUAT0DataBufGuiRcvNum+ = U0RBR;if (GuiUAT0DataBufGuiRcvNum -

40、1 = ETX0)/ 检验各字段的合法性/ 检验帧起始位if (GuiUAT0DataBufFRAME_START != STX0)GuiRcvNum = 0;return FALSE;/ 检验信息归属性if (GuiUAT0DataBufAIM_ADDR != ORG)GuiRcvNum = 0;return FALSE;/ 检验帧总数据长度if (GuiRcvNum PROTOCOL_485_LEN)GuiRcvNum = 0;return FALSE;/ 检验帧数据长度if (GuiUAT0DataBufFRAME_LEN != GuiRcvNum)GuiRcvNum = 0;retur

41、n FALSE;/ 检验帧信息长度if (GuiUAT0DataBufINFO_LEN !=(GuiRcvNum - PROTOCOL_485_LEN)GuiRcvNum = 0;return FALSE;/ 检验帧结束符if (GuiUAT0DataBufGuiRcvNum - 1 != ETX0)GuiRcvNum = 0;return FALSE;/ 检验校验码if (GuiUAT0DataBufBCC + GuiUAT0DataBufINFO_LEN !=CheckSum(GuiUAT0DataBuf, GuiUAT0DataBufFRAME_LEN - 2)GuiRcvNum = 0

42、;return FALSE;/ 验证成功后,进入相应处理if (GuiUAT0DataBufCMD_CODE = X)GuiNewInfo_RCV = 1;/* 接收的是新用户信息则置标准位为1 */elseGuiKeyvalue1 = 100;/* 接收成功,进入RS-485 协议的处理函数 */break;case 0x02: /* 发送中断 */break;default:break;VICVectAddr = 0x00; / 通知VIC 中断处理结束首先是由通信驱动层IRQ_UART0 函数来接收数据,当接收完数据,并且最后一位为帧结束符时,对整个数据帧的各字段进行合法性检验,检验正确

43、后,设置进入RS-485 协议处理模式,通过判断命令类型Cmd,来执行相应的操作。在驱动层 IRQ_UART0 函数中进行帧各字段合法性检验的目的,是为了避免中断嵌套。考虑此因素是因为,RS-485 协议处理模式中需要用到IAP功能,进入中断,所以,按照命令类型Cmd 进行操作,需要在退出UART0接收中断后处理,即在主函数中处理,而在发卡模式下,接收新用户信息时,又不能退出该模式,所以就无法进入RS-485 协议处理模式,从而产生了矛盾冲突。而将合法性验证放在UART0 接收中断中,当验证合法后,将一个标志位置一即可,从而解决了此矛盾。3.3.6 后台程序介绍1. 按键接收程序设计在主函数中

44、,通过按键KEY1 的值来判断和切换工作模式。按键通过中断接收,启动定时器延时12ms,然后再判断是否有的确有键按下和是那个键按下,进而给此键值寄存器赋值。其流程框图如图3-8所示。/* 函数名称:EINT3_ISR* 函数功能:GPIO EINT3 中断,接收按键* 入口参数:无* 出口参数:无* 调用函数:无*/void _irq EINT3_ISR(void)if (IO0IntStatF & KEY) != 0) /* 判断是否有键按下*/Timer2_StartCount(11); /* 启动定时器去抖延时12ms */IO0IntClr = KEY; /* 清除GPIO 中断标志 */VICVectAddr = 0x00; /* 通知VIC 中断处理结束 */图 3-8 按键接收程序流程图2. 使用 RTC 的中断和报警程序设计由 VIC 中断功能和优先级分配表表3-1,可知RTC 中断的功能比较多。下面简要说明一下RTC 的中断程序设计。如表3-1 中RTC 中断的功能,前三项是秒中断的功能,第四项是报警中断的功能,且报警中断的匹配值,在每次报警中断后将重新赋值。其程序流程图如图3-9 所示。3. 用于延时的定时器 Timer2 程序设计Timer2 主要功能是用于显示信息和继电器接通的时间控制。可通过Timer2_StartC

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号