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

1DMA简介
1.1DMA模块基本特征
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.2DMA模块触发机制
每个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会被置位。即第三个中断触发会置位溢出标志位;
8)如果一个外设中断触发发生了,而与此同时标志位正在清除中,若外设中断触发有一定优先权,那么外设中断标志位还是会被置位;
1.3DMA模块的仲裁机制
通常下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.4DMA模块的通道优先级机制
1.4.1 轮次模式
所有通道具有相同的优先权,每一个通道以“轮次”响应的方式呗响应到,即:
CH1→CH2→CH3→ CH4→CH5→CH6→CH1→CH2→...。
按照当前被处理通道之后的顺序处理后续被挂起的通道;
轮次模式状态机可以通过DMA的DMACTRL寄存器的PRIORITYRESET位设置;
1.4.2 通道1高优先级模式
氢化松香这种模式下,通道1具有高优先权,如果通道1触发事件发生,其余任何通道在当前字传输完成后即被终止,响应并完成通道1的数据传输后,才回到原先执行中传送其余通道,其余通道还是以轮次模式执行;
adma高优先级:CH1
低优先级:CH2→CH3→ CH4→CH5→CH6→CH2→...。
该优先级模式可以用在ADC采集数据中,也可用于外设设备的连接中。
1.5DMA模块的地址指针与发送控制方法
1.5.1 传送结构
两级嵌套的循环结构,内循环为一次突发传送,外循环则定义一次传送过程中突发传送的循环次数;
突发传送为一次传送的最小单位,可以通过突发传送长度寄存器BURST_SIZE定义每个通道突发传送的数据量(最多为32个16bit字),通过外环传送步长寄存器TRANSFER_SIZE定义一次传送过程中突发传送的次数(最多为65536个突发传送);
在每个传送过程的开始或结尾,可以产生一次CPU中断,可由模式寄存器MOD的通道中断模式选择位CHINTMODE设置中断触发时刻;
在默认情况下,DMA在一次外设中断触发下仅产生一次突发传送,当突发传送结束后,即使当前通道触发信号再次到来,状态机也会根据优先级顺序移动到下一个挂起的触发通道,目的是防止一个通道独占DMA总线;也可通过置位模式寄存器MODE的单次触发控制位ONESHOT来设置一次中断完成整个传送过程,但该方式会导致一次触发时间占用绝大部分DMA带宽。
每个DMA通道都包含源地址和目标地址的映射地址指针SRC_ARRD和DST_ADDR,这些指针在传送状态机运行过程中可独立控制,每次传送开始时,每个指针映射地址中的值将分别装载到其当前寄存器中,在内部循环完成时,每完成一个字的传送后,SRC_ARRD和DST_ADDR中将根据SRC/DST_BURST_STEP设置值进行增减地址。每次突发传送结束后,有两种方式修改活动地址指针,默认方式是加载SRC/DST_TRANSFER_STEP寄存器中的值,第二种是通过返回过程,返回地址将被加载到当前地址指针中;
电伴热管缆SRC/DST_WRAP_SIZE中设置的突发传送次数完成时发生地址返回,此时一个返回过程将发生:
1)当前源/目标开始地址指针寄存器SRC/DST_BEG_ADDR将根据SRC/DST_WRAP_STE
P寄存器中的标记值进行增加。
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的值。

本文发布于:2024-09-21 18:29:54,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/3/334471.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:传送   寄存器   中断   触发   通道   地址   外设   突发
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议