1:ADC:Analog-to-Digital Converter,模拟信号转数字信号,自然界一般为模拟信号,而SoC需要数字信号,所以之间通信需要ADC。
2:转换原理:
以逐次逼近式AD转换为例:

这里以8位为例,而S5pv210SoC是可选10bit、12bit;
(1) 首先发出“启动信号”信号S。当S由高变低时,“逐次逼近寄存器SAR”清0,DAC输出Vo=0,“比较器”输出1。当S变为高电平时, “控制电路”使SAR开始工作。 (4) 在最低位bit0确定后,转换结束,“控制电路”发出“转换结束”信号EOC。该信号的下降沿把SAR的输出锁存在“缓冲寄存器”里,从而得到数字量输出。 从转换过程可以看出: 启动信号为负脉冲有效。 转换结束信号为低电平。 例如满量程应该是5V,所以,第一次DA输出2.5V,输入电压与2.5V比较,输入电压大,故而取2.5V-5V之间,即最高位保留1。然后在新的范围内取中间电压,即3.75V,依此类推。。。。 3:S5pv210的ADC特性 (1) 精度10bit/12bit; (2) 最大转换速率1MSPS (3) 模拟电压范围0-3.3 (4) 可设置普通AD模式(即TOUCH SCREEN触摸屏模式切换为普通AD模式) 3:AD工作时钟时钟频率 S5pv210的ADC时钟接在PCLC_PSYS总线上(PCLC_PSYS时钟总线频率为66MHz),一般设置分频器位65,对用的ADC时钟位1MHz,此时的转换速率为1/200KHz, 最大ADC时钟可设置为5MHz,对应的最大转换速率为1MSPS。 4:ADC数据可以通过轮询、中断两种方式来获取;采用中断模式的话,转换时间受中断历程的返回时间以及数据的读取时间影响而延迟。采用轮询方式,只要访问状态寄存器TSADCCONn, 即可知道是否转换完成。转换完成以后读取TSDATXn、TSDATYn两个寄存器的值即可。 5:s5pv210的10个ADC引脚AIN[0]~AIN[9]分别对应XadcAIN[0]~XadcAIN[9]引脚 6:常用寄存器 TSADCCON0: bit16设置AD转换精度,10bit、12bit可选; bit15只读,状态寄存器,查看是否转换结束; bit14预分频器开关,设置为1; bit13:6分频倍率,如要设置3.3MHz,可设置为19,66/19+1=3.3,最大设置频率为5MHz,所以此位最小值为:13 bit2设置为普通模式即可 bit1是否开启read star模式,read star模式意思是只要读取AD转换后的寄存器数据,即重新开始AD转换,使用这种模式第一次读数据要丢掉; bit0开启AD转换,如果设置了read star模式,此位无效; TSCONn:touch screen控制寄存器。 TSDATXn:数据寄存器 bit14查看输出数据位ADC 还是TOUCH SCREEN bit11:0为转换后的数据 TSDATYn:数据寄存器 bit14查看输出数据位ADC 还是TOUCH SCREEN bit11:0为转换后的数据 CLRINADCn:清中断写入任意一个值就可以;ADC Interrupt Clear Register ADMUX寄存器 7:编程 #define TSADCCON0 0xE1700000 #define TSCON0 0xE1700004 #define TSDATX0 0xE170000C #define TSDATY0 0xE1700010 #define CLRINTADC0 0xE1700018 #define ADCMUX 0xE170001C #define _REG_TSADCCON0 *(unsigned int*)0xE1700000 #define _REG_TSCON0 *(unsigned int*)0xE1700004 #define _REG_TSDATX0 *(unsigned int*)0xE170000C #define _REG_TSDATY0 *(unsigned int*)0xE1700010 #define _REG_CLRINTADC0 *(unsigned int*)0xE1700018 #define _REG_ADCMUX *(unsigned int*)0xE170001C static void adc_init(void) { _REG_TSADCCON0 |= (1 << 16); //设置精度为12bit _REG_TSADCCON0 |= (1 << 14); //使能presaler _REG_TSADCCON0 &= ~(0xFF << 6); //设置时钟 _REG_TSADCCON0 |= (65 << 6); _REG_TSADCCON0 &= ~(1 << 2); //standby为normal模式 _REG_TSADCCON0 &= ~(1 << 1); //read_start disable _REG_ADCMUX &= ~(0xF << 0); //设置mux开关为ACD1 } static void delay_1(void){ volatile int x, y; for(x=0; x<5000; x++) { for(y=0; y<1000; y++) ; } } void adc_test(void) { unsigned int valx, valy; adc_init(); while(1) { //开始ADC转换 _REG_TSADCCON0 |= (1 << 0); //读取状态位,是否转换完毕,如果bit15位0的话,一直读取 while (!(_REG_TSADCCON0 & (1 << 15))) { 0; } //读取ADC转换后的数据 valx = _REG_TSDATX0; valy = _REG_TSDATY0; printf('x:bit14 = %dn', (valx & (1 << 14))); printf('x:bit11-0 = %dn', (valx & (0xFFF << 0))); printf('y:bit14 = %dn', (valy & (1 << 14))); printf('y:bit11-0 = %dn', (valy & (0xFFF << 0))); delay_1(); } }
(2) SAR首先产生8位数字量的一半,即10000000B,试探模拟量的Vi大小,若Vo>Vi,“控制电路”清除最高位,若Vo










上一篇:arm汇编伪指令详解
下一篇:S5PV210 | S5PV210 概述
- 热门资源推荐
- 热门放大器推荐
- LDK120M12R 1.2V低压降稳压器典型应用(可调版)电路
- EVB-UTC2000-DFP、EVK-UTC2000 评估套件基于 UTC2000 USB 3.0/2.0 Type-A,即插即用 Type-C DFP
- LTC3219 演示板、250mA 通用九通道 LED 驱动器
- DC919A-D,LTC2204 CMOS 输出演示板,直流输入,40Msps 16 位 ADC,DC
- AD8618ARZ-REEL 二阶低通滤波器运算放大器的典型应用电路
- 使用 NXP Semiconductors 的 PCA9511A 的参考设计
- LT3091MPDE 恒流恒压实验室电源的典型应用
- ADR392B 4.096 Vout 微功率、低噪声精密电压基准的典型应用
- LT3470HDDB 5V 降压转换器的典型应用电路
- 使用 Diodes Incorporated 的 AZ7042ZTR-E1 的参考设计

非常经典的关于LLC的杨波博士论文
MB47082PS

XC6406PP60DL






京公网安备 11010802033920号