嵌入式Linux裸机开发(十四)——ADC
2019-07-12 22:39发布
生成海报
嵌入式Linux裸机开发(十四)——ADC
一、AD转换简介
AD转换就是模数转换,就是把模拟信号转换成数字信号。A/D转换器是用来通过一定的电路将模拟量转变为数字量。模拟量可以是电压、电流等电信号,也可以是压力、温度、湿度、位移、声音等非电信号。在A/D转换前,输入到A/D转换器的输入信号必须经各种传感器把各种物理量转换成电压信号。A/D转换后,输出的数字信号可以有8位、10位、12位、14位和16位等。二、ADC控制器
ADC控制器时钟:
时钟源为PCLK_PSYS,经过一次分频后得到ADCCLK。S5PV210支持10个ADC通道,AIN[0]-AIN[9](模拟类型),可以支持同时做10路AD转换。TSADCCON0:ADC转换器设置寄存器TSDATX0:转换得到的数字量CLRINTADC0:清除ADC0通道中断ADCMUX:模拟输入通道选择三、ADC编程
1、初始化控制器
void adc_init(void){TSADCCON0 |= (1<<16); //设置12位精度TSADCCON0 |= (1<<14); //打开ADC转换器的预分频设置TSADCCON0 &= ~(0xFF<<6);//TSADCCON0 |= (65<<6);//设置预分频参数,预分频系数为65+1TSADCCON0 &= ~(1<<2);//设置正常模式TSADCCON0 &= ~(1<<1);//开启ADCADCMUX &= ~(0x0F<<0); //选择通道0}2、工程实现
工程源码以UART移植printf为模本,但Smart210不带ADC接口,所以无法测试代码。ADC转换源码:void adc_printf(void){int val;adc_init();while(1){//开启ADC转换TSADCCON0 |= (1<<0);//等待AD转换完毕while(!(TSADCCON0 & (1<<15)));//读取ADC转换的数字val = TSDATX0;//处理显示printf("val = %d
", (val & (0xFFF<<0)));//延时delay(0x1FFFFF);}}工程源码见附件本文出自 “
生命不息,奋斗不止” 博客,请务必保留此出处
http://9291927.blog.51cto.com/9281927/1787883
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮