凌阳科技大学计划论坛

首页 » 32位SPCE3200技术讨论区 » SPCE3200应用技术 » APBDMA
coffee02182006 - 2008-4-28 18:19:00
3200的APBDMA部分,我在网上下载了一份APBDMA.pps,对于有一副图中的几个模块的作用是什么,不是很理解,能帮忙解释一下吗?

这几个功能快中有

APB SLAVE ?????


  MIU ??????


  CHANNEL ??????

谢谢!
luckymxq - 2008-4-29 9:15:00
存储器接口单元(MIU)    MIU 可以支持多种不同类型的外存设备,譬如SDRAM、并行ROM 以及NAND 型Flash 等,供用户灵活选择,从而有效地管理和设计好他们的应用系统。此外,借助MIU 还可以有效地管理SPCE3200 片上的两种存储设备:一个是2K 字(64K bits)的内部SRAM,用作LDM(Local Data Memory);另一个是8K 字(256K bits)的ROM,用于嵌入式引导程序(BOOT)的存储。     

附件: 11.JPG
coffee02182006 - 2008-4-29 9:27:00
谢谢回答哦!
    能给我这个菜鸟解释一下APBDMA控制器中的CHANNEL(通道)的作用吗?
    还有就是APB SLAVE????
  谢谢!
luckymxq - 2008-4-29 9:33:00
我对上图的理解:
      1、最项上的那一排模块,它们做为从设备时必须经过CPU才能进行数据的读写;在做为主设备时可以不经过CPU就可以直接与存储器进行数据交换。
      2、模块9是在CPU读到外设的数据后传输到存储器的一个接口。
      3、仲裁器根据外设数据传输的优先级来决定那个外设的数据可以最先得到响应。
      4、APB桥和DMA控制器主要是进行下面两方面的工作:
            (1)在外设做为从设备时,在存储器与CPU之间起到一个桥梁的作用,负责CPU与存储器之
                    间的数据传输。
            (2)在外设做为主设备时,就直接控制外设与存储器之间进行数据传输,不经过CPU,加快
                    数据传输的速度。
luckymxq - 2008-4-29 9:41:00
对于CHANNEL(通道)的作用我是这样理解的:
      1、DMA 控制器可为APB 外设模块同时提供4 个用于读/写MIU 存储器的通道。这也是一种提高读
          写速度的方法。
      2、当第一个通道忙时,可以从第二通道传输或者第三、第四通道均可,这样数据的传输就不会受
          到延迟。
coffee02182006 - 2008-4-29 9:47:00
哦!
  那谢谢斑竹了哦!
luckymxq - 2008-4-29 9:50:00
我对APB SLAVE作用的理解:
      1、在外设作为从设备时,也就是必须经过CPU才能进行数据的读写时,CPU从外设读到数据后,
          把数据传送到APB SLAVE,然后APB SLAVE再把数据传到存储器里。
luckymxq - 2008-4-29 9:52:00
以上仅是我个人的理解,我也正在学习中哦,不当之处请指出,希望能够共同学习,共同进步哦!!!
coffee02182006 - 2008-4-29 9:58:00
非常非常,十分十分的感谢斑竹的帮助了哦!
coffee02182006 - 2008-4-29 10:05:00
SPCE3200中提供的是13是APB IP能通过DMA方式进行操作吗?
  应该是的吧!
leajian - 2008-4-29 10:12:00
APB DMA本身就是一个DMA,可以完成APB总线上的模块与DRAM之间的数据传输

APB DMA本身不能完成DRAM到DRAM的数据搬移,所以,一般近用于APB总线上的数据读写。APB DMA设计了4个channel,就是希望可以同时最多对4个外围设备进行读写,如,可以在读写SD卡的同时,读写Nand Flash,等等~~
qxq005 - 2008-4-29 10:14:00
.5[/size][/font]

附件: 截图00.jpg
coffee02182006 - 2008-4-29 10:29:00
我个人对于上图的理解:
    如果想要通过DMA的方式对挂在APB bus上的IP进行操作的话,那么会向DMA控制器发出DMA请求信号, DMA控制器接到此信号后,应能向CPU发总线请求信号(总线控制权需要切换).
    然后CPU接到总线请求信号后,如果允许,则会发出DMA响应信号,从而CPU放弃对总线的控制,此时DMA控制器应能实行对总线的控制。(这一个过程就是图中的APB SLAVE的功能的一部分).
    DMA控制器得到总线控制权之后,要往地址总线发送地址信号,修改所用的内存或者接口的地址指针。
coffee02182006 - 2008-4-29 10:32:00
当然这个图包括了很多的内容,随后我们再讨论哦!
coffee02182006 - 2008-4-29 13:40:00
APB DMA设计了4个channel,那么就要考虑到优先级的问题,就要进行仲裁了!
    那这13个APB IP用DMA方式操作的先后顺序是?????
coffee02182006 - 2008-4-30 9:56:00
斑竹,
      对于上面的图3.10中APBDMA结构图中有点错误:上面有两个地方标示了APB arbiter,这是错误的。
                                                              正确:在MIU与4个channels之间的那个应该改为AHB arbiter。
请确认,是否是这样!
luckymxq - 2008-4-30 10:44:00
确实在MIU与4个channels之间的那个应该是AHB arbiter, 因为MIU与channel之间的数据传输的高速度的,所以要用AHB.谢谢您的指正.
luckymxq - 2008-4-30 10:48:00
正确的APB 桥与DMA 控制器电路结构

附件: 11.JPG
coffee02182006 - 2008-4-30 11:10:00
哦!
  明白了哦!
  想具体的问一下,假如我想用DMA方式操作UART或者其他的IP
  大概的操作流程是怎么样的哦?能给介绍一下吗,谢谢!

  从UART IP向DMA控制器发出DMA请求信号开始描述一下,谢谢!
qxq005 - 2008-4-30 11:34:00
DMA控制器可为APB外设模块同时提供4个用于读/写MIU存储器的通道,每一通道都可以设置成下列4类传输方式:
    8位单通道传输
    16位单通道传输
    32位单通道传输
    32位突发模式传输
DMA具有2种启动方式:
1,当DMA通道被使能(通道使能位被设为1)后,DMA控制器通过通道连续地读出或写入数据,并在完成读写操作后结束DMA操作;
2,当DMA通道被使能后,在APB外设模块发出REQ请求时DMA控制器便会进行读写操作一次,并当所有REQ请求的读写操作完成后结束操作;
当DMA控制器读/写MIU时有2种存储器存储方式:
1,单缓存区方式:即指定DMA缓存区的起始、结束地址,则DMA控制器仅对这一存储空间进行读写操作,并在读写操作完成时通过发出IRQ信号来结束操作;
2,双缓存区方式:即同时指定BUFFER A和BUFFER B缓存区的起始、结束地址,则DMA控制器会交替对BUFFER A和BUFFER B进行读写操作,并在二者有关读写操作的传输完成后发出IRQ信号。将DMA通道使能位设回到‘0’时,会产生DMA操作终止请求,则DMA控制器会在当前传输完成时结束其操作。
当DMA向APB外设模块进行读写操作时,有2种寻址方式来定位外设端口:
1,常规寻址;
2,连续寻址。
注意:当DMA操作完成后,用户需要写‘1’到相应的通道IRQ状态位以清除DMA中断,并需要写‘0’到相应的通道DMA使能位以结束其DMA操作。
luckymxq - 2008-4-30 11:41:00
以MIC输入作为例子吧:

      首先设置ADC的MIC通道输入,设置采样率,使能ADC等;另外要使能APB DMA的通道,设置APB DMA的通道Buffer,把APB DMA通道的起始地址指向MIC数据寄存器。
      使用MIC通道流程图如下:

附件: 11.JPG
luckymxq - 2008-4-30 11:44:00
利用ADC MIC通道转换模拟声音信号为数字信号,然后通过APB DMA把数字信号存储到一段缓冲区中。当缓冲区满时,产生APB DMA中断,在中断中读取数字信号,最后把数字信号传输到DAC中输出。在DAC实验中已给出DAC API本实验直接利用DAC API完成放音功能.主程序流程如下:

附件: 12.JPG
luckymxq - 2008-4-30 11:46:00
用到两个中断,一个是D/A中断,一个是APB DMA中断,其中D/A中断填充DAC FIFO用于放音;APB DMA中断读取MIC转换的数字声音信号。D/A中断实验十二已介绍过,这里重点介绍APB DMA中断。APB DMA使用双缓冲区,APB DMA交替对缓冲区进行读写操作。当一个缓冲区满时,即引发APB DMA中断,CPU转向IRQ33处理中断服务程序。APB DMA中断服务程序流程如下:

附件: 13.JPG
qxq005 - 2008-4-30 11:48:00
呵呵~~真够详细的~~~
coffee02182006 - 2008-4-30 12:06:00
万分的感谢哦!
coffee02182006 - 2008-4-30 15:56:00
谢谢了哦
coffee02182006 - 2008-4-30 15:58:00
DMA具有2种启动方式:
1,当DMA通道被使能(通道使能位被设为1)后,DMA控制器通过通道连续地读出或写入数据,并在完成读写操作后结束DMA操作;
2,当DMA通道被使能后,在APB外设模块发出REQ请求时DMA控制器便会进行读写操作一次,并当所有REQ请求的读写操作完成后结束操作;

但是我在APBDM.pps中找不到哪个寄存器中那一个bit是用来选择的哦!

我猜测了一下,在DMA第x通道控制寄存器中CHx_DMA(b1)
0:选择的是第一种启动方式
1:选择的是第二种启动方式

请确认是这样的吗?APBDMA..pps解释的太让人费解了!
qxq005 - 2008-4-30 16:06:00
这里有你需要的:

DMA*通道控制寄存器设置DMA控制器的使能、中断、传输方式选择位、存储器存储方式选择位、APB外设模块定位寻址模式和读写方向等。
3.42 P_DMA_CHANNELx_CTRL


b7
b6
b5~b4
b3
b2
b1
b0
/
W
W
W
W
W
W
W
默认值
0
0
0
0
0
0
0
名称
CHx_EN
CHx_IRQ
CHx_TRANS
CHx_MEM
CHx_MODE
CHx_DMA
CHx_DIR


CHx_EN
b7
通道x DMA使能位:

0
:禁止


1
:使能

CHx_IRQ
b6
通道x DMA中断屏蔽:

0
:屏蔽DMA IRQ


1
:允许DMA IRQ

CHx_TRANS
b5~b4
通道x 传输方式选择位:

00
8位单通道传输方式


01
16位单通道传输方式


10
32位单通道传输方式


11
32位突发模式传输

CHx_MEM
b3
通道x MIU存储器存储方式选择位:

0
:单缓存区存储方式


1
:双缓存区存储方式

CHx_MODE
b2
通道x DMAAPB外设模块定位寻址模式:

0
:连续模式


1
:常规模式

CHx_DMA
b1
通道x DMA方式选择位:

0
:自动方式


1
:查询方式

CHx_DIR
b0
通道x 读写方向设置位:

0
MIUAPB的读写


1
APBMIU的读写

coffee02182006 - 2008-4-30 16:12:00
谢谢你的回复!
  我有上面的这张表,只是想要确认CHx_DMA的作用,感觉这张表上的这个地方讲得不够清楚的哦!

我猜测了一下,在DMA第x通道控制寄存器中CHx_DMA(b1)
0:选择的是第一种启动方式
1:选择的是第二种启动方式

请确认是这样的吗?

另外对于CHx_MODE(b2)的作用:
通道x DMA的APB外设模块定位寻址模式:

0:连续模式

1:常规模式

不知道是什么意思???能帮忙解释一下吗?
coffee02182006 - 2008-5-5 10:10:00
斑竹能对上面的问题给予回答吗?
  谢谢!
 1  2 
查看完整版本: APBDMA