DSP28335 DMA模块及寄存器中文资料

  • 格式:docx
  • 大小:247.41 KB
  • 文档页数:16

第 1 页 共 16 页 1 DMA简介

1.1 DMA模块基本特征

1) 6个DMA通道,都具有独立的PIE中断,对应INT7中断线的1~6分组;

2) 外设触发源可关联多个外设触发;

a. ADC排序器1和排序器2;

b. 多路缓冲串行端口A和B的发送与接收;

c. 外部中断XINT1~XINT13

d. CPU定时/计数器

e. Epwm1~6 ADCSOCA和ADCSOCB信号

f. 软件触;

3) 数据源/目的地

a. L4~L7 16K*16的SARAM存储器;

b. 所有XINTF区域(外扩的存储器)

c. ADC的结果寄存器

d. McBSP-A和McBSP-B的发送和接收缓冲器

e. Epwm1~6/HRPWM1~6外设第3帧映射寄存

4) 字长

a. 16位或32位字长(McBSP仅限于16位)

b. 读写操作:4周期/字(对于McBSP 5周期/字)

1.2 DMA模块触发机制

每个DMA通道均有如下的结构框图:

1) 通过各通道的DMA模块寄存器MODE的外设中断触发选择位PERINTSEL来选择DMA通道的中断触发源;

2) 使能各通道的DMA模式寄存器MODE的外设中断触发使能位PERINTE,开启外设中断信号触发DMA功能;

3) 使能各通道的DMA控制寄存器CONTROL的运行状态为RUNSTS,使能该通道并允许接收外设中断触发信号;

4) 配置完成后,该DMA通道可以能进行数据传输;

5) 也可调过中断触发源直接通过软件触发DMA,通过置位控制寄存器CONTROL的外设中断强制位PERINTFRC来强制触发,同样也可以通过置位控制寄存器的外设中断清除位PERINTCLR来清除挂起的DMA触发;

6) 控制寄存器的中断触发标志位PERINTFLG被特定的中断触发置位后将一直保持在置位状态,直到状态机的优先逻辑允许该通道进行数据传输,数据传输开始,该标志位被清零;

7) 在正常的优先级别下,数据传输完成后才会去响应新的中断触发,如果新的中断触发在处于挂起状态(即未被执行)的情况下又来了一个新的中断触发,此时控制寄存器的溢出标志位OVRFLG会被置位。即第三个中断触发会置位溢出标志位;

第 2 页 共 16 页 8) 如果一个外设中断触发发生了,而与此同时标志位正在清除中,若外设中断触发有一定优先权,那么外设中断标志位还是会被置位;

1.3 DMA模块的仲裁机制

通常下DMA是独立与CPU运行的,但有时DMA与CPU会同时通过同一个接口访问存储器或外设寄存器,这时就需要进入CPU仲裁程序,有可能产生成冲突的内部接口如下:

1) XINTF存储区域0、6、7;

2) L4 RAM ~ L7 RAM;

3) 外设帧3(MCBSP-A和MCBSP-B);

1.3.1 当访问外部存储器接口时

a. 若CPU和DMA同一周期内访问任何一个XINTF区域,DMA被响应,CPU挂起

b. 若CPU访问一个XINTF的区域处于挂起或正在处理时,若DMA视图访问,则DMA被挂起;

c. 若CPU和DMA同时视图进行写操作,则延时1个时钟周期;

1.3.2 当访问其它外设/存储器时

a. CPU与DMA同一周期内访问相同接口,DMA优先,CPU被挂起;

b. 对于同一个接口,对于挂起的CPU访问而言,DMA访问有更高的优先权;

c. 不建议把CPU和DMA混在一起访问同一接口,可能会造成DMA操作丢失;

1.4 DMA模块的通道优先级机制

1.4.1 轮次模式

所有通道具有相同的优先权,每一个通道以“轮次”响应的方式呗响应到,即:

CH1→CH2→CH3→ CH4→CH5→CH6→CH1→CH2→...。

按照当前被处理通道之后的顺序处理后续被挂起的通道;

轮次模式状态机可以通过DMA的DMACTRL寄存器的PRIORITYRESET位设置;

1.4.2 通道1高优先级模式

这种模式下,通道1具有高优先权,如果通道1触发事件发生,其余任何通道在当前字传输完成后即被终止,响应并完成通道1的数据传输后,才回到原先执行中传送其余通道,其余通道还是以轮次模式执行;

高优先级:CH1

低优先级:CH2→CH3→ CH4→CH5→CH6→CH2→...。

该优先级模式可以用在ADC采集数据中,也可用于外设设备的连接中。

1.5 DMA模块的地址指针与发送控制方法

1.5.1 传送结构

两级嵌套的循环结构,内循环为一次突发传送,外循环则定义一次传送过程中突发传送的循环次数;

突发传送为一次传送的最小单位,可以通过突发传送长度寄存器BURST_SIZE定义每个通道突发传送的数据量(最多为32个16bit字),通过外环传送步长寄存器TRANSFER_SIZE定义一次传送过程中突发传送的次数(最多为65536个突发传送);

在每个传送过程的开始或结尾,可以产生一次CPU中断,可由模式寄存器MOD的通道中断模式选择位CHINTMODE设置中断触发时刻;

在默认情况下,DMA在一次外设中断触发下仅产生一次突发传送,当突发传送结束后,即使当前通道触发信号再次到来,状态机也会根据优先级顺序移动到下一个挂起的触发通道,目的是防止一个通道独占DMA总线;也可通过置位模式寄存器MODE的单次触发控制位ONESHOT来设置一次中断完成整个传送过程,但该方式会导致一次触发时间占用绝大部分DMA带宽。

每个DMA通道都包含源地址和目标地址的映射地址指针SRC_ARRD和DST_ADDR,这些指针在传送状态机运行过程中可独立控制,每次传送开始时,每个指针映射地址中的值将分别装载到其当前寄存器中,在内部循环完成时,每完成一个字的传送后,

第 3 页 共 16 页 SRC_ARRD和DST_ADDR中将根据SRC/DST_BURST_STEP设置值进行增减地址。每次突发传送结束后,有两种方式修改活动地址指针,默认方式是加载SRC/DST_TRANSFER_STEP寄存器中的值,第二种是通过返回过程,返回地址将被加载到当前地址指针中;

当SRC/DST_WRAP_SIZE中设置的突发传送次数完成时发生地址返回,此时一个返回过程将发生:

1) 当前源/目标开始地址指针寄存器SRC/DST_BEG_ADDR将根据SRC/DST_WRAP_STEP寄存器中的标记值进行增加。

2) 当前源/目标开始地址指针寄存器SRC/DST_BEG_ADDR中的新值将装载到 SRC/DST_ADDR当前寄存器中。

3) 返回计数器SRC/DST_WRAP_COUNTP会重新加载SRC/DST_WRAP_SIZE寄存器的值,为下次返回做准备,这就允许在一次传送过程中产生多次返回中断;

DMA的地址指针有当前寄存器和映射寄存器,从而允许用户在DMA工作时间为下次传送过程在映射寄存器中设定相应的值,具有映射单元的指针有:

1) 源/目标地址指针(SRC/DST_ADDR),对应映射寄存器为SRC/DST_ADDR_SHADOW,映射寄存器中的值为读写操作的首地址,每次传送开始时,映射寄存器的值将装在到当前寄存器中;

2) 源/目标开始地址指针(SRC/DST_BEG_ADDR),对应映射寄存器为SRC/DST_BEG_ADDR_SHADOW,每次传送开始时,映射寄存器的值将装在到当前寄存器中,同时当前寄存器的值在添加到SRC/DST_ADDR之前也将先根据SRC/DST_WRAP_STEP寄存器中的值进行增减;

1.5.2 传送过程长度控制

对于每个通道,传送过程由以下长度值进行控制:

1) 源和目标突发长度BURST_SIZE,即内部循环次数

BURST_SIZE定义了一次突发传送所传递的字的个数,在突发传送开始前,BURST_SIZE的值被加载到BURST_COUNT中,没完成一个字的传送,BURST_COUNT减1。

其最大可以设置为32。

2) 源和目标传送次数TRANSFER_SIZE,即外部循环次数

TRANSFER_SIZE指定每个CPU中断产生之前所发生的突发传送的次数,MODE寄存器中的CHINTMODE位可将中断配置成在传送开始时触发中断或在传送结束时触发中断,MODE寄存器中的CONTINUOUS位可设定在传送完成后,当前通道是继续使能还是禁止工作;

在传送开始时,TRANSFER_SIZE被装载到TRANSFER_COUNT寄存器中,TRANSFER_COUNT不断监视突发传送的次数,直到其归零时,表明 DMA传送过程结束。

3) 源/目标返回长度SRC/DST_WRAP_SIZE

SRC/DST_WRAP_SIZE定义了当前地址指针返回开始位置之前所发生的突发传送次数,用来实现一个环绕的地址类型功能,在传送开始时,SRC/DST_WRAP_SIZE的值被装载到SRC/DST_WRAP_COUNT寄存器中,SRC/DST_WRAP_COUNT监视突发传送的次数,当归零时相应的源/目标地址指针的返回操作被执行。要禁止此项功能,设定此寄存器的值大于TRANSFER_SIZE的值。

1.5.3 传送过程步长控制

对于每个源/目标指针,地址的改变可通过以下步长来控制:

1) 源/目标突发传送步长 SRC/DST_BURST_STEP

该寄存器定义了每次突发传送中源地址及目标地址的增量步长;寄存器为有源二进制形式,地址按要求增加或减少;

在访问如McBSP等不要求增量步进的寄存器时,可将该寄存器值设置为0;

2) 源/目标传送步长 SRC/DST_T1TRANSFER_STEP

定义了在当前突发传送完成后,下一个突发传送的地址偏移量,当访问的寄存器或内存单元在固定的地址间隔时,可以使用该功能;

3) 源/目标返回步长 SRC/DST_WRAP_STEP

该寄存器定义了当返回计数值归零时BEG_ADDR指针增加或减少字的个数,从而设定新的地址;

1.5.4 DMA两级循环状态机的运行模式

1) 单次触发模式(ONESHOT)

第 4 页 共 16 页 在一次外设中断触发信号到来时,如果使能单次触发模式,则在TRANSFER_COUNT归零前DMA将连续执行突发传送。如果单次触发模式被禁止,则每次突发传送过程都要由中断触发信号进行触发,直到TRANSFER_COUNT归零。

2) 连续触发模式(CONTINUOUS)

如果连续触发模式被禁止,那么在传送结束后将CONTROL寄存器中的RUNSTS位清零,禁止DMA通道工作。如果要在此通

道发起又一次传送过程,则首先要将CONTROL寄存器中的RUN位置1,以重新启动通道。如果连续触发模式被使能,则RUNSTS位在每次传送结束不会被清除。

3) 通道中断模式(CHINTMODE)

用来定义DMA中断是在传送开始时发生还是在传送结束时发生。如果要用连续模式实现“乒乓”操作,则中断应在传送开始时发生。如果DMA没有工作在连续模式,则中断通常在传送结束时产生。

2 DMA模块寄存器

2.1.1 DMA控制寄存器——DMACTRL

位 名称 功能描述

15~2 保留 保留

1 PRIORITY RESET 优先级复位设置位,置位时会复位轮次优先状态机;

0:写0不起作用,读该位返回0;

1:置1后,处理完所有被挂起的传送请求后才进行优先级复位,如果优先级模式为通道1优先,则低优先级的通道传送操作完成后才进行优先级复位;

0 HARD RESET 硬件复位位

0:写0不起作用,读该位返回0;

1:写1时硬件复位DMA并终止当前所有访问;

2.1.2 DMA调试控制寄存器——DEBUGCTRL

位 名称 功能描述

15 FREE 仿真控制位,用于控制停止时间发生时DMA的操作