注意
- 芯片型號:TMS320F28335
- 適用於NJUSTEO李彧晟老師課程
- 參考資料:《TMS320F28335 DSP原理、開發及應用》
- 對應PPT第二章98頁
- 本章內容較多而且較爲重要,請結合PPT一起復習
1 概述
- 具有雙採樣保持器的12位轉換內核;
- 同步採樣模式或順序採樣模式;
- 模擬輸入電壓範圍0~3V
- 快速採樣功能,最高6.25MSPS;
- 16通道輸入,多路時分複用;
- 自動定序功能,在一個採樣序列內支持16次“自動轉換”;
- 序列發生器可配置成兩個獨立8通道或者一個16通道;
- 有多種觸發源啓動模數轉換;
- 靈活的中斷控制;
- 16個採樣通道採用分時複用模式進行採樣
- 序列發生器決定採樣對象,是一個存儲地址的寄存器
- S/H-A和S/H-B是兩個採樣保持器
2 序列發生器工作模式
- 無論是級聯工作模式還是雙序列工作模式,其本質都是通過設定通道的讀取順序來進行通道的讀取選擇。
2.1 級聯序列工作模式
- 一個16通道序列發生器
2.2 雙序列工作模式
- 兩個8通道序列發生器
3 ADC工作模式
ADC還可以工作於同時採樣模式或順序採樣模式。對於每個轉換(或同時採樣模式下的轉換對),當前的CONVxx位字段定義要採樣和轉換的引腳(或一對引腳)。
在順序採樣模式下,CONVxx的所有四個位定義輸入引腳。 最高位定義了輸入引腳與哪個採樣保持緩衝器相關聯,而低3位定義了偏移量。例如,如果CONVxx=0101b,則ADCINA5是所選的輸入引腳。如果它=1011b,則ADCINB3爲選定的輸入引腳。
在同時採樣模式下,CONVxx寄存器的最高位被丟棄。每個採樣和保持緩衝器都採樣由CONVxx寄存器的低3位提供的偏移量給定的相關引腳。例如,如果CONVxx寄存器包含值0110b,則ADCINA6由S / H-A採樣,而ADCINB6由S / H-B採樣。如果值爲1001b,則ADCINA1由S / H-A採樣,ADCINB1由S / H-B採樣。首先轉換S / H-A中的電壓,然後轉換S / H-B電壓。 S / H-A轉換的結果放置在當前的ADCRESULTn寄存器中(假定定序器已復位,則爲SEQ1的ADCRESULT0)。 S / H-B轉換的結果放置在下一個ADCRESULTn寄存器中(假定定序器已復位,則爲SEQ1的ADCRESULT1)。然後將結果寄存器指針加2(假設序列器最初已復位,則指向SEQ1的ADCRESULT2)。
3.1 順序採樣模式
- 由4位CONV來決定輸入通道的採樣
3.2 同步採樣模式
- 由4位CONV的低3位來決定輸入通道的採樣
4 中斷控制
- 2種中斷控制:
Case1:每次SEQ序列結束產生中斷;
Case2:間隔一次SEQ序列結束產生中斷。
忽略Case3
5 ADC採樣結果的轉換
- 其中Vin爲輸入電壓,ADCLO爲基準電壓
- 參考電壓⼀般是0V,也可以通過寄存器更改
輸入電壓超過[0,3]範圍時如何處理?
- 例如: -1.5 V < Vin < +1.5 V
- 使用運放電路
Vadcinx = Vin + 1.5
注意ADCLO是參考電壓 - 把結果減去偏移值,這裏是1.5V
#include “DSP2833x_Device.h”
#define offset 0x07FF
void main(void)
{
int16 value; // signed
value = AdcMirror.ADCRESULT0 – offset;
}
6 ADC時鐘配置
7 ADC基準電壓
- 默認情況下選擇片內參考電壓作爲ADC轉換的基準電壓
- 也可使用外部參考電壓
- 可選2.048 V, 1.5 V,1.024 V,由ADCREFSEL寄存器控制
- 但輸入引腳的電壓仍不可超過0 - 3 V
8 ADC相關寄存器
8.1 ADC控制寄存器1(ADCTRL1)
Bit(s) | Name | value | Description |
---|---|---|---|
14 | RESET | 0,1 | ADC模塊的復位, 0:無反應;1:復位整個ADC模塊 |
13-12 | SUSMOD | 仿真掛起模式控制位 00:仿真掛起被忽略 01:當前序列結束後鎖存結果 10:當前轉換結束後鎖存結果 11:序列發生器及迴繞邏輯電路立即停止工作 |
|
11-8 | ACQ_PS | 決定了SOC脈衝寬度, SOC脈衝寬度=(ACQ_PS[3:0]+1)×ADCCLK週期 |
|
7 | CPS | 0,1 | ADC內核時鐘預分頻位 0: ADCCLK = FCLK / 1 1: ADCCLK = FCLK / 2 |
6 | CONT_RUN | 0,1 | 連續運行模式: 0:啓動/停止模式 1:連續運行 |
5 | SEQ_OVRD | 0,1 | 序列發生器覆蓋功能 0:允許序列發生器在完成MAX_CONVn個轉換後迴繞 1:在序列發生器完成MAX_CONVn個轉換後發生覆蓋,只在序列發生器中的末端發生迴繞 |
4 | SEQ_CASC | 0,1 | 級聯模式控制位 0:序列發生器工作在雙序列發生器方式 1:序列發生器工作在級聯方式,SEQ爲16通道 |
8.2 ADC控制寄存器2(ADCTRL2)
8.3 ADC控制寄存器3
8.4 最大轉換通道配置寄存器(ADCMAXCONV)
- 定義每次觸發之後的轉換格式
- 根據序列發生器的工作方式(雙序列發生器方式、級聯序列發生器模式)的不同,MAX_CONVn有不同的定義:
- 對於SEQ1,MAX_CONV1[2:0]起作用;
- 對於SEQ2,MAX_CONV2[2:0]起作用;
- 對於SEQ,MAX_CONV1[3:0]起作用。
- 一個序列內所能完成的轉換次數爲MAX_CONVn+1次
8.5 輸入通道選擇寄存器(ADCCHSELSEQx)
- 這個寄存器是配置輸入通道的順序,一共有4個寄存器,每個寄存器又被分成了4段,每一段爲4位。
8.6 ADC結果寄存器(ADCRESULTx)
- 這個結果寄存器有連個,分別是 0x7108-0x7117和0x0B00~0x0B0F