9299.net
大学生考试网 让学习变简单
当前位置:首页 >> >>

第7章 ADC(_图文

第7章 ADC(_图文

DSP 原理及应用 DSP原理及应用
第七章 模数转换器(ADC)

DSPLAB

ADC模块

模数转换器
传 感 器
Analog→Digital 非电量 电压 电流 模拟信号 采样序列

模拟 信号 调理

ADC

数字 系统 数字量

模拟量
序号 1 2 3 4 5 …
合肥工业大学电气与自动化工程学院DSP实验室

数字信号 000001001101b 000001010000b 000011010100b 000100101111b 001001101001b ……
2015-05-

ADC模块

模数转换器
? 转换位数? ? 模拟通道数?能否同步采样? ? 最高采样速率? ? 并口?串口?

合肥工业大学电气与自动化工程学院DSP实验室

2015-05-

ADC模块

ADC结构框图

合肥工业大学电气与自动化工程学院DSP实验室

2015-05-

ADC模块

ADC模块的特点
? ? ?

单个ADC核,12位分辨率,内置双S/H电路 最快采样速率为12.5MSPS(工作在25MHz时钟) 16个模拟输入通道(0-3V),多路选通输入 --->(8个通道+多路复用器+1个S/H电路)×2组

? ?

两种采样模式:同步、顺序 通道的转换顺序可由自动排序器决定,一次可执行16个通 道的自动转换,每次转换亦可编程选择任何通道 两个独立的8通道排序器:双排序模式、级联单模式

?

合肥工业大学电气与自动化工程学院DSP实验室

2015-05-

ADC模块

ADC模块的特点
? ?

16个独立的转换结果寄存器,可单独访问 多个SOC(start-of-conversion)触发源:软件直接启动、 EVA/B事件触发、外部引脚触发 中断触发模式:每次EOS(排序转换结束)、每两次EOS 转换模式:启动/停止模式、连续转换模式 S/H事件窗可独立控制

? ? ?

Input Analog Voltage - ADCLO Digital=4095 ? 3
(ADCLO  模拟输入信号地)
合肥工业大学电气与自动化工程学院DSP实验室 2015-05-

Analog-to-Digital Converter Registers
Register ADCTRL1 ADCTRL2 Address Description 0x007100 ADC Control Register 1 0x007101 ADC Control Register 2

ADCMAXCONV 0x007102 ADC Maximum Conversion Channels Register ADCCHSELSEQ1 0x007103 ADC Channel Select Sequencing Control Register 1 ADCCHSELSEQ2 0x007104 ADC Channel Select Sequencing Control Register 2 ADCCHSELSEQ3 0x007105 ADC Channel Select Sequencing Control Register 3 ADCCHSELSEQ4 0x007106 ADC Channel Select Sequencing Control Register 4 ADCASEQSR ADCRESULT0 ADCRESULT1 ADCRESULT2 0x007107 ADC Auto sequence Status Register 0x007108 ADC Conversion Result Buffer Register 0 0x007109 ADC Conversion Result Buffer Register 1 0x00710A ADC Conversion Result Buffer Register 2

: :

: :

:

:

:

:

:

ADCRESULT14 ADCRESULT15 ADCTRL3 ADCST

0x007116 ADC Conversion Result Buffer Register 14 0x007117 ADC Conversion Result Buffer Register 15 0x007118 ADC Control Register 3 0x007119 ADC Status and Flag Register
6-7

ADC Control Register 1 - Upper Byte
ADCTRL1 @ 0x007100

ADC复位
ADC Module Reset
0 = no effect 1 = reset (set back to 0 by ADC logic)

采样时间窗宽度。 这几位控制SOC脉冲的宽度。
Acquisition Time Prescale (S/H)
Value = (binary+1) * Time dependent on the “Conversion Clock Prescale” bit (Bit 7 “CPS”)
12 11 10 9 8

15 reserved

14 RESET

13

SUSMOD1 SUSMOD0 ACQ_PS3 ACQ_PS2 ACQ_PS1 ACQ_PS0

Emulation Suspend Mode
00 = [Mode 0] free run (do not stop) 01 = [Mode 1] stop after current sequence 10 = [Mode 2] stop after current conversion 11 = [Mode 3] stop immediately

仿真悬挂模式
6-8

ADC Control Register 1 - Lower Byte
连续运行位, 决定排序器工作在连续转换模式还是启动-停止模式 Continuous Run Sequencer Mode
0 = stops after reaching end of sequence 1 = continuous (starts all over again from “initial state”) 0 = dual mode 1 = cascaded mode

ADCTRL1 @ 0x007100

排序器模式

7 CPS

6 CONT_RUN

5

4

3

2

1

0

SEQ1_OVRD SEQ_CASC reserved reserved reserved reserved

Conversion Prescale
0 = CLK / 1 1 = CLK / 2

Sequencer Override (continuous run mode)

排序器覆盖

0 = sequencer pointer resets to “initial state” at end of MAX_CONVn ADC内核时钟预定标器。 1 = sequencer pointer resets to “initial state” 对外设高速时钟的分频 after “end state”
6-9

ADCTRL2 @ 0x007101 级联排序器模式下EVA启动转换使能位 事件管理器A对排序器1的启动转换使能位 EVB SOC EVA SOC (cascaded mode only) SEQ1 Mask Bit
0 = no action 1 = start by EVB 排序器1的启动转换触发 Start Conversion (SEQ1) signal 0 = clear pending SOC trigger 1 = software trigger-start SEQ1
15 14 13 12

ADC Control Register 2 - Upper Byte

0 = cannot be started by EVA trigger 1 = can be started by EVA trigger

11

10

9 reserved

8 EVA_SOC_ SEQ1

EVB_SOC RST_SEQ1 SOC_SEQ1 reserved _SEQ

INT_ENA_ INT_MOD SEQ1 _SEQ1

Reset SEQ1
0 = no action 1 = immediate reset SEQ1 to “initial state”

Interrupt Enable (SEQ1)
0 = interrupt disable 1 = interrupt enable

Interrupt Mode (SEQ1)
0 = interrupt every EOS 1 = interrupt every other EOS

复位排序器1

排序器1的中断使能位

排序器1的中断模式位

6 - 10

ADCTRL2 @ 0x0071012 排序器1的外部信号启动转换位 事件管理器B对排序器2的启动转换使能位 External SOC (SEQ1) EVB SOC 0 = no action SEQ2 Mask bit
1 = start by signal from ADCSOC pin

ADC Control Register 2 - Lower Byte

排序器2的启动转换触发 Start Conversion (SEQ2)
(dual-sequencer mode only)

0 = clear pending SOC trigger 1 = software trigger-start SEQ2
7 6 5 4 3 2 INT_ENA_ INT_MOD SEQ2 _SEQ2

0 = cannot be started by EVB trigger 1 = can be started by EVB trigger

1 reserved

0 EVB_SOC_ SEQ2

EXT_SOC RST_SEQ2 SOC_SEQ2 reserved _SEQ1

Reset SEQ2
0 = no action 1 = immediate reset SEQ2 to “initial state”

Interrupt Enable (SEQ2)
0 = interrupt disable 1 = interrupt enable

排序器2中断模式位

Interrupt Mode (SEQ2)
0 = interrupt every EOS 1 = interrupt every other EOS
6 - 11

排序器2中断使能位

复位排序器

ADC Control Register 3
ADCTRL3 @ 0x007118 ADC Bandgap Power Down ADC Reference Power Down
0 = powered down 1 = powered up

ADC Power Down (except Bandgap & Ref.)

0 = powered down 0 = powered down 1 = powered up 1 = powered up

15 - 8 reserved 4 3

7 ADCRFDN 2

6 ADCBGND 1

5 ADCPWDN 0

ADCCLKPS3 ADCCLKPS2 ADCCLKPS1 ADCCLKPS0 SMODE_SEL

ADC内核时钟分配器 ADC Clock Prescale

Sampling Mode Select
0 = sequential sampling mode 1 = simultaneous sampling mode
6 - 12

采样模式选择 顺序采样,同步采样

Maximum Conversion Channels Register
ADCMAXCONV @ 0x007102

最大转换通道寄存器
? Bit fields define the maximum number of auto conversions (binary+1) 决定本次采样排序所要进行采样的通道总数 Cascaded Mode

reserved

MAX_ MAX_ MAX_ MAX_ MAX_ MAX_ MAX_ CONV 2_2 CONV 2_1 CONV 2_0 CONV 1_3 CONV 1_2 CONV 1_1 CONV 1_0

SEQ2

Dual Mode

SEQ1

? Auto conversion session always starts with the “initial state” and continues sequentially until the “end state”, if allowed Initial state End state SEQ1 CONV00 CONV07 SEQ2 CONV08 CONV15 Cascaded CONV00 CONV15
6 - 13

ADC Input Channel Select Sequencing Control Register
ADC输入通道选择排序控制寄存器
Bits 15-12
0x007103 0x007104 0x007105 0x007106

Bits 11-8

Bits 7-4

Bits 3-0

CONV03 CONV07 CONV11 CONV15

CONV02 CONV06 CONV10 CONV14

CONV01 CONV05 CONV09 CONV13

CONV00 CONV04 CONV08 CONV12

ADCCHSELSEQ1 ADCCHSELSEQ2 ADCCHSELSEQ3 ADCCHSELSEQ4

通过编程选择在某一时刻 是哪个通道被选通进行采样

6 - 14

ADC模块

ADC转换模式
? 排序方式
? 独立双排序——两个8通道排序器SEQ1、SEQ2独立工作; ? 级联单排序——SEQ1与SEQ2级联为单个16通道排序器SEQ。

? 采样模式
? 顺序采样——按排序器顺序对模拟输入通道进行顺序采样; ? 同步采样——按排序器顺序对模拟输入信号对进行同步采样。

? 转换方式
? 启动/停止——转换完当前排序通道后停止; ? 连续转换——转换完当前排序后重新从头转换。
合肥工业大学电气与自动化工程学院DSP实验室 2015-05-

ADC模块

A/D转换模式

?

排序方式

? 独立双排序——两个8通道排序器SEQ1 、SEQ2独立工作; ? 级联单排序——SEQ1与SEQ2级联为单 个16通道排序器SEQ。

合肥工业大学电气与自动化工程学院DSP实验室

2015-05-

ADC Module Block Diagram (Cascaded Mode)
Analog MUX
ADCINA0 ADCINA1 ADCINA7 ADCINB0 ADCINB1 ADCINB7 MUX B MUX A S/H A S/H MUX S/H B

Result MUX

SOC

EOC

Result Select

RESULT15

Auto sequencer
MAX_CONV1 CHSEL00 (state 0) CHSEL01 (state 1) CHSEL02 (state 2) CHSEL03 (state 3) CHSEL15 (state 15) Start Sequence Trigger
5 - 17

Software EVA EVB Ext Pin (ADCSOC)

...

12-bit A/D Converter

RESULT0 RESULT1 RESULT2

... ...

...

ADC Module Block Diagram (Dual-Sequencer mode)
Analog MUX
ADCINA0 ADCINA1 ADCINA7 ADCINB0 ADCINB1 ADCINB7 MUX A S/H A S/H MUX MUX B S/H B

Result MUX

12-bit A/D Converter
Sequencer Arbiter
SOC1/ EOC1 SOC2/ EOC2

RESULT0 RESULT1

Result Select

RESULT7 RESULT8 RESULT9

SEQ1 Auto sequencer
MAX_CONV1 CHSEL00 (state 0) CHSEL01 (state 1) CHSEL02 (state 2) Software EVA Ext Pin CHSEL07 (state 7) Start Sequence Trigger

SEQ2 Auto sequencer
MAX_CONV2 CHSEL08 (state 8) CHSEL09 (state 9) CHSEL10 (state 10)

Result Select

RESULT15

(ADCSOC)

CHSEL15 (state 15) Start Sequence Trigger

Software EVB

...
5 - 18

...

... ...

...

...

ADC模块

ADC转换模式
? 采样模式 ? 顺序采样——按排序器顺序对模拟输入通道进行顺 序采样; 按照顺序一个通道一个通道地进行采样 。 ? 同步采样——按排序器顺序对模拟输入信号进行同 步采样; 一对通道一对通道地进行采样。

合肥工业大学电气与自动化工程学院DSP实验室

2015-05-

ADC模块

采样模式

? 顺序采样 ? 独立双排序
?

SEQ1:接收到SOC SEQ1请求时,根据SEQ1排序器进行 顺序A/D转换;

? SEQ2:接收到SOC SEQ2请求时,根据SEQ1排序器进行 顺序A/D转换; ? 优先级:SEQ1高于SEQ2,需在当前排序转换结束才能开 始下个排序转换; ? 转换结果存储:按转换先后顺序存入 ADCRESULT0~7(SEQ1)、 ADCRESULT8~15(SEQ2)中。
合肥工业大学电气与自动化工程学院DSP实验室 2015-05-

ADC模块

采样模式
? 顺序采样 ? 级联单排序 ? SEQ:接收到SOC SEQ1请求时,根据SEQ排 序器进行顺序A/D转换,转换通道数由MAX CONV1_n(ADCMAXCONV[3:0])控制; ? 转换结果存储:按转换先后顺序存入 ADCRESULT0~15中 。

合肥工业大学电气与自动化工程学院DSP实验室

2015-05-

ADC模块

? 同步采样
? ? ? ?

采样模式

同时启用S/H-A和S/H-B; 根据自动排序器同时对ADCINAx和ADCINBx进行采样保 持; 先对ADCINAx进行A/D转换,再对ADCINBx进行A/D转换; ADCINAx和ADCINBx转换结果分别存放在ADCRESULTn和 ADCRESULTn+1中。
模拟 MUX

ADCINA0 ADCINA1 ADCINA7 ADCINB0 ADCINB1 ADCINB7

MUX A

S/H A S/H MUX

Result MUX

MUX B

S/H B

RESULT15

CONVnn
合肥工业大学电气与自动化工程学院DSP实验室

Auto sequencer
2015-05-

...

12-bit A/D Converter

Result Select

RESULT0 RESULT1 RESULT2

... ...

ADC模块

ADC转换模式 ? 转换方式

? 启动/停止——转换完当前排序通道后 停止; ? 连续转换——转换完当前排序后重新 从头转换。

合肥工业大学电气与自动化工程学院DSP实验室

2015-05-

ADC模块

转换方式
(ADCTRL1:?CONT?RUN=0)

? 启动/停止

? 接收到一次SOC请求时,执行一次序列转换; ? 一次序列转换完成后停止; ? 排序器保持在停止位置(不复位为CONV00或CONV08); ? 下次SOC触发时,继续从停止位置开始转换(若排序器未被 软件复位)。

? 连续转换

(ADCTRL1:?CONT?RUN=1)

? 接收到一次SOC请求时,执行序列转换; ? 一次序列转换完成后,排序器自动复位并重新开始序列 转换。
合肥工业大学电气与自动化工程学院DSP实验室 2015-05-

Example - Sequencer “Start/Stop” Operation
EVA Timer 1

EVA PWM

I1 , I2 , I3

V1, V2, V3

I1 , I2 , I3

V1, V2, V3

System Requirements: ?Three auto conversions (I1, I2, I3) off trigger 1 (Timer underflow) ?Three auto conversions (V1, V2, V3) off trigger 2 (Timer period) Event Manager A (EVA) and SEQ1 are used for this example with sequential sampling mode

6 - 25

Example - Sequencer “Start/Stop” Operation
(Continued)
? MAX_CONV1 is set to 2 and Channel Select Sequencing Control Registers are set to: Bits ? 15-12 11-8 0x007103 V1 I3 0x007104 x x
7 -4 3-0

I2 I1 V3 V 2

ADCCHSELSEQ1 ADCCHSELSEQ2

? Once reset and initialized, SEQ1 waits for a trigger ? First trigger three conversions performed: CONV00 (I1), CONV01 (I2), CONV02 (I3) ? MAX_CONV1 value is reset to 2 (unless changed by software) ? SEQ1 waits for second trigger ? Second trigger three conversions performed: CONV03 (V1), CONV04 (V2), CONV05 (V3) ? End of second auto conversion session, ADC Results registers have the following values: RESULT0 RESULT1 RESULT2 I1 I2 I3 RESULT3 RESULT4 RESULT5 V1 V2 V3

? User can reset SEQ1 by software to state CONV00 and repeat same trigger 1, 2 session ? SEQ1 keeps “waiting” at current state for another trigger
6 - 26

ADC模块

Example  启动/停止模式

下 溢

周期 匹配

下溢

周期 匹配

MAX?CONVn=2
合肥工业大学电气与自动化工程学院DSP实验室

ADC输入通道选择排序控制寄存器
2015-05-

ADC模块

Example —启动/停止模式

? 复位和初始化之后,等待SOC 触发 ? 第一次SOC触发: CONV00 (I1), CONV01 (I2), CONV02 (I3) ? 第一次转换结束,SEQ1 保持当前状态等待第二次触发 ? 第二次SOC触发: CONV03 (V1), CONV04 (V2), CONV05 (V3) ? 第二次转换结束, SEQ1保持当前状态等待下一次触发 转换结果:ADC?RESULTS RESULT0 RESULT1 RESULT2 I1 I2 I3 RESULT3 RESULT4 RESULT5 V1 V2 V3

? 第二次转换结束后,用户可以通过软件复位 SEQ1 到状态 CONV00,准备下一 次电流转换; ? 为了避免转换结果被覆盖,须确保在下一个转换开始前读取结果寄存器; ? 每次SOC触发后,MAX CONVn均自动装载到SEQ CNTR中,可在ISR中更改。
合肥工业大学电气与自动化工程学院DSP实验室 2015-05-

ADC模块

A/D转换流程

(启动/停止模式,INT?MOD?SEQn=0) ? 初始化ADC寄存器; ? 发生SOC触发请求; ? MAX?CONVn值自动装载到SEQ?CNTR 中; ? 开始序列A/D转换; ? 每转换一个通道,将转换结果保存到 ADCRESULTn寄存器; ? 所有转换完成,触发中断标志; ? 结束 连续转换模式:所有转换完成后,自动重 新加载SEQ?CNTR并复位排序器为CONV00 或CONV08,然后重新开始序列A/D转换。
合肥工业大学电气与自动化工程学院DSP实验室 2015-05-

ADC模块

? 排序控制寄存器
? 自动排序状态寄存器:ADCASEQSR
15 12
Reserved

11
SEQ CNTR3

10
SEQ CNTR2

9
SEQ CNTR1

8
SEQ CNTR0

7
Reserved

6???????????4? 3????????????0
SEQ2 STATE2‐0 SEQ1 STATE3‐0

4位减计数器 SEQ CNTR(3-0)
-SEQ1、SEQ2、SEQ共用; -SOC触发时,自动装载MAX CONVn值; -每转换结束一个(对)通道,计数器减1;
排序计数器状态位

TI测试保留

-减到0时,通过判断SEQ1和SEQ2 busy位来判断剩余转换通道为1或0。
合肥工业大学电气与自动化工程学院DSP实验室 2015-05-

ADC模块

Example2—ADC最大工作时钟
SYSCLKOUT (150 MHz)
To CPU

CLKIN PLLCR (30 MHz) DIV bits
1010b

HISPCP HSPCLK bits
000b

HSPCLK (150 MHz)

PCLKCR.ADCENCLK = 1

ADCTRL3 ADCCLKPS bits
0011b

FCLK (25 MHz)

ADCTRL1 CPS bit
0b
ADCCLK = FCLK/(CPS+1)

ADCCLK (25 MHz) ADCTRL1 ACQ_PS bits
0000b

To ADC pipeline sampling window

FCLK = HSPCLK/(2*ADCCLKPS)

ADCCLKmax=25 MHz!
合肥工业大学电气与自动化工程学院DSP实验室

sampling window = 1/ADCCLK
2015-05-

ADC模块

触发源

? 排序器SEQ1可以是软件触发即软件SOC(Start‐of‐conversion); ? 事件管理器EVA的多种事件触发; ? 外部GPIOE1/XINT2_ADCSOC。 ? 排序器SEQ2可以是软件触发即软件SOC(Start‐of‐conversion)?; ? 事件管理器EVB的多种事件触发。 ? 级联排序器SEQ可以是软件触发即软件SOC; ? 事件管理器EVA的多种事件; ? 事件管理器EVB的多种事件; ? 外部GPIOE1/XINT2_ADCSOC引脚。
合肥工业大学电气与自动化工程学院DSP实验室 2015-05-

ADC模块

ADC转换结果

ADCRESULT0 @ 0x007108 ;ADCRESULT15 @ 0x007117
15 MSB 14 13 12 11 10 9 8 7 6 5 4 LSB 3 2 1 0

模拟输入0V~3V:
Input Analog Voltage - ADCLO Digital=4095 ? 3
(ADCLO  模拟输入信号地)

analog volts 3.0 1.5 0.00073 0

converted value FFFh 7FFh 1h 0h

RESULTx 1111|1111|1111|0000 0111|1111|1111|0000 0000|0000|0001|0000 0000|0000|0000|0000
2015-05-

合肥工业大学电气与自动化工程学院DSP实验室

ADC模块

ADC转换结果
x x x x x x x x x x x x 0 0 0 0 RESULTx

ADC转换结果的读取(Integer format)
bit shift right 15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 x x x x x x x x x xx x 0

ACC

0 0 0 0 x x x x x x x x x x x x Data Mem

Example: read RESULT0 register #include #include "DSP281x_Device.h" "DSP281x_Device.h" void void main(void) main(void) { { Uint16 Uint16 value; value;

// // unsigned unsigned

value value = = AdcRegs.ADCRESULT0 AdcRegs.ADCRESULT0 >> >> 4; 4; } }
合肥工业大学电气与自动化工程学院DSP实验室 2015-05-

ADC Conversion Result Buffer Register
ADCRESULT0 @ 0x007108 through ADCRESULT15 @ 0x007117 (Total of 16 Registers)
14 13 12 11 10 9 8 7 6 5 4 LSB 3 2 1 15 MSB 0

With analog input 0V to 3V, we have: analog volts 3.0 1.5 0.00073 0 converted value FFFh 7FFh 1h 0h RESULTx 1111|1111|1111|0000 0111|1111|1111|0000 0000|0000|0001|0000 0000|0000|0000|0000

5 - 35

How do we Read the Result? Integer format
x x x x x x x x x x x x 0 0 0 0 RESULTx bit shift right 15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 x x x x x x x x x xx x 0 ACC

0 0 0 0 x x x x x x x x x x x x Data Mem

Example: read RESULT0 register
#include #include "DSP281x_Device.h" "DSP281x_Device.h" void ) void main(void main(void) { { Uint16 Uint16 value; value; } }
5 - 36

// // unsigned unsigned

value value = = AdcRegs.ADCRESULT0 AdcRegs.ADCRESULT0 >> >> 4; 4;

小结
?ADC模块有16个通道,可配置为两个独立的8通道模块, 方便为事件管理器A和事件管理器B服务 ?ADC模块中只有一个转换器 -内建有两个采样保持(S/H)的12位ADC核心 -同步采样或者顺序采样模式 -模拟输入范围:0V~3V -快速转换时间(运行于25 MHz的ADC时钟时为 12.5 MSPS) - 16个结果寄存器(可独立寻址)用于保存转换值

LOGO

小结
-输入模拟电压对应的数字值公式为:

-多个触发源用于启动转换(SOC)序列: ·软件:软件立即启动(用SOC SEQn位) ·EVA:事件管理器A(EVA中的多个事件源可以启动转换) ·EVB:事件管理器B(EVB中的多个事件源可以启动转换) ·外部引脚:ADCSOC引脚

LOGO


网站首页 | 网站地图 | 学霸百科 | 新词新语
All rights reserved Powered by 大学生考试网 9299.net
文档资料库内容来自网络,如有侵犯请联系客服。zhit325@qq.com