LPC1768与AD7656带时标采样系统设计

发布者:真瓷堂最新更新时间:2012-08-30 来源: 单片机与嵌入式系统 关键字:时间标示  LPC1768  AD7656  RTC  SSP 手机看文章 扫描二维码
随时随地手机看文章

引言
    监测系统中,对被测对象的监测时常需要带时标。过去常外扩实时时钟芯片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功能,必须外接更高精度晶振。

5a.JPG


    图1为RTC时钟时域的总体设计框图。使用12MHz的外部晶振,通过锁相环倍频后,以96MHz运行。RTC时钟输入RTCXl、RTCX2,外接32.768 kHz晶振,采用独立3.3 V电池供电,Vbat输入端接二极管,防止电池反接造成芯片烧毁。芯片采用3.3 V供电,数字和模拟之间用O Ω电阻或者合适值的电感(电感值大小和电路设计本身有关)隔开。
    JTAG仿真口接法如图2所示。

5b.JPG


    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使用)。[page]

    ②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电解电容与模拟地隔开。

5c.JPG


    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所示。

5d.JPG


2.1 RTC实时时钟程序
    LPC1768 RTC拥有秒、分、小时、日期值(周期为月、值1~31)、星期值、日期值(周期为年、值1~365)、月值、年值寄存器,对每个寄存器设置需要的值。RTC中断分为2种——计数器增量中断(CIIR)和报警中断。
    计数器增量中断:RTC中8个寄存器,使能任意一个时间值的中断(秒中断、分中断等),那么该时间值计数器每增加1次,就产生1次中断;[page]

    报警中断:使能8个寄存器的任意一个或者几个计数中断使能,当所有未屏蔽寄存器的值与当前时间寄存器的值匹配时,产生中断。
    RTC功能模块框图如图5所示。

5e.JPG


    下面是秒增量中断的例子。

5f.JPG
2.2 AD7656与LPC1768 SSPO通信程序
    配置LPC1768 SSP0为SPI模式,每帧传输16位数据,自动接收6帧数据。程序如下:

5g.JPG

结语
    本文介绍了基于ARM Cortex-M3的芯片LPC1768FBl00和16位A/D芯片AD7656的工作原理,设计了基于AD7656与LPC1768串行通信的采样系统,实现对采样数据带上时标的设计,对监控系统获得实时状态提供了可行方案。本系统可广泛应用于电力系统在线监测。由于工业现场的应用环境,该系统在精度和稳定性方面有待于提高。

关键字:时间标示  LPC1768  AD7656  RTC  SSP 引用地址:LPC1768与AD7656带时标采样系统设计

上一篇:基于LPC1100的温度检测网络节点设计
下一篇:基于LPC916、CS5463的新型多功能电能表电路设计

推荐阅读最新更新时间:2024-03-16 13:07

s3c2410实时时钟(RTC)
在嵌入式系统中,实时时钟单元可以提供可靠的时钟,包括时、分、秒、年、月、日。可以提供毫秒级的时钟中断。 与实时时钟相关的寄存器: 实时时钟控制寄存器(RTCCON): 实时时钟控制设置。 告警控制寄存器: 年、月、日、时、分、秒告警使能标志,当告警时间寄存器时间到达时引发实时时钟报警中断。 实时时钟计数器: 用与存储时钟计数值,每过一个时钟减一,到零时引发实时时钟时间滴答中断。 告警时间寄存器: 存储告警时间的年、月、日、时、分、秒值 实时时钟寄存器: 保存实际时间。 实时时钟编程步骤: 1、初始化时钟 2、向实时时钟寄存器写入当前的时间,即效表 3、读取时间显示 下面为试验代码 struct time { unsigned c
[单片机]
LPC1768之外部中断
/************************************************************************************* * main.c: the main file * NXP -- LPC1768 * * * Author : light * Date : 2012-4-22 * * Email : lightwu@hotmail.com ************************************************************************************
[单片机]
ARMLinux驱动RTC(实时时钟)驱动分析
硬件平台:FL2440(S3C2440) 内核版本:Linux 2.6.28 主机平台:Ubuntu 11.04 内核版本:Linux 2.6.39 交叉编译器版本:arm-linux-gcc 3.4.1 原创作品,转载请标明出处http://blog.csdn.net/yming0221/article/details/6584285 1、实时时钟概述 实时时钟(RTC)单元可以在断电的情况下使用纽扣电池继续计时工作。RTC使用STRB/LDRB ARM操作传输二进制码十进制数的8位数据给CPU。其中的数据包括秒、分、时、日期、天、月、年的时间信息。可以执行报警功能。 2、实时时钟操作 下面是RTC模块的电路图
[单片机]
ARMLinux驱动<font color='red'>RTC</font>(实时时钟)驱动分析
LPC1768里的SPI驱动示例——基于SST25VF016B
这里有个坑,我的路虎开发板原理图上是AT45DB161这样的芯片,实际上丝印却是SST25VF016B,这两个器件都是存储设备,但是它们不是pin对pin的,这里大家需要注意下!!! /******************** (C) COPYRIGHT 2008 STMicroelectronics ******************** * File Name : spi_flash.h * Author : MCD Application Team * Version : V2.0.3 * Date : 09/22/2008 * Description : Header
[单片机]
STM32CubeMX系列教程13:实时时钟(RTC)
1.RTC简介 实时时钟 (RTC) 是一个独立的 BCD 定时器/计数器。 RTC 提供具有可编程闹钟中断功能的日历时钟 /日历。RTC 还包含具有中断功能的周期性可编程唤醒标志。 两个 32 位寄存器包含二进码十进数格式 (BCD) 的秒、分钟、小时( 12 或 24 小时制)、星期几、日期、月份和年份。此外,还可提供二进制格式的亚秒值。系统可以自动将月份的天数补偿为 28、29(闰年)、30 和 31 天。 只要芯片的备用电源一直供电,RTC上的时间会一直走。 2.新建工程 本章程序在串口printf工程的基础上修改,复制串口printf的工程,修改文件夹名。点击STM32F746I.ioc打开STM32cub
[单片机]
STM32CubeMX系列教程13:实时时钟(<font color='red'>RTC</font>)
RTC的I2C总线铁电存储器FM31256
  FM31256是由Ramtron公司推出的新一代多功能系统监控和非易失性铁电存储芯片。与其他非易失性存储器比较,它具有如下优点: 读/写速度快,没有写等待时间;功耗低,静态电流小于1 mA,写入电流小于150 mA;擦写使用寿命长,芯片的擦写次数为100亿次,比一般的EEPROM存储器高10万倍,即使每秒读/写30次,也能用10年;读/写的无限性,芯片擦写次数超过100亿次后,还能和SRAM一样读/写。   铁电存储器(FRAM)的核心技术是铁电晶体材料。这一特殊材料使铁电存储器同时拥有随机存取存储器(RAM)和非易失性存储的特性。本文介绍了FM31256的主要功能,并具体给出了基于嵌入式C语言编写的存储器读/写程序。 1
[单片机]
带<font color='red'>RTC</font>的I2C总线铁电存储器FM31256
USB自定义HID设备实现-LPC1768
首先在之前鼠标的基础上修改设备描述符 #include usbdesc.h //usb标准设备描述符 const U8 USB_DeviceDescriptor = { USB_DEVICE_DESC_SIZE, //bLength字段。设备描述符的长度为18(0x12)字节 USB_DEVICE_DESCRIPTOR_TYPE, //bDescriptorType字段。设备描述符的编号为0x01 WBVAL(0x0110), //bcdUSB字段。这里设置版本为USB1.1,即0x0110。 0x00, //bDeviceClass字
[单片机]
LPC1768之时钟
一锁相环和CPU时钟。 CPU时钟=锁相环0输出/CPU时钟配置寄存器的预分频值即:Fcpu=Fcco/CCLKCFG+1。锁相环可以把外部时钟倍频到较高频率,PLL0输出频率是: Fcco = (2xMxFin)/N; M=MSEL0+1,N=NSEL0+1。MSEL0和NSEL0分别是PLL0CFG_Val 的低字和高字。N值得取值范围是1~32,而M的取值是在较高的振荡器频率下(超过1MHz)允许范围是6~512。 得到PLL0输出值之后,在经过CPU时钟配置寄存器就可以得到CPU时钟。 在这个system_lpc17xx.c文件中,修改#define PLL0CFG_Val 0x00050063的宏定义值就可以了
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved