-
模擬電路:模擬量
-
數字電路:數字量
-
模擬-》數字 ADC
ADC 4 CH 位數10bit/12bit
參考電壓 1.8
量程 0-1.8V
電位器 - XadcAIN3
電壓測量 -
ADC配置:
ADCCON
[16] = 1 12位ADC
[15] 只讀標誌, 1 表示轉換完成 0 正在轉換
[14] = 1 使能ADC
[13:6] = 26 預分頻值 F=133M 133M/ 26 5M
[2] = 0 使能ADC正常工作模式
[1] = 0 不使能讀轉換開始
[0] = 1 手動開始ADC轉換ADCDAT
[11:0] 數據寄存器 存放轉換結果ADCMUX
[3:0] = 3 ADC通道選擇寄存器
/*****************************************************************
* Copyright (C) 2019 Sangfor Ltd. All rights reserved.
* 文件名稱:adc.c
* 創 建 者:yinfei-hu
* 創建日期:2019-04-23 11:44:06
* 功能描述:*****************************************************************/#include"exynos_4412.h"void adc_init(void){
ADCCON |= 1<<16;//12bit ADC
ADCCON |= 1<<14;//使能 ADC
ADCCON = ADCCON & ~(0XFF<<6) | 26<<6; //分頻26+1
ADCCON &= ~(1<<2);//使能ADC爲正常工作模式
ADCCON &= ~(1<<1);//關閉自動讀轉換
ADCMUX = 3;//選擇通道3
}
- ADC使用:
1、配置ADC使其能夠正常工作
2、啓動轉換
3、等待轉換完成 讀取數據
4、計算輸入電壓
vx/v0 = a/n
Vx = a * V0 / n
unsigned int adc_get_data(void){
ADCCON |= 1;//啓動轉換
//等待轉換完成
while(!(ADCCON & (1<<15))); //輸出轉換結果
return ADCDAT & 0xfff;
}
data = adc_get_data();
printf("ADC=%u , ",data);
V =(unsigned int)(data*1800/4096);
printf("U=%u.%u V\r\n",V/1000,V%1000);
mysleep(1000);