新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于PSoC3的多通信接口时的DMA设计

基于PSoC3的多通信接口时的DMA设计

作者: 时间:2011-07-08 来源:网络 收藏

  PSoC Creator目前的版本是: PSoC Creator 1.0 Production. 该软件运行界面如下图4。

基于PSoC3的多通信接口时的DMA设计

图4 PSoC Creator 运行界面

  PSoC Creator提供给用户的设计入口如下:

  ● 原理图编辑器:该编辑器是创建设计的主要工具。支持对设计进行原理图编辑。

  ● 文本编辑器:该工具允许用户编辑C,汇编,Verilog, C#等语言代码。

  ● 设计资源编辑器:该工具用于配置整个设计的参数,包括电源,编译开关,调试开关,FLASH保护信息,以及管脚分配等。

  ● 图标编辑器:允许用户创建自己的模块图标

  ● 其他工具:

  - 原理图宏编辑器:允许用户对原理图设置不同的宏以完成不同的功能。

  - 原理图模板编辑器:允许用户对原理图的模板进行编辑

  - 图标形状编辑器:允许用户在创建模块以及原理图中使用自定义的形状。

  PSoC Creator在用户通过设计入口完成设计之后,对设计进行一系列的处理并完成最终的结果输出。该工具的对工程的构建过程如图5所示。

基于PSoC3的多通信接口时的DMA设计

图5 PSoC Creator工程构建过程

  从图5中可以看出,工程构建过程包括以下步骤:

  ·通过设计输入接口完成设计

  ·综合器完成对电路图的综合,并进行布局,布线,映射等工作

  ·代码生成器生成对应电路的API控制接口

  ·构建器准备设计源文件,读取构建数据库,获得构建配置,库文件等信息

  ·编译器完成编译,链接器对生成的文件进行链接

  ·输出配置Hex文件。

  三、 Cypress PSoC3应用于多通讯接口的设计

  是PSoC3中用于处理快速数据搬运的模块。的控制器可以在不需要CPU干预的情况下处理数据的传输。通过DMA处理数据传输可以有效地降低CPU的负担,同时也能够提高数据传输的时间。PSoC3内置的DMA可以完成四种基本的数据传输:

  ·内存到内存

  ·内存到外设

  ·外设到内存

  ·外设到外设

  PSoC3中,采用PHUB来连接各个内部设备。DMA和CPU都需要使用PHUB来完成数据传输。PHUB上的两个主设备分别是DMA和CPU,而从设备是内存,外设以及控制和配置寄存器。PSoC3支持多个DMA的通道,DMA主控制器对通道的请求按照优先级进行仲裁。单个DMA的通道可以传输高达64KB的数据。

  PSoC3的DMA控制器支持如下特性:

  ·支持24个DMA通道

  ·8优先级判决

  ·128个事务描述符

  8/16/32 位的数据传输

  ·完全可配置的源和目标地址

  ·兼容不同数端

  ·在完成数据传输之后能够生成中断

  ·DMA 向导能够加速基于DMA 的开发

  ·DMA 事务可以有可编程数字逻辑或者CPU 触发

  ·支持多个DMA 通道和描述符的级联以完成复杂的功能。

  3.1 在PSoC Creator 中使用DMA

  PSoC Creator 做为PSoC3 和PSoC5 开发的设计工具,其内部集成了DMA 模块来配置DMA 和生成相关的控制代码,同时提供的DMA 向导实现了图形化操作界面。

  DMA 模块位于组件窗口的System 目录下,如图所示。

基于PSoC3的多通信接口时的DMA设计

图6 DMA 模块位置

  通过拖曳到原理图编辑器可以放置DMA 模块,每次拖曳的DMA 会使用一个通道。DMA 模块的输入输出地址等需要在代码中进行配置,而通过原理图配置的都是控制管脚和控制信息。在原理图上DMA 模块的表现如下图7 所示。

基于PSoC3的多通信接口时的DMA设计

图7 DMA 模块

  它的输入输出的管脚共有三个。

  nrq - 输出管脚。该管教用于表征DMA的传输完成,用来通知中断控制器产生中断或者用来触发其他逻辑。当完成传输之后DMA会生成一个2个总线周期的脉冲。

  drq - 输入管脚(可选)。该管脚是可选管脚,只有在触发条件选择为硬件的时候才可见。该管脚可以连接到产生DMA事务请求的模块,触发条件可以配置成电平触发或边沿触发。

  trq - 输入管脚(可选)。该管脚是可选管脚,只有在结束条件选为硬件时才可见。该管脚触发之后,DMA会停止数据传输。

  在配置完成硬件连接以后,使用配置向导来完成对DMA的如下参数的配置:

  ·Byte Per Burst - 每次执行Burst传输传送的字节数

  ·Transaction Descriptor 的数量

  ·Endian (Big / Little)的配置

  ·传输的字节数

  ·目标地址

  ·源地址

  ·地址递增模式

  ·TD连接模式

  在PSoC Creator中打开DMA向导,选择要配置的DMA,进入第一个页面如图8所示。

基于PSoC3的多通信接口时的DMA设计

图8 DMA 向导1-配置

  该界面主要配置目标和源地址的范围。支持地址段在SRAM,FLASH,EEPROM中。其次是配置Burst的字节数以及该DMA中的事务描述符的数量和连接关系。在完成该步骤之后,会进入下个配置界面,主要配置其他的详细参数。如图9 所示。

DMA详细配置

图9 DMA详细配置

  在图9中输入事务描述符号的参数。其中最为常用而且重要的参数包括:源地址,目标地址,地址递增模式,以及事务描述符的连接模式。在完成该步骤之后,点击下一步,就会生成相应的配置代码,如图10所示。

基于PSoC3的多通信接口时的DMA设计

图10 DMA 生成代码

  复制上述代码到程序的初始化模块中,并对需要的地方进行细微的修改,就可以完成DMA的初始化。在程序运行时,DMA会根据请求自动把数据从源地址搬运到目标地址。

  3.2 DMA应用于多通讯端口实例

  DMA的数据传输可以极大提高基于PSoC3系统的吞吐率。以一个系统为例,该系统通过SPI接收别的系统的输入,并通过UART传送到主机系统中。图11给出了基于传统MCU和基于PSoC3 DMA的两种程序流程图进行比较(不考虑两种传送速率不匹配的情况)。

基于PSoC3的多通信接口时的DMA设计

图11 (a) 传统MCU设计 (b) PSoC3 DMA的设计

  传统的MCU需要初始化SPI和UART通讯模块,并配置两者的中断。当SPI的Buffer满了之后,就产生中断,中断程序首先中止新的SPI传输,然后检测UART的Buffer,如果不为空就等待旧的数据传送完。为空之后就把SPI的数据复制到TX Buffer 并打开SPI接收后续数据。

  基于PSoC3 DMA的设计中,可以基于原理图实现上述的逻辑。如图12所示。

系统逻辑图

图12 系统逻辑图

  当SPI的Full信号和UART的Empty信号同时有效的时候,触发DMA传输,把SPI Buffer中的数据传送到UART的Buffer中。不需要CPU的干预就能够完成多通讯口之间的数据共享。

  该通讯实例只是为了表明DMA在多通讯端口数据传输中的作用。在实际的实现中,DMA可以操作的通讯端口包括:

  ·USB的端点

  ·UART的Buffer

  ·SPI的Buffer

  ·I2S的Buffer

  ·其他各种自定义的通讯协议

  通过DMA可以高效的实现通讯接口之间的如下操作:

  ·各通讯端口之间的数据搬移

  ·通讯端口Buffer到PSoC3数字和模拟模块之间的传输

  ·通讯端口Buffer自动存放到内存之中

  ·内存到通讯口的数据搬移

  ·数字、模拟模块到通讯口的数据搬移

  四、 总结

  Cypress PSoC3处理器集成了多种可编程的数字模拟资源以及布线资源,以及一些专用的通讯和控制设备,可以极大地方便各种嵌入式系统的应用。PSoC Creator作为PSoC3的开发工具,能够提供基于原理图,功能组件的设计模式。使得用户能够用简单有效的方式来完成复杂的可编程系统设计。

  通讯作为嵌入式系统的重要部分,在传统设计中需要占用一定的CPU时间来处理。本文介绍的基于PSoC3的新设计方式,采用DMA高效的处理嵌入式系统通讯而不占用CPU处理时间,同时还可以基于PSoC3的灵活配置实现多路DMA并行操作以降低系统硬件成本。这种新方式能够极大地提高基于PSoC3系统的吞吐能力和系统运行效率。


上一页 1 2 下一页

关键词: 通信接口 DMA

评论


相关推荐

技术专区

关闭