基于PSoC3的多通讯接口时的DMA设计
扫描二维码
随时随地手机看文章
随着上层应用软件的日趋多样化,现在的便携式电子产品对嵌入式芯片的功能需求越来越高,单一或仅可以局部定制的传统芯片已经不能满足需要。因此数字系统和模拟系统都可以根据需要灵活定制成为芯片设计、开发的发展方向。Cypress为满足业界需要继PSoC1之后开发了PSoC3和PSoC5全新可编程模拟和数字嵌入式芯片。其中PSoC3使用基于单循环流水线的高性能8051内核(67MHz/33MIPS),PSoC5则是基于32位ARM Cortex-M3的内核(80MHz/100MIPS);两者都内置闪存、SRAM,支持片外存储器访问,在8、16和32bit应用中同时实现了高集成度和高灵活性。本文重点讲述了PSoC3在多通讯接口设计中的应用,以及如何使用多DMA技术提高通讯的速度和效率。
一、 Cypress PSoC3芯片介绍
Cypress PSoC3使用基于单循环流水线的高性能8051内核 (67MHz/33MIPS),提供业界广泛采用的5.5V至0.5V电压范围和低至200nA的休眠电流,可以满足极低功耗的应用场合。PSoC3的高性能模拟子系统和数字系统都拥有可编程通路,允许将任何模拟或数字信号(包括可编程时钟)分配到任何通用I/O引脚,这为使用者提供了真正的“系统级”可编程能力。
Cypress PSoC3的芯片编号是CY8C38xx,该系列芯片依据功能模块的不同包含多种芯片。表1是CY8C38xx系列的选型指南,除了表中列出的特性外,每个CY8C38xx芯片还包含:1.024V±0.1%的精密片上电压参考源,带PLL的1~66MHz±1%的精密可编程时钟源,有ECC(错误校正码)功能的Flash,DMA(直接存储器访问),4KB可调试跟踪的RAM,JTAG/SWD编程/调试接口,支持片外存储器访问等。
Cypress PSoC3 内部采用CPLD的结构实现了完全的数字可编程电路。图1显示了CY8C38xx系列内部的可编程逻辑图。从图1中可以看出,外设和逻辑部分可以彼此互联,也可以连接到任何引脚。数字可编程逻辑包括了以下部分。
UDB(Universal Digital Blocks)形成了可编程数字系统的核心功能,由PLD和Data path组成,可以创建各种通用外设和定制化功能。
UDB Array由多个UDB通过矩阵和可编程互联组成,支持UDB和DSI(Digital System Interconnect)之间很灵活的扩展。
DSI是数字信号的集中互联,包括UDB,固定功能外设,I/O,中断,DMA和其它部分的数字信号。
强大的模拟资源以及灵活的模拟布线资源也是PSoC3的一大亮点之一。图2是CY8C38系列芯片的片内模拟资源图,通过这些可编程的模拟电路,可以构成标准的模拟信号处理模块。并且这些模拟资源可以通过内部的模拟互连子系统进行连接,提供高度的模拟设计自由度以及IP资源的保护。模拟子系统有以下系统构成。
·有模拟全局和局部总线,模拟开关构成的高度可配置的结构。
·高精度的Delta-Sigma ADC.
·支持8位的电压或者电流DAC.
·四路比较器并且可以有选择性的互联到LUT中.
·多达四个的SC/CT模块可以构成OPAMP等模拟电路
·多达四个内部的OPAMP,可以连接到GPIO作为大电流输出的缓冲器。
·CapSense子系统支持电容触摸的检测。
·内部高精度参考电压源。
图1 CY8C38系列芯片的片内可编程数字系统图
表1 PSoC3 选型指南
图2 PSoC3 内部模拟资源图
除了模拟和数字可编程逻辑外,CY8C38 系列芯片都包含了一个专用于数字滤波的硬件加速器DFB(Digital Filter Block),它内部的专用乘法器和加速器可以在一个系统时钟内计算一个24 位数与24 位数的乘法。使用DFB 可以方便的实现FIR 和IIR 数字滤波器,而且几乎不占用MCU 的资源。在实现滤波器之外,DFB 还可以作为PSoC3 的算法加速器,可以很方便快捷的实现各种数字算法,而且不需要占用PSoC3 的CPU 资源。
图3 是DFB 的模块框图,典型应用是将某个片内数据源(例如ADC 或某个DMA)的数据连接到DFB,经DFB 处理后将结果输出到另一个片内数据源(例如DAC 或另一个DMA)。数据的移入和移出可以设定由特定的DMA 控制,也可以由MCU 直接移动。
图3 DFB 结构图
除了可编程的资源之外,PSoC3内部还提供了特定功能的模块。这些模块可以不占用模拟,数字可编程以及MCU资源,完成相应的功能。这些模块包括:
·支持高达1MBPS的Can总线控制器,兼容ISO-11898-1标准。
·全速USB2.0控制器,支持8个端点和DMA数据传输控制。
·支持50k/100k/400k/1M BPS的I2C主/从总线控制器,兼容Philips ‘The I2C Specification’ Version 2.1。
·16 Bit专用的定时,计数和PWM等常用的嵌入式系统模块。
二、 Cypress PSoC®Creator™ 集成开发环境
Cypress PSoC Creator 开发环境是Cypress 为PSoC3 / PSoC5可编程片上系统提供的高效,易用的继承开发环境。
该独特的新型设计软件使得工程师能够按照自己的思维方式进行设计。使用基于电路图的方式完成对可编程模拟,数字以及布线资源的设计。该软件还提供了特有的嵌入式系统的组件库来应用其内部的资源,通过在组件库中选择组件并使用基于电路图的方式可以使得整个开发过程就像搭积木一样,简单高效的实现工程师的设计。该软件工具通过电路综合可以自动的把用户的设计转化成对可编程电路的配置,使得用户即使不了解芯片的细节也可以完成复杂的电路设计。使用PSoC Creator进行设计的时候,客户是根据应用需求急性设计,而不是目标器件的限制。重新构建设计就像修改程序一样,不需要复杂的电路板级修改。
PSoC Creator将一个最新的软件开发IDE与一个*性的图形设计编辑器结合在一起,构成一个独特的强有力的软硬件同步设计环境。它提供内容丰富的、存有几十个预先配置过的模拟和数字外设库,可以方便地拖放进电路图设计界面并组成强大的系统。该工具还可以自动为所有片上信号分配管脚,如有需要,甚至还能将I/O分配到最佳管脚。每个外设元件的参数均经过仔细的配置,以保证应用效果能最好地满足设计者的要求,且没有资源浪费。构建过程会为每一个元件产生一个一致的、容易记住的API系列,这样,软件开发者即可控制硬件,而无需为基本执行指令操心。 定制的设计及其相关的API还可以方便地存储在库中,用于将来的项目或在组织内部分享。
PSoC Creator内部包含了全功能免费的编译器,其独特的综合布线工具能够自动综合客户的设计输入,并生成相应的API。PSoC3的工程采用了工业界常用的Keil CA51编译器,而GNU GCC-ARM编译器也包含其中,能够针对PSoC5的设计进行编译。在综合,编译等完成之后,生成兼容Intel Hex格式的配置文件对芯片进行配置。
PSoC Creator目前的版本是: PSoC Creator 1.0 Production. 该软件运行界面如下图4。
图4 PSoC Creator 运行界面
PSoC Creator提供给用户的设计入口如下:
● 原理图编辑器:该编辑器是创建设计的主要工具。支持对设计进行原理图编辑。
● 文本编辑器:该工具允许用户编辑C,汇编,Verilog, C#等语言代码。
● 设计资源编辑器:该工具用于配置整个设计的参数,包括电源,编译开关,调试开关,FLASH保护信息,以及管脚分配等。
● 图标编辑器:允许用户创建自己的模块图标
● 其他工具:
- 原理图宏编辑器:允许用户对原理图设置不同的宏以完成不同的功能。
- 原理图模板编辑器:允许用户对原理图的模板进行编辑
- 图标形状编辑器:允许用户在创建模块以及原理图中使用自定义的形状。
PSoC Creator在用户通过设计入口完成设计之后,对设计进行一系列的处理并完成最终的结果输出。该工具的对工程的构建过程如图5所示。
图5 PSoC Creator工程构建过程
从图5中可以看出,工程构建过程包括以下步骤:
·通过设计输入接口完成设计
·综合器完成对电路图的综合,并进行布局,布线,映射等工作
·代码生成器生成对应电路的API控制接口
·构建器准备设计源文件,读取构建数据库,获得构建配置,库文件等信息
·编译器完成编译,链接器对生成的文件进行链接
·输出配置Hex文件。
三、 Cypress PSoC3应用于多通讯接口的DMA设计
DMA是PSoC3中用于处理快速数据搬运的模块。DMA的控制器可以在不需要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 目录下,如图所示。
图6 DMA 模块位置
通过拖曳到原理图编辑器可以放置DMA 模块,每次拖曳的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系统的吞吐能力和系统运行效率。