本文共 2042 字,大约阅读时间需要 6 分钟。
A/D转换是一种将模拟电信号转换为数字信号的技术,其核心在于通过采样、保持、量化和编码等过程,将连续变化的模拟量转化为离散的数字量。A/D转换器(ADC)是实现数字化的关键设备,而CC2530芯片中的ADC模块则以其高性能和灵活配置,成为很多嵌入式应用的首选。
CC2530的ADC模块支持14位二进制转换,提供12位有效数据位,内置模拟多路转换器和参考电压发生器。该模块具有以下主要特点:
CC2530的ADC输入端口0引脚(AIN0~AIN7)支持单端或差分配置,具体通道信息如下:
#include "ioCC2530.h"void Init_Timer1() { T1CC0L = 0xd4; T1CC0H = 0x30; T1CCTL0 |= 0x04; T1IE = 1; T1OVFIM = 1; EA = 1; T1CTL = 0x0e;}unsigned char count = 0;unsigned char F_time = 0;#pragma vector = T1_VECTOR__interrupt void Timer1_Sevice() { T1STAT &= ~0x01; count++; if (count == 10) { F_time = 1; count = 0; }}void Init_Uart0() { PERCFG = 0x00; P0SEL = 0x0C; U0BAUD = 59; U0GCR = 9; U0UCR |= 0x80; U0CSR |= 0xC0; UTX0IF = 0; URX0IE = 1; EA = 1;}void UR0SendString(unsigned char *str, unsigned char count) { while (count--) { U0DBUF = *str++; while (!UTX0IF); UTX0IF = 0; }}void Init_ADC0() { P0SEL |= 0x01; P0DIR &= ~0x01; APCFG |= 0x01;}void Get_ADC0_Value() { ADCIF = 0; ADCCON3 = (0x80 | 0x10 | 0x00); while (!ADCIF); dat[0] = 0xaf; dat[1] = ADCH; dat[2] = ADCL; dat[3] = 0xfa;}void main() { Init_Uart0(); Init_Timer1(); Init_ADC0(); while (1) { if (F_time == 1) { Get_ADC0_Value(); UR0SendString(dat, 4); F_time = 0; } }} 转载地址:http://elszz.baihongyu.com/