adc.c
来自「本代码是基于三星2410的嵌入式开发实验程序代码,包括:ADC,CS8900A,」· C语言 代码 · 共 35 行
C
35 行
#include "2410addr.h"
#include "def.h"
#define ADC_FREQ 2500000
volatile U32 preScaler;
int ReadAdc(int ch){
rADCCON = (1<<14)|(preScaler<<6)|((ch&0x7)<<3); //setup channel
rADCCON |= 0x1; //start ADC
while (rADCCON & 0x1); //check if Enable_start is low
while (!(rADCCON & 0x8000)); //check if EC(End of Conversion) flag is high
return ( (int)rADCDAT0 & 0x3ff );
}
void Main(void){
int Val, i;
ChangeClockDivider(1,1); // 1:2:4
ChangeMPllValue(0xa1,0x3,0x1); // FCLK=202.8MHz
Port_Init();
Uart_Init(0,115200);
Uart_Select(0);
Delay(0); // calibrate Delay()
Uart_Printf("\nAN2410SSB ADC test\n");
preScaler = ADC_FREQ;
Uart_Printf("ADC conv. freq. = %dHz\n",preScaler);
preScaler = PCLK/ADC_FREQ -1; //PCLK:50.7MHz
Uart_Printf("PCLK/ADC_FREQ - 1 = %d\n",preScaler);
while (1){
for (Val = 0,i = 0; i < 10; i++)
Val += ReadAdc(0);
Uart_Printf("AIN0 is %d mV\n",Val*330/1024);
Delay(10000);
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?