微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于PSoC3的多通信接口时的DMA设计

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

时间:07-08 来源:互联网 点击:

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



图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所示。



图8 DMA 向导1-配置

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



图9 DMA详细配置

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



图10 DMA 生成代码

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

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

  DMA的数据传输可以极大提高基于PSoC3系统的吞吐率。以一个系统为例,该系统通过SPI接收别的系统的输入,并通过UART传送到主机系统中。图11给出了基于传统MCU和基于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系统的吞吐能力和系统运行效率。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top