《DSP控制器原理及应用技术》第5章控制类外设模块及其应用开发教程讲解.ppt
文本预览下载声明
* * * * * * * * * * * CONV00~CONV15 在序列采样模式下面,CONVnn的4位MSB定义输入引脚,低3位定义了偏移量。并发采样模式下,MSB舍弃。 每个序列转换选择的模拟输入通道由CONVnn定义,他们位于ADC输入通道选择序列寄存器(ADCCHSELSEQn)内。CONVnn是一个4位的域,对用于转换的16通道中任何一个通道进行说明。当使用级联方式时,最大转换通道数为16. CONVnn的数值是跟Result对应的,例如 如果conv00=3,conv01=2,那么转换完后result0/1是否存放着3/2通道的值 (CONVxx 表示先后,CONV数值表示通道) 如果conv00=4,conv01=3,则result种存放4/3通道的值,先转换通道4、再转换通道3 第一个结果放在result0,第二个结果放在result1 * SEQ1:CONV00~CONV01 SEQ2:CONV08~CONV15 SEQ:CONV00~CONV15 * * * * * 5.4.2 ADC模块的寄存器 1. 模/数转换控制寄存器1(ADCTRL1) 2. 模/数转换控制寄存器2(ADCTRL2) 15 14 13 12 11 10 9 8 ePWM_SOCB_SEQ RST_SEQ1 SOC_SEQ1 保留 INT_ENA_SEQ1 INT_MOD_SEQ1 保留 ePWM_SOCA_SEQ1 RW-0 7 RS-0 6 RW-0 5 R-0 4 RW-0 3 RW-0 2 R-0 1 RW-0 0 EXT_SOC_SEQ1 RST_SEQ2 SOC_SEQ2 保留 INT_ENA_SEQ2 INT_MOD_SEQ2 保留 ePWM_SOCB_SEQ2 RW-0 RS-0 RW-0 R-0 RW-0 RW-0 R-0 RW-0 3. 模/数转换控制寄存器3(ADCTRL3) ADCBGRFDN[1:0]:带隙基准和参考电路电源开关 00-关闭 11-上电 ADCPWDN:其他模拟电路电源开关 0-关闭 1-上电 ADCCLKPS[3:0]:ADC时钟预分频 0000-ADCLK=HSPCLK 其他值-ADCLK=HSPCLK/(2*ADCCLKPS ) SMODE_SEL :采样模式。0-顺序采样;1-同步采样 4. ADC状态标志寄存器(ADCST) EOS BUF2/1:SEQ2/1转换结束缓冲位 用于中断模式1 INT SEQ2/1 CLR SEQ2/1:中断清除标志 写1清除相应中断标志 SEQ2/1 BSY:忙标志。 0-空闲(转换结束) 1-忙(转换中) INT SEQ2/1:中断标志 5.4.3 ADC应用 示例 ADC模块工作于双排序器、顺序采样(复位默认状态)模式,由SEQ1对ADCINA3和ADCINA2的电压信号进行自动转换,转换由软件触发。采用中断模式0,每次转换结束均产生中断;在中断服务程序中读取结果并存入2个长度为1024的数组。 #include DSP2833x_Device.h #include DSP2833x_Examples.h //HSPCLK=SYSCLKOUT/2*ADC_MODCLK= 150/(2*3) //= 25.0 MHz #define ADC_MODCLK 0x3 // 函数声明. interrupt void adc_isr(void); // 全局变量声明 Uint16 LoopCount; Uint16 ConversionCount; Uint16 Voltage1[1024]; Uint16 Voltage2[1024]; void main(void) {// Step 1. 初始化系统控制 InitSysCtrl(); // Step 2. 初始化GPIOGPIO: // InitGpio(); // 此处跳过 // Step 3. 清除所有中断;初始化PIE向量表 DINT; InitPieCtrl();// 初始化PIE控制 IER = 0x0000; //禁止CPU中断 IFR = 0x0000; //清除所有CPU中断标志 InitPieVectTable();// 初始化PIE 向量表 EALLOW;
显示全部