8.9、ARM接口編程 -- ADC

  • 模擬電路:模擬量

  • 數字電路:數字量

  • 模擬-》數字 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);  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章