【ARM】AD转换器
生活随笔
收集整理的這篇文章主要介紹了
【ARM】AD转换器
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
A/D轉換器
A/D轉換器,又稱模/數轉換器,顧名思義,就是把模擬信號數字化。
由于系統的實際處理對象往往都是一些模擬量(如溫度、壓力、位移、圖像等),要使計算機或數字儀表能識別和處理這些信號,必須首先將這些模擬信號轉換成數字信號,這就必須用到A/D轉換器。
A/D轉換器的一般步驟
模擬信號進行A/D轉換的時候,從啟動轉換到轉換結束輸出數字量,需要一定的轉換時間,在這個轉換時間內,模擬信號要基本保持不變。否則轉換精度沒有保證,特別當輸入信號頻率較高時,會贊成很大的轉換誤差。要防止這種誤差的產生,必須在A/D轉換開始時將輸入信號的電平保持住,而在A/D轉換結束后,又能跟蹤輸入信號的變化。因此,一般的A/D轉換過程是通過取樣、保持、量化和編碼這4個步驟完成的。一般取樣和保持主要由采樣保持器來完成,而量化編碼就由A/D轉換器完成。
實例
1 //main.c
2
3 #include "2410lib.h"
4
5 externvoid adc_test(void);
6
7 int main(int argc,char **argv)
8
9 {
10
11 sys_init(); // Initial s3c2410's Clock, MMU, Interrupt,Port and UART
12
13 uart_printf("
Embest S3CEB2410 Evaluation Board
");
14
15 while(1)
16
17 {
18
19 adc_test();
20
21 }
22
23 }
24
25 //adc.c
26
27 #include "2410lib.h"
28
29 #define REQCNT 100
30
31 #define ADC_FREQ 2500000
32
33 #define LOOP 10000
34
35 volatile UINT8T unPreScaler;
36
37 volatilechar nEndTest;
38
39 void adc_test(void)
40
41 {
42
43 int j;
44
45 UINT16T usConData;
46
47 float usEndData;
48
49 uart_printf("
Adc Conversion Test Example
");
50
51 uart_printf(" ADC_IN Test,channel 2
");
52
53 uart_printf(" ADC conv. freq. = %dHz
",ADC_FREQ);
54
55 unPreScaler = PCLK/ADC_FREQ -1;
56
57 rADCCON=(1<<14)|(unPreScaler<<6)|(2<<3)|(0<<2)|(1<<1);//enable prescaler,ain2,normal,start by read
58
59 uart_printf(" Please adjust AIN2 value!
");
60
61 uart_printf(" The results of ADC are:
");
62
63 usConData=rADCDAT0&0x3FF;
64
65 for(j=0;j<20;j++) // sample and show data both by UART and leds
66
67 {
68
69 while(!(rADCCON & 0x8000));
70
71 usConData=rADCDAT0&0x3FF;
72
73 usEndData=usConData*3.3000/0x3FF;
74
75 uart_printf(" %0.4f ",usEndData);
76
77 delay(10000);
78
79 }
80
81 uart_printf(" end.
");
82
83 }
84
85 //sys_init.c主要代碼
86
87 void sys_init()
88
89 {
90
91 change_clock_divider(1,1); // 1:2:4
92
93 change_value_MPLL(M_MDIV,M_PDIV,M_SDIV); // Fin=12MHz FCLK=202.8MHz
94
95 delay(0); // adjust the delay count
96
97 port_init();
98
99 beep(1);
100
101 interrupts_init();
102
103 uart_init(PCLK, 115200, UART0);
104
105 uart_init(PCLK, 115200, UART1);
106
107 #ifdef CLK124_200M
108
109 change_value_MPLL(88,1,1); // Fin=12MHz FCLK=192MHz
110
111 uart_init(192000000/4, 115200, UART0);
112
113 uart_init(192000000/4, 115200, UART1);
114
115 #endif
116
117 uart_select(UART0);
118
119 uart_printf ("
boot success...
");
120
121 delay(500);
122
123 beep(0);
124
125 }//sys_init
View Code
總結
以上是生活随笔為你收集整理的【ARM】AD转换器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 大数据项目开发案例_大数据分析技术——项
- 下一篇: Office 各版本批量授权(VOL)和