1. 程式人生 > >鬆翰微控制器--SN8F5702學習筆記(四)ADC

鬆翰微控制器--SN8F5702學習筆記(四)ADC

簡介

 模數轉換器(ADC)是SAR結構1,具有10個輸入源,最高4096階解析度,將模擬訊號傳輸到12位數字緩衝器。ADC建立在10通道輸入源中,以測量10種不同的模擬訊號源。ADC解析度為12位。ADC具有四個時鐘速率來決定ADC轉換速率。ADC參考電壓包括5個源。四個內部參考電源包括VDD,4V,3V和2V。另一個是來自AVREFH引腳的外部參考電壓輸入引腳。ADC在P1CON/PUCON暫存器中建立,以設定純模擬輸入引腳。ADC和ADS位設定後,ADC開始將模擬訊號轉換為數字資料。除了ADS位可以開始轉換模擬訊號外,PW1EN還具有轉換模擬訊號的ADC功能。ADC可以在空閒模式下工作。ADC執行後,如果中斷啟用,系統將從綠色模式喚醒到正常模式。
在這裡插入圖片描述

ADC的配置流程

在開始ADC轉換之前,必須完全設定這些配置,使用以下步驟配置ADC:

  • 1、選擇並啟用轉換開始ADC輸入通道。 (通過CHS [3:0]位和GCHS位)
  • 2、必須將ADC輸入通道的GPIO模式設定為輸入模式。 (通過PnM暫存器)
  • 3、必須禁止ADC輸入通道的內部上拉電阻。 (通過PnUR暫存器)
  • 4、必須設定ADC輸入通道的配置控制位。 (通過PnCON暫存器)
  • 5、選擇ADC高參考電壓。 (通過VREFH暫存器)
  • 6、選擇ADC時鐘速率。 (通過ADCKS [1:0]位)
  • 7、設定ADENB位後,ADC準備將模擬訊號轉換為數字資料。

在這裡插入圖片描述
所以配置流程變成程式碼就是:

void InitAD(void)
{
    // 設定通道
    ADM = 0x80;          // bit7置1使能ADC通道,低功耗模式下通過bit7置0來禁止ADC通道以降低功耗
    ADM |= 0x02;         // 低四位是ADC通道,P12、AIN2,具體參考ADC輸入通道
    
    // 設定時鐘頻率
    ADR = 0x40;
    ADR |= 0x00;         // 00 = fosc/16, 01 = fosc/8, 10 = fosc/1, 11 = fosc/2 
    // 設定參考電壓源
    VREFH = 0x00;
// bit內部參考電壓 VREFH |= 0x02; // 內部參考電壓4V // 輸入引腳配置 P1CON |= 0x0c; // P2CON |= 0; }

開始轉換

 當ADENB位使能ADC IP時,需要通過程式進行ADC啟動。除ADS位可以開始轉換模擬訊號外,PW1EN還具有轉換模擬訊號ADC功能。轉換可以通過以下方式之一啟動:

● 向暫存器ADM的ADS位寫入1
● 當ADPWS位為“1”時,PWM1使能。

 在設定ADENB和ADS位後,ADC開始將模擬訊號轉換為數字資料。轉換完成後,ADS位復位為邏輯0.當轉換完成時,ADC電路將EOC和ADCF位設定為“1”,數字資料輸出設定為ADB和ADR暫存器。如果ADC中斷功能使能(EADC = 1),ADC轉換後,當ADCF為“1”時,ADC中斷請求發生並執行中斷服務程式。在中斷過程中需要通過程式清除ADCF。
注意,當ADPWS位為“1”時,如果將PWM使能觸發用作轉換源,則ADC將持續轉換,直到禁用PWM。

ADC輸入通道

 ADC內建10通道輸入源(AIN0 - AIN9),用於測量由CHS [3:0]和GCHS位控制的10個不同模擬訊號源.AIN1為內部2V或3V或4V輸入通道。外面沒有任何輸入引腳。此時ADC參考電壓必須是內部VDD和外部電壓,而不是內部2V或3V或4V。 AIN10可以成為電池系統的良好電池檢測器。為了選擇合適的內部AVREFH電平並比較值,系統內建了一個高效能,低成本的低電池檢測器。

ADC輸入通道:
在這裡插入圖片描述

以下為ADC外設的電氣特性表:

在這裡插入圖片描述
 由上表可以看到,參考電壓的使用,比如在 Viref 選擇 內部2V參考電壓、VDD為5V時,參考電壓有正負0.04V的電壓漂移。


  1. 逐次逼近暫存器型(SAR)模擬數字轉換器(ADC)是取樣速率低於5Msps (每秒百萬次取樣)的中等至高解析度應用的常見結構。SAR ADC的解析度一般為8位至16位,具有低功耗、小尺寸等特點。這些特點使該型別ADC具有很寬的應用範圍,例如便攜/電池供電儀表、筆輸入量化器、工業控制和資料/訊號採集等。 ↩︎