嵌入式Linux裸机开发(十四)——ADC
来源:互联网 发布:淘宝商城男装七分裤 编辑:程序博客网 时间:2024/06/05 02:27
嵌入式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+1
TSADCCON0 &= ~(1<<2);//设置正常模式
TSADCCON0 &= ~(1<<1);//开启ADC
ADCMUX &= ~(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\r\n", (val & (0xFFF<<0)));
//延时
delay(0x1FFFFF);
}
}
工程源码见附件
本文出自 “生命不息,奋斗不止” 博客,请务必保留此出处http://9291927.blog.51cto.com/9281927/1787883
- 嵌入式Linux裸机开发(十四)——ADC
- 嵌入式Linux裸机开发(一)——点亮Led
- 嵌入式Linux裸机开发(三)——BL0初始化
- 嵌入式Linux裸机开发(五)——SDRAM初始化
- 嵌入式Linux裸机开发(九)——S5PV210定时器
- 嵌入式Linux裸机开发(十一)——Nandflash
- 嵌入式Linux裸机开发(十二)——iNand简介
- 嵌入式Linux裸机开发(十三)——I2C通信
- 嵌入式Linux裸机开发(十五)——LCD
- 嵌入式Linux裸机开发(十六)——shell实现
- 嵌入式Linux裸机开发(二)——S5PV210启动过程分析
- 嵌入式Linux裸机开发(四)——重定位relocate
- 嵌入式Linux裸机开发(六)——S5PV210时钟系统
- 嵌入式Linux裸机开发(七)——UART串口通信
- 嵌入式Linux裸机开发(八)——S5PV210中断处理流程
- 嵌入式Linux裸机开发(十)——SD卡启动
- ARM裸机——FS2410操作ADC
- ARM裸机程序设计—ADC驱动程序设计
- 嵌入式Linux裸机开发(十)——SD卡启动
- option and derivative in C++
- 嵌入式Linux裸机开发(十一)——Nandflash
- 嵌入式Linux裸机开发(十二)——iNand简介
- 嵌入式Linux裸机开发(十三)——I2C通信
- 嵌入式Linux裸机开发(十四)——ADC
- Javascript_DOM编程艺术(上)
- 嵌入式Linux裸机开发(十五)——LCD
- 嵌入式Linux裸机开发(十六)——shell实现
- 嵌入式Linux C语言(二)——指针
- 嵌入式linux开发环境搭建(四)——Samba服务器的搭建
- 嵌入式linux开发环境搭建(五)——Ubuntu第三方软件仓库源
- 嵌入式Linux C语言(三)——指针与函数
- 嵌入式Linux C语言(四)——指针与数组