请问下大佬,DMA低优先级通道半双工只有一个传输通道过程中,有高优先级通道请求,会打断低优先级半双工只有一个传输通道吗?

DMA控制器可以无需CPU介入而在内部存儲器、外部存储器及片上外设之间传送数据HPI接口也使用DMA辅助端口传送数据。DMA具有如下的特点:

DMA可以独立于CPU工作;

4个标准端口(port)与DARAMSARAM、外部存储器和外设相连;

一个辅助端口用于HPI和存储器之间的数据传送;

可以设置每个通道的优先级;

每个通道的传输可以由选定事件触發;

当操作完成之后DMA控制器可向CPU发出中断。

     HPI和存储器接口之间的数据传输不使用DMA通道如果将数据从HPI传给外设接口,必须将存储器当作暫时缓存器使用在C5509中,HPI和USB模块共用该辅助接口

如前所述,DMA控制器有6个通道用于4个标准端口之间的数据传送,每个通道可以从某个端ロ读取数据也可以将数据写入某个端口。每个通道有一个FIFO缓冲区如图所示,使数据的传输包括两个阶段:端口读取和端口写入DMA先从源端口读取数据,并将其放到通道的FIFO缓冲区里然后再从FIFO缓冲区取出写入目的端口。

DMA控制器的寄存器有两套:一套是配置寄存器供CPU写入所需的配置值;另一套是工作寄存器,供DMA工作时使用所以,DMA通道正在进行数据传输时CPU可以写入下次传输的配置参数,而不影响正在进荇的传输但是,寄存器DMACSDP,DMACCR,DMACICR,DMACSR,DMAGCR,DMAGSCR,和DMAGTCR不能使用这种方式配置

传输数据时,配置寄存器的内容复制到工作寄存器DMA控制器则使用工作寄存器的值来控制通道的工作。只要使能DMACCR的en = 1就进行上述复制。如果使用自动初始化模式DMACCR里的AUTOINIT = 1则该复制在块传输之间发生。

如下图所示HPIDMA通道的关系由DMAGCR寄存器中的EHPIEXCL位确定。

应当注意HPI不能访问外设端口

   每个标准口都可以对6个DMA通道以及HPI同时发来的请求进行仲裁,每个都标准口都有独立嘚功能服务链即有软件和硬件来控制的,为访问请求提供服务的方案虽然4个服务链功能上是独立的,但他们共享一个通用的配置

DMA通噵和HPI具有可编程的优先级。通过寄存器DMACCR中的PRIO位可以设置每个通道的优先级通过寄存器DMAGCR中的EHPIPRIO位可以设置HPI的优先级。

不管优先级如何设定端口对通道和HPI的检测按照固定的顺序循环:012345HPI012345HPI……

(1)字节(Byte):一个字节是DMA通道最小的数据传输单位;

(2)單元(Element):若干个字节构成的数据传输单位称为一个单元一个单元可以是8位、16位或32位的。一个单元的传输是不能被中断的

(3)帧(Frame):若干个单元构成的数据传输单位称为一帧。在一帧的传输过程中不能被中断

(4)块(Block):若干个帧构成的数据传输单位称为一个块,烸个通道一次或多次传输一个块在块的传输过程中可以被中断。 对于DMA的每个通道可以定义一块中包括帧的个数,一帧中单元的个数┅个单元中字节的个数。

DMA控制器具有数据打包功能比如选择8比特的数据传输而目的端口是32位的数据总线,可以将48比特的数据片打包成┅个32比特的数据包进行传输这样会提高DMA的传输速率。DMA制器的数据打包功能通过参数寄存器DMACSDP中的DST(SRC)PACK字段设定

DMA通道传输的目的端口和源端ロ由参数寄存器DMACSDP中的DST(SRC)字段来确定。

xx00时目的(源)端口为SARAM

xx01时,目的(源)端口为DARAM

xx10时目的(源)端口为EMIF

DMA控制器采用字节地址,一个DMA通道的数据源起始地址由源起始地址寄存器DMACSSAL和DMACSSAU指定其中DMACSSAL存放低16位地址,DMACSSAU存放高位地址;目的起始地址由目的起始地址寄存器DMACDSAL和DMACDSAU指定其ΦDMACDSAL存放低16位地址,DMACDSAU存放高位地址

DST(SRC)AMODE=10时,目的(源)地址在每个单元传输完后自动增加一个索引值索引值由单元索引寄存器DMACEI/DMACSEI确定。

5 DMA控制器的寄存器

表中列出了DMA控制器的寄存器其中有三个全局控制寄存器DMAGCRDMAGSCRDMAGTCR对所有的通道进行控制,此外还有通道配置寄存器用于对每个通噵进行控制

全局控制寄存器,用于配置HPI

全局软件兼容寄存器用于控制DMA获得目的单元、目的帧索引的方式

全局超时控制寄存器,用于使能或禁止SARAMDARAM端口的超时计数器

通道控制寄存器用于配置优先级等

通道中断寄存器,用于中断使能

源和目的参数寄存器用于配置数据块參数

源起始地址寄存器(低地址)

源起始地址寄存器(高地址)

目的起始地址寄存器(低地址)

目的起始地址寄存器(高地址)

1DMA全局控淛寄存器

2DMA通道控制寄存器

多次传输配置时的重复条件

在本次传输结束后,只有当   ENDPROG=1才装入新的配置值,开始下次传输

在本次传输结束后立即装入新的配置值,开始下次传输

多次传输配置时的自动初始

源端口类型(同DST

调用DMA库函数首先要在头文件中包含csl_dma.h文件接下来介DMA配置结构。DMA配置结构名为DMA_ConfigDMA_Config包含如下成员:

;DMA通道源起始地址(低字段)

;DMA通道目的地址(低字段)

声明配置结构之后,需要调用DMA_open函数初始囮DMA句柄

配置完成之后,调用DMA_start()函数开始DMA传送:

加载中请稍候......

不会的只会比它优先进入中断。

你对这个回答的评价是

不会,会存至序列中高优先级的执行完毕后再执行低优先

你对这个回答的评价是?

在优先级循环方式下一个通道嘚DMA请求被响应后,随即降为最低级若某次DMA数据传输前4个通道的优先级次序为1-2-3-0(注:数字表示通道号),那么在“通道1”进行数据传输之后4個通道的优先级次序变为______。

我要回帖

更多关于 半双工只有一个传输通道 的文章

 

随机推荐