LPC2103之Analog-to-Digital Converter
Features
LPC2103的ADC特性:
1.10bit逐次逼近型模數(shù)轉換器
2.低功耗模式
3.測量范圍0V—VDD(3.3V)(通常為3V,不超過VDDA)
4.10bit轉換時間> 2.44us
5.單輸入或多輸入突發(fā)轉換模式
6.每路模數(shù)通道有專用的結果寄存器
Description
APB時鐘為A/D轉換基本時鐘。轉換器中包括可編程分頻時鐘,逐次逼近處理所需的時鐘最大能達到4.5MHz,徹底準確的轉換需要11個這樣的時鐘周期。
Pin description
| Pin | Type | Description |
| AD0.7:0 | Input | 模擬輸入端口。 |
| VDD(3V3) | Reference | 參考電壓 |
| VDDA,VSSA | Power | 模擬電壓和地 |
Register description
//模數(shù)控制寄存器
#define AD0CR(*((volatile unsigned long *) 0xE0034000))
A/D轉換發(fā)生前,必須設置ADCR寄存器選擇操作模式。復位值為0x00000001。可讀可寫寄存器。
| 位 | 信號 | 功能 |
| 7:0 | SEL | 選擇AD0.7:0管腳哪一路進行采樣和轉換。8bit數(shù)據(jù)分別對應8路A/D輸入管腳,有且只有一位可以寫1。寫0x00默認為0x01。 |
| 15:8 | CLKDIV | APB時鐘(PCLK)的分頻系數(shù)。必須使得A/D轉換時鐘小等于4.5MHz。 |
| 16 | BURST | 1——突發(fā)模式,轉換時間和轉換精度由CLKS決定 0——正常模式,11clock/10bits |
| 19:17 | CLKS | 突發(fā)(BURST)模式下轉換時鐘周期選擇(轉換時間和轉換精度的取舍)。 000——11clock/10bits 001——10clock/9bits 010——9clock/8bits 011——8clock/7bits 100——7clock/6bits 101——6clock/5bits 110——5clock/4bits 111——4clock/3bits |
| 20 | 保留 | |
| 21 | PDN | 1——A/D轉換可操作 0——A/D轉換工作于低功耗模式 |
| 23:22 | 保留 | |
| 26:24 | START | 當BURST位為0時,以下設置控制是否以及何時A/D轉換開始。 000——不啟動(該值應該使用于PDN=0時) 001——立刻啟動 010——Start conversion when the edge selected by bit 27 occurs on P0.16/EINT0/MAT0.2 pin. 011——Start conversion when the edge selected by bit 27 occurs on P0.22. 100——Start conversion when the edge selected by bit 27 occurs on MAT0.1. 101——Start conversion when the edge selected by bit 27 occurs on MAT0.3. 110——Start conversion when the edge selected by bit 27 occurs on MAT1.0. 111——Start conversion when the edge selected by bit 27 occurs on MAT1.1. |
| 27 | EDGE | 此位的設置僅在START選擇了010-111時 1——Start conversion on a falling edge on the selected CAP/MAT signal. 0——Start conversion on a rising edge on the selected CAP/MAT signal. |
| 31:28 | 保留 |
//模數(shù)全局數(shù)據(jù)寄存器
#define AD0GDR(*((volatile unsigned long *) 0xE0034004))
可讀可寫寄存器。該寄存器包括了ADC的DONE位和最近的A/D轉換結果。
| 位 | 信號 | 功能 |
| 5:0 | 保留 | |
| 15:6 | RESULT | 轉換結果 |
| 23:16 | 保留 | |
| 26:24 | CHN | 該位包含了RESULT位所轉換的通道。 |
| 29:27 | 保留 | |
| 30 | OVERUN | 溢出標志位 |
| 31 | DONE | A/D轉換完成該位置1,讀該位和寫ADCR時該位清除。當寫ADCR時轉換正在進行中,該位置1并且開始新的轉換。 |
//模數(shù)狀態(tài)寄存器
#define AD0STAT(*((volatile unsigned long *) 0xE0034030))
只讀寄存器。該寄存器包括了所有A/D通道的DONE和OVERRUN標志位,也包括了A/D中斷標志。
| 位 | 信號 | 功能 |
| 0 | DONE0 | 該位反映了結果寄存器中A/D通道0的DONE狀態(tài)。 |
| 1 | DONE1 | 該位反映了結果寄存器中A/D通道1的DONE狀態(tài)。 |
| 2 | DONE2 | 該位反映了結果寄存器中A/D通道2的DONE狀態(tài)。 |
| 3 | DONE3 | 該位反映了結果寄存器中A/D通道3的DONE狀態(tài)。 |
| 4 | DONE4 | 該位反映了結果寄存器中A/D通道4的DONE狀態(tài)。 |
| 5 | DONE5 | 該位反映了結果寄存器中A/D通道5的DONE狀態(tài)。 |
| 6 | DONE6 | 該位反映了結果寄存器中A/D通道6的DONE狀態(tài)。 |
| 7 | DONE7 | 該位反映了結果寄存器中A/D通道7的DONE狀態(tài)。 |
| 8 | OVERRUN0 | 該位反映了結果寄存器中A/D通道0的OVERRUN狀態(tài)。 |
| 9 | OVERRUN1 | 該位反映了結果寄存器中A/D通道1的OVERRUN狀態(tài)。 |
| 10 | OVERRUN2 | 該位反映了結果寄存器中A/D通道2的OVERRUN狀態(tài)。 |
| 11 | OVERRUN3 | 該位反映了結果寄存器中A/D通道3的OVERRUN狀態(tài)。 |
| 12 | OVERRUN4 | 該位反映了結果寄存器中A/D通道4的OVERRUN狀態(tài)。 |
| 13 | OVERRUN5 | 該位反映了結果寄存器中A/D通道5的OVERRUN狀態(tài)。 |
| 14 | OVERRUN6 | 該位反映了結果寄存器中A/D通道6的OVERRUN狀態(tài)。 |
| 15 | OVERRUN7 | 該位反映了結果寄存器中A/D通道7的OVERRUN狀態(tài)。 |
| 16 | ADINT | A/D中斷標志位。當任何A/D DONE標志位置位時該位置位,并且影響ADINTEN寄存器的A/D中斷。 |
| 31:17 | 保留 |
//模數(shù)中斷使能寄存器
#define AD0INTEN(*((volatile unsigned long *) 0xE003400C))
該寄存器控制A/D轉換完成是否產生一個中斷。
| 位 | 信號 | 功能 |
| 0 | ADINTEN0 | 1——A/D通道0轉換完成產生中斷 0——A/D通道0轉換完成不產生中斷 |
| 1 | ADINTEN 1 | 1——A/D通道1轉換完成產生中斷 0——A/D通道1轉換完成不產生中斷 |
| 2 | ADINTEN 2 | 1——A/D通道2轉換完成產生中斷 0——A/D通道2轉換完成不產生中斷 |
| 3 | ADINTEN 3 | 1——A/D通道3轉換完成產生中斷 0——A/D通道3轉換完成不產生中斷 |
| 4 | ADINTEN 4 | 1——A/D通道4轉換完成產生中斷 0——A/D通道4轉換完成不產生中斷 |
| 5 | ADINTEN 5 | 1——A/D通道5轉換完成產生中斷 0——A/D通道5轉換完成不產生中斷 |
| 6 | ADINTEN 6 | 1——A/D通道6轉換完成產生中斷 0——A/D通道6轉換完成不產生中斷 |
| 7 | ADINTEN 7 | 1——A/D通道7轉換完成產生中斷 0——A/D通道7轉換完成不產生中斷 |
| 8 | ADINTEN | 1——只要ADINTEN7:0使能就可以產生中斷 0——只有ADDR中的全局DONE標志位使能才產生中斷 |
| 31:9 | 保留 |
//模數(shù)通道0/1/2/3/4/5/6/7數(shù)據(jù)寄存器
//模數(shù)通道0數(shù)據(jù)寄存器
#define AD0DR0(*((volatile unsigned long *) 0xE0034010))
//模數(shù)通道1數(shù)據(jù)寄存器
#define AD0DR1(*((volatile unsigned long *) 0xE0034014))
//模數(shù)通道2數(shù)據(jù)寄存器
#define AD0DR2(*((volatile unsigned long *) 0xE0034018))
//模數(shù)通道3數(shù)據(jù)寄存器
#define AD0DR3(*((volatile unsigned long *) 0xE003401C))
//模數(shù)通道4數(shù)據(jù)寄存器
#define AD0DR4(*((volatile unsigned long *) 0xE0034020))
//模數(shù)通道5數(shù)據(jù)寄存器
#define AD0DR5(*((volatile unsigned long *) 0xE0034024))
//模數(shù)通道6數(shù)據(jù)寄存器
#define AD 0DR6(*((volatile unsigned long *) 0xE0034028))
//模數(shù)通道7數(shù)據(jù)寄存器
#define AD0DR7(*((volatile unsigned long *) 0xE003402C))
只讀存儲器。
| 位 | 信號 | 功能 |
| 5:0 | 保留 | |
| 15:6 | RESULT | 轉換結果。 |
| 29:16 | 保留 | |
| 30 | OVERRUN | 溢出標志位。 |
| 31 | DONE | 完成標志位,讀該寄存器清除該位 |


評論