摘要针对传统的有线方式检测、采集、传输中节点分散需要大量布线等问题,本文介绍了一种基于CC2530和数字压力传感器的电压数据采集系统。
首先介绍了CC2530 结构及实现原理以及所使用电压传感器模块结构和原理,然后在了解它们的基础上找出相应的采集数据以及传输数据的所需的软件,串口通信及AD转换的原理和其实现方法,最后通过给出总的电压采集的程序流程图以及软件子系统设计系统框图和以上实验设备完成基于CC2530和数字压力传感器的电压数据采集系统。
关键词: 电压采集,嵌入式,CC2530,AD转换,串口通信目录一、前言 (1)二、基本原理 (2)2.1 CC2530 结构及实现原理 (2)2.2 电压传感器结构及实现原理 (4)2.3 软件方面 (5)(1)串口通信 (5)(2)AD转换 (6)三、系统分析 (9)3.1 程序流程图 (9)3.2 软件子系统设计 (9)四、代码清单 (10)4.1 核心代码 (10)4.2 AD转换代码 (11)总结............................................... 错误!未定义书签。
参考文献.. (14)一、前言嵌入式系统是以应用为中心,以计算机技术为基础,软硬件可定制,适用于不同应用场合,对功能,可靠性,成本,体积,功耗有严格要求的专用计算机系统[1]。
随着生活水平的提高和科学技术发展的需求,人类对环境信息的感知上有了更高的要求,在某些特殊工业生产领域和室内存储场合对环境要求显得特别苛刻;随着嵌入式技术的发展,为环境检测提供了更进一步的保障。
基于嵌入式的环境信息采集系统包含感知层、传输层、应用层三个层面;传输层常见的有温湿度、烟感、电压、压力等嵌入式传感器模块,传输层包括有线通信和无线通信两部分,应用层包括各种终端。
电压是推动电荷定向移动形成电流的原因。
电流之所以能够在导线中流动,也是因为在电流中有着高电势和低电势之间的差别。
这种差别叫电势差,也叫电压。
换句话说,在电路中,任意两点之间的电位差称为这两点的电压。
在很多应用场合,电压是一个很重要的一个参数。
电压的自动监测已经成为各行业进行安全生产和减少损失的重要措施之一。
本课程设计就对嵌入式电压数据采集系统进行详细分析和设计。
二、基本原理2.1 CC2530 结构及实现原理CC2530 是基于2.4-GHz IEEE802.15.4、ZigBee 和RF4CE 上的一个片上系统解决方案。
其特点是以极低的总材料成本建立较为强大的网络节点。
CC2530 芯片结合了RF 收发器,增强型8051 CPU,系统内可编程闪存,8-KB RAM 和许多其他模块的强大的功能。
如今CC2530 主要有四种不同的闪存版本:CC2530F32/64/128/256,分别具有32/64/128/256KB 的闪存。
其具有多种运行模式,使得它能满足超低功耗系统的要求。
同时CC2530运行模式之间的转换时间很短,使其进一步降低能源消耗。
CC2530包括了1个高性能的2.4 GHz DSSS(直接序列扩频)射频收发器核心和1个8051控制器,它具有32/64/128 kB可选择的编程闪存和8 kB的RAM,还包括ADC、定时器、睡眠模式定时器、上电复位电路、掉电检测电路和21个可编程I/O引脚,这样很容易实现通信模块的小型化。
CC2530是一款功耗相当低的单片机,功耗模式3下电流消耗仅0.2μA,在32 k晶体时钟下运行,电流消耗小于1μA。
CC2530芯片使用直接正交上变频发送数据。
基带信号的同相分量和正交分量由DAC转换成模拟信号,经过低通滤波,变频到所设定的信道上。
当需要发送数据时,先将要发送的数据写入128B的发送缓存中,包头是通过硬件产生的。
最后经过低通滤波器和上变频的混频后,将射频信号被调制到 2.4GHz,后经天线发送出去。
CC2530有两个端口分别为TX/RX,RF端口不需要外部的收发开关,芯片内部已集成了收发开关。
CC2530的存储器ST-M25PE16是4线的SPI通信模式的FLASH,可以整块擦除,最大可以存储2M个字节。
工作电压为2.7v到3.6v。
CC2530温度传感器模块反向F型天线采用TI公司公布的2.4GHz倒F型天线设计。
天线的最大增益为+3.3dB,天线面积为25.7×7.5mm。
该天线完全能够满足CC2530工作频段的要求(CC2530工作频段为2.400GHz~2.480GHz)。
图2530芯片引脚CC2530芯片引脚功能AVDD1 28 电源(模拟) 2-V–3.6-V 模拟电源连接AVDD2 27 电源(模拟) 2-V–3.6-V 模拟电源连接AVDD3 24 电源(模拟) 2-V–3.6-V 模拟电源连接AVDD4 29 电源(模拟) 2-V–3.6-V 模拟电源连接AVDD5 21 电源(模拟) 2-V–3.6-V 模拟电源连接AVDD6 31 电源(模拟) 2-V–3.6-V 模拟电源连接DCOUPL 40 电源(数字) 1.8V 数字电源去耦。
不使用外部电路供应。
DVDD1 39 电源(数字) 2-V–3.6-V 数字电源连接DVDD2 10 电源(数字) 2-V–3.6-V 数字电源连接GND - 接地接地衬垫必须连接到一个坚固的接地面。
GND 1,2,3,4 未使用的连接到GNDP0_0 19 数字I/O 端口0.0P0_1 18 数字I/O 端口0.1P0_2 17 数字I/O 端口0.2P0_3 16 数字I/O 端口0.3P0_4 15 数字I/O 端口0.4P0_5 14 数字I/O 端口0.5P0_6 13 数字I/O 端口0.6P0_7 12 数字I/O 端口0.7P1_0 11 数字I/O 端口1.0-20-mA 驱动能力P1_1 9 数字I/O 端口1.1-20-mA 驱动能力P1_2 8 数字I/O 端口1.2P1_3 7 数字I/O 端口1.3P1_4 6 数字I/O 端口1.4P1_5 5 数字I/O 端口1.5P1_6 38 数字I/O 端口1.6P1_7 37 数字I/O 端口1.7P2_0 36 数字I/O 端口2.0P2_1 35 数字I/O 端口2.1P2_2 34 数字I/O 端口2.2P2_3 33 数字I/O 模拟端口2.3/32.768 kHz XOSCP2_4 32 数字I/O 模拟端口2.4/32.768 kHz XOSCRBIAS 30 模拟I/O 参考电流的外部精密偏置电阻RESET_N 20 数字输入复位,活动到低电平RF_N 26 RF I/O RX 期间负RF 输入信号到LNARF_P 25 RF I/O RX 期间正RF 输入信号到LNAXOSC_Q1 22 模拟I/O 32-MHz 晶振引脚1或外部时钟输入XOSC_Q2 23 模拟I/O 32-MHz 晶振引脚22.2 电压传感器结构及实现原理电压输入使用大于 1MΩ的等效输入阻抗的输入取样,将输入电压进行 15 倍衰减,然后使用差分单端运放,将其变换到 0~3V 的范围,经电压二次缓冲后送到 AD 采集输入端。
其电路原理图,如下图 2.10 所示:使用 10~12bit 的 AD 采集器,一次采样使用 2 字节描述,MSB 方式,电压传感器模块输出数据结构请参见“电流传感器模块上传数据定义”。
2.3软件方面(1)串口通信1、串行数据(DATA)DATA三态门用于数据的读取。
DATA在SCK时钟下降沿之后改变状态,并仅在SCK时钟上升沿有效。
数据传输期间,在SCK时钟高电平时,DATA必须保持稳定。
为避免信号冲突,微处理器应驱动DATA在低电平。
需要一个外部的上拉电阻(例如:10kΩ)将信号提拉至高电平。
上拉电阻通常已包含在微处理器的I/O 电路中。
2、串行时钟输入(SCK)SCK用于微处理器与电压传感器之间的通讯同步。
由于接口包含了完全静态逻辑,因而不存在最小SCK频率。
3、测量时序(RH 和T)发布一组测量命令(‘00000101’表示电压值)后,控制器要等待测量结束。
这个过程需要大约11/55/210ms,分别对应8/12/14bit测量。
确切的时间随内部晶振速度,最多有±15%变化。
电压传感器通过下拉DATA至低电平并进入空闲模式,表示测量的结束。
控制器在再次触发SCK时钟前,必须等待这个“数据备妥”信号来读出数据。
检测数据可以先被存储,这样控制器可以继续执行其它任务在需要时再读出数据。
接着传输2个字节的测量数据和1个字节的CRC奇偶校验。
uC需要通过下拉DATA为低电平,以确认每个字节。
所有的数据从MSB开始,右值有效(例如:对于12bit数据,从第5个SCK时钟起算作MSB;而对于8bit 数据,首字节则无意义)。
用CRC数据的确认位,表明通讯结束。
如果不使用CRC-8校验,控制器可以在测量值LSB后,通过保持确认位ack 高电平,来中止通讯。
在测量和通讯结束后,电压传感器自动转入休眠模式。
4、通讯复位时序如果与电压传感器通讯中断,下列信号时序可以复位串口:当DATA保持高电平时,触发SCK时钟9次或更多。
在下一次指令前,发送一个“传输启动”时序。
这些时序只复位串口,状态寄存器内容仍然保留。
图4通讯复位时序图(2)AD转换CC2530 内部包含一个 ADC,它支持最高达 12 位的模拟到数字的转换。
该ADC 包含一个模拟多路复用器支持最高达 8 路的独立可配置通道、参考电压产生器,转换结果通过 DMA被写入存储器。
支持多种运行模式。
1、ADC 输入P0 端口引脚上的信号可被用来作为 ADC 输入。
在以下的描述中,我们将这些引脚记为AIN0-AIN7 引脚。
输入引脚 AIN0-AIN7 被连接到 ADC。
ADC 可被设置为自动执行一个转换序列,当该序列被完成时可随意地从任一通道执行一个附加的转换。
输入可被配置为单端或差分输入。
当使用差分输入时,差分输入由输入组 AIN0-1、AIN2-3、AIN3-4、AIN4-5 和 AIN6-7 组成。
注意:负电压不能被连接到这些引脚,大于 VDD的电压也不能被连接到这些引脚。
除了输入引脚 AIN0-AIN7 外,一个片上温度传感器的输出可被选择作为ADC 的一个输入用来进行温度测量。
还可以选择相当于 AVDD_SOC/3 的电压作为ADC 的一个输入。
2、ADC 转换序列ADC 可执行一个转换序列并将结果传送到存储器(通过 DMA)而不需要与CPU 进行任何互操作。
转换序列可被 ADCCFG 寄存器影响,因为来自于 IO 引脚的 ADC 的 8 个模拟输入不必全部被编程作为模拟输入。
如果一个通道作为一个序列的一部分,但相应的模拟输入在 ADCCFG中被禁止,那么该通道将被跳过。