LPC1768与AD7656带时标采样系统设计
2012-08-30 来源:单片机与嵌入式系统
引言
监测系统中,对被测对象的监测时常需要带时标。过去常外扩实时时钟芯片PCF8563,使用I2C接口与控制器相连,来获得时间。该设计需要外扩硬件资源,并且消耗控制器资源,使用效果不佳。恩智浦(NXP)公司的基于最新ARMv7内核的LPC1768,内嵌实时时钟计数器,系统
掉电仍可继续运行,可由自带的电源引脚VBAT供电,进行不间断地计时。数模采样模块采用ADI公司的AD7656,高精度、高速度、高信噪比、良好的实用性等特点使其成为模/数转换的极佳选择。使用LPC1768为控制核心,配合高效的AD7656模/数芯片,构成采样数据带时标的实时采样系统,在工业实时监测系统中有十分广阔的应用前景。
1 硬件设计
1.1 芯片简介
Correx系列基于ARM公司的架构ARMv7,包括Cortex-A(应用处理器)、Cortex-R(实时处理器)、Cor-tex-M(微控制器)三个系列,Cortex-M3是面向低成本、小引脚数目以及低功耗应用,并且具有极高运算能力和中断响应能力的处理器内核。NXP的LPC1768便是基于Cortex-M3的处理器。
如同现在市场上多数控制器,LPC1768只内建了1个带8通道的12位的模/数转换(少数芯片如TMS320F2812,带有2个8通道12位的模/数转换),不能实现对多个监测单元的同时采样,并且实际达到的分辨率也只有9位半,不能满足现场监测的需要。使用外扩ADIAD7656芯片来实现多路监测采样,可广泛应用于输电线路监测系统、仪表和控制系统等。
1.2 LPCI768芯片电路
硬件系统中,LPC1768FBD1OO作为主控芯片,其主频最高为100 MHz。LPC1768有3种时钟来源:
①osc-clk,片外时钟(主振荡器)输入,外部晶振工作在(1~25 MHz)。
②rtc-clk,实时时钟频率输入,实时时钟本身需要1个外部晶振(1~32.768 kHz)。
③irc-clk,内部振荡时钟(标称频率4 MHz),在上电和片上复位时使用irc时钟,待软件配置其他时钟输入;irc-clk达不到USB接口时间基准精度要求,要使用USB功能,必须外接更高精度晶振。
图1为RTC时钟时域的总体设计框图。使用12MHz的外部晶振,通过锁相环倍频后,以96MHz运行。RTC时钟输入RTCXl、RTCX2,外接32.768 kHz晶振,采用独立3.3 V电池供电,Vbat输入端接二极管,防止电池反接造成芯片烧毁。芯片采用3.3 V供电,数字和模拟之间用O Ω电阻或者合适值的电感(电感值大小和电路设计本身有关)隔开。
JTAG仿真口接法如图2所示。
ADI公司的AD7656有多种数据传输方式可供配置,相对于LPC1768丰富的串行传输方式和很少的I/0数量,并行传输要占用16位或8位数据线,占用资源太多。使用带有8帧4~16位可配置FIFO的SSP总线,使其运行在SPI模式下。
LPCI768的SSP同步串行控制器,占用4个引脚:
①SCK,串行时钟线。作为同步时钟信号,主机驱动,从机接收,可配置高、低有效只在传输过程中有效;对应引脚为P0.15或P1.20(SSP0使用),PO.7或P1.31(SSPl使用)。
②SSEL,帧同步/从机选择信号。主机在数据传输开始和结束时都会驱动该信号,在多个从机情况下,可作为片选信号使用;对应引脚为P0.16或P1.21(SSP0使用),P0.6(SSP1使用)。
③MISO,Master In Slave Out。当SSPn作为主机时,该引脚作为串行数据输入;SSPn作为从机时,该引脚作为串行数据输出线;SSPn是从机且未被SSEL选择时,引脚处于高阻态。对应引脚为PO.17或Pl.23(SSP0使用),P0.8(SSP1使用)。
④MOSI,Master Out Slave In。SSPn是主机时,串行数据从该引脚输出;SSPn是从机时,该引脚接收主机输入的数据。对应引脚为PO.18或P1.24(SSP0使用),P0.9(SSPl)。
1.3 AD7656芯片电路
AD7656工作电路如图3所示,VDD与VSS是芯片模拟量输入部分的电源,使用+12 V和-12 V(可用电压范围为9.5~16.5 V的电源)供电,并使用0.1μF电容和10μF电解电容与模拟地隔开;AVCC与AGND是芯片ADC核心的工作电源,使用+5 V电源供电,两者之间同样要用0.1 μF电容和10μF电解电容隔开;AVCC与DVCC相差不能大于0.3 V,就算短时间内相差大于O.3 V,也会出现错误的测量结果;VDRIVE引脚是逻辑电源输入,可以根据不同的控制芯片或总线电平,来接不同的逻辑电平,配合LPC1768芯片3.3 V的电平,使用3.3 V电源,并用0.1μF电容和10 μF电解电容与DGND隔开;REFCAPC/B/A分别用O.1 μF电容和10 μF电解电容与模拟地隔开。
RANGE接高电平,量程为±2×VREF,接低电平,量程为±4×VREF;选择串行模式下,接高电平3.3V,接DGND;串行数据只使用A口传输,SEL-A接高电平3.3 V,SEL-B、SEL-C接DGND;不使用菊花链功能,将DCIN-C、DCIN-B、DCIN-A引脚接DGND;引脚接高电平3.3 V,持续工作在标准模式下,接低电平为待机状态;CONVST-A/B/C接LPC1768的MATl.1,有定时器1的比较器输出翻转电平控制A/D转换;BUSY引脚在转换开始到结束为高电平,接LPC1768的EINT3,捕获转换结束下降沿;SCLK接LPC1768的SSP0的SCK0引脚(选用P1.20);SDATA接LPC1768的SSP0的MISO0引脚(选用P1.23)。
2 软件设计
在电力系统监测中,许多时候要用到三相电压电流采样,并对每个周期取128个采样值。使用定时器1产生比较中断,使用比较中断的引脚翻转功能,比较值为20 ms/(128×2),即实际采样周期为2×20 ms/(128×2)=20ms/128。当比较输出翻转至高电平时,CONVST-A/B/C
置高,开始采样,同时BUSY引脚电平置高;转换结束,BUSY引脚置低,EINT3设置下降沿中断,捕获其下降沿,进入中断;中断服务程序读取RTC值和打开SSP0读取ADC值,程序流程如图4所示。
2.1 RTC实时时钟程序
LPC1768 RTC拥有秒、分、小时、日期值(周期为月、值1~31)、星期值、日期值(周期为年、值1~365)、月值、年值寄存器,对每个寄存器设置需要的值。RTC中断分为2种——计数器增量中断(CIIR)和报警中断。
计数器增量中断:RTC中8个寄存器,使能任意一个时间值的中断(秒中断、分中断等),那么该时间值计数器每增加1次,就产生1次中断;
RTC功能模块框图如图5所示。
下面是秒增量中断的例子。
2.2 AD7656与LPC1768 SSPO通信程序
配置LPC1768 SSP0为SPI模式,每帧传输16位数据,自动接收6帧数据。程序如下:
结语
本文介绍了基于ARM Cortex-M3的芯片LPC1768FBl00和16位A/D芯片AD7656的工作原理,设计了基于AD7656与LPC1768串行通信的采样系统,实现对采样数据带上时标的设计,对监控系统获得实时状态提供了可行方案。本系统可广泛应用于电力系统在线监测。由于工业现场的应用环境,该系统在精度和稳定性方面有待于提高。