日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

【ARM】AD转换器

發布時間:2023/12/13 综合教程 32 生活家
生活随笔 收集整理的這篇文章主要介紹了 【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转换器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。