DSP28335代码学习 下载本文

9.1.2 、级联模式下工作原理 针对下图讨论级联模式下的运行机制

(1)决定级联模式的条件

在连续采样方式下(SMODE_SEL(ADCTRL3[0])=0(默认值)),当级联选择控制位SEQ_CASC(ADCTRL1[4])被置1时,两个独立的8状态SEQ1和SEQ2序列发生器就级联成一个16状态的序列发生器SEQ(SEQ1),而SEQ2被忽略。相应的指令为:

AdcRegs.ADCTRL3.bit. SMODE_SEL=0; //连续采样模式 AdcRegs.ADCTRL1.bit.SEQ_CASC = 1; // Cascaded Mode (2)最大转换通道数MAX_CONV1与序列计数器状态位SEQ_CNTR的关系

一旦序列发生器SEQ收到来自软件、EVA、EVB或外部引脚启动转换(SOC)的触发信号,就开始转换。此时,最大转换数MAX_CONV1(ADCMAXCONV[3:0])自动装入序列计数器状态位SEQ_CNTR(ADCASEQSR[11:8])。状态指针从指向CONV00开始,按增序逐一指向CONV01,CONV02,……,每指向一个CONVnn,序列发生器就通过采样/保持器及多路器自动完成相应于一个引脚的采样及模数转换,SEQ_CNTR的装入值也开始逐一递减,直到0。在一个自动序列化过程中,完成的转换数等于(MAXCONVn+1)。 (3) CONVnn的作用

CONVnn位域定义要采样和转换的引脚。对于SEQ1,取CONV00~CONV07;对于SEQ2,取CONV08~CONV15;对于级联SEQ,CONVnn可取值范围为CONV00~CONV15,即自动转换最多可达16个通道。每一个CONVnn的4位二进制用来选择模拟输入通道。

(4)CONT_RUN的设置及相应处理

如果SEQ处在连续转换方式(CONT_RUN(ADCTRL1[6])=1),则转换自动重新开始,即MAXCONVn的值再装入序列计数器状态位SEQ_CNTR,SEQ1的状态置位为CONV00。

如果SEQ处在启动/停止转换方式(CONT_RUN(ADCTRL1[6])=0),则在结束一个自动化序列(EOS)后,序列发生器保持在一个状态,并且SEQ_CNTR保持为0。 9.1.3、双序列模式下的工作原理

针对下图说明双序列ADC自动转换运行机制。它与级联(SEQ)模式下的ADC自动转换机制相似。下面介绍的是两种模式的不同点。

(1)决定双序列模式的条件

采样方式选择控制位SMODE_SEL(ADCTRL3[0])和级联选择控制位SEQ_CASC(ADCTRL1[4])也用来选择双序列模式。当SMODE_SEL=1是,为并发采样模式。这里的并发指序列发生器SEQ1和SEQ2都参与自动模数转换。由于只有一个转换器,因此两个序列发生器的采样和转换并不是同时进行的,SEQ1的优先级高于SEQ2。当SEQ_CASC(ADCTRL1[4])清0时,为双序列发生器方式,此时,SEQ1和SEQ2作为两个8状态序列发生器操作。

当需要对两个并列的引脚如(ADCINA0及ADCINB0)进行先后采样时,通常将SMODE_SEL和SEQ_CASC都置位为1,即采用并发级联模式。指令为

AdcRegs.ADCTRL3.bit. SMODE_SEL=1; //并发采样方式 AdcRegs.ADCTRL1.bit.SEQ_CASC = 1; // Cascaded Mode (2)双序列发生器转换结果的存储

序列发生器1(SEQ1)模数转换的结果存入RESULT0~RESULT7,而序列发生器2(SEQ2)模数转换的结果存入RESULT8~RESULT15

(3)两个最大转换通道数MAX_CONV1及MAX_CONV2

与级联模式不同,这里的MAX_CONV1(ADCMAXCONV[2:0])与MAX_CONV1(ADCMAXCONV[6:4])是一个3位二进制数,它们分别表示SEQ1和SEQ2的最大转换通道数。

(4)双序列发生器的触发源

在双序列模式中,SEQ1的触发源与级联模式SEQ的触发源相同,但SEQ2的触发源只有软件和EVB两种。 (5)序列发生仲裁器

在双序列发生器模式中,仲裁器用来仲裁两序列发生器之间的竞争,SEQ1具有较高优先级。 (6)关于CONVnn

在并发模式下,CONVnn的最高位被舍弃,系统根据低3位的偏移量先进行对应A引脚的采样再进行对应B引脚的采样。 9.2 、ADC模块设置要领 9.2.1、ADC的上电顺序

10、外部接口(XINTF)

XINTF是一个非多路复用异步总线(non multiplexed asynchronous bus)。和TMS320x281x external interface类似。 说明文档约定:

十六定制数用一个后缀h,或者前缀0x。例如十六进制40(十进制64)写作40h或0x40。 寄存器都是以图表和表格的形式描述。

10.1、功能描述

XINTF映射到三个固定的内存映射区,如10.1.3所示。每一个区都有一个片选信号。每个区都可以通过特定的等待,保存和维持来被编程,这个过程可以分为读和写的过程。外部的XREADY信号可以来代替wait states。

通过配置XTIMINGx registers 来the set-up/hold and access wait states for each XINTF zone。

The access timing is based on an internal clock called XTIMCLK。XTIMCLK可以配置为系统频率,或者系统频率的一半。XTIMCLK可以运用于所有的区。XINTF bus cycles begin on the rising edge of XCLKOUT and all timings and events are generated with respect to the rising edge of XTIMCLK。

10.1.1、和TMS320x281x external interface 的区别

数据总线宽度:

281x是16位的,2833x是16位和32位。Using the 32-bit mode improves performance since 32 bits of data can be read or written in a single access.

地址总线:

增加到20位地址线。

存储器直接访问(Direct Memory Access(DMA)):

All three XINTF zones are connected to the on-chip DMA module. The DMA can be used to copy code and data to or from the XINTF while the CPU is processing other data.The281x devices do not include a DMA.

XINTF Clock Enable:

XINTF clock默认是关掉的,以减少能耗。XTIMCLK can be enabled by writing a 1 to bit 12 of the PCLKCR3 register。2812一直开着。

XINTF Pin MUXing:

许多XINTF pin是和普通I/O口是复用的,当想使用XINTF pin时,需要配置GPIO mux registers。2812的XINTF pin是明确的。

Number of Zones and Chip Select Signals:

The number of XINTF zones has been reduced to 3:Zone0,Zone6 and Zone7。Each of these zones has a dedicated chip select signal Zone 7 Memory Mapping:Zone7 is always mapped. Zone Memory Map Locations:

Zone0 tarts at address 0x4000 and is 4Kx16。Zone6 and7 are both 1 Mx16 and start at 0x100000 and 0x200000 respectively。 EALLOW protection:The XINTF registers are now EALLOW protected.

10.1.2、进入XINTF区

每一个 XINTF 区通过独特的读写进入的时序和每个区独自相连的片选信号可以被独立的配置。片信号置低意味着进入的发生。

外部地址总线XA为20位宽,且被各个区公用。产生什么外部地址依赖于要进入哪个区,如 Zone 0 为0x00000- 0x00FFF;Zone 6 and 7 both use external addresses 0x00000 - 0xFFFFF. Zone chip select signal (XZCS6 or XZCS7) will also go low。