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 和 Datapath 组成,可以创建各种通用外设和定制化功能。UDB Array 由多个 UDB 通过矩阵和可编程互联组成,支持 UDB 和 DSI(Digital SystemInterconnect)之间很灵活的扩展。DSI 是数字信号的集中互联,包括 UDB,固定功能外设,I/O,中断,DMA 和其它部分的数字信号。强大的模拟资源以及灵活的模拟布线资源也是 PSoC3 的一大亮点之一。图 2 是 CY8C38 系列芯片的片内模拟资源图,通过这些可编程的模拟电路,可以构成标准的模拟信号处理模块。并且这些模拟资源可以通过内部的模拟互连子系统进行连接,提供高度的模拟设计自由度以及 IP 资源的保护。模拟子系统有以下系统构成。·有模拟全局和局部总线,模拟开关构成的高度可配置的结构。·高精度的 Delta-Sigma ADC.·支持 8 位的电压或者电流 DAC.·四路比较器并且可以有选择性的互联到 LUT 中.·多达四个的 SC/CT 模块可以构成 OPAMP 等模拟电路·多达四个内部的 OPAMP,可以连接到 GPIO 作为大电流输出的缓冲器。·CapSense 子系统支持电容触摸的检测。·内部高精度参考电压源。除了模拟和数字可编程逻辑外,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 直接移动。除了可编程的资源之外,PSoC3 内部还提供了特定功能的模块。这些模块可以不占用模拟,数字可编程以及 MCU 资源,完成相应的功能。这些模块包括:·支持高达 1MBPS 的 Can 总线控制器,兼容 ISO-11898-1 标准。·全速 USB2.0 控制器,支持 8 个端点和 DMA 数据传输控制。·支 持 50k/100k/400k/1M BPS 的 I2C 主/从总线控制器,兼容 Philips ‘The I2CSpecification’ 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。PSoC Creator 提供给用户的设计入口如下:原理图编辑器:该编辑器是创建设计的主要工具。支持对设计进行原理图编辑。文本编辑器:该工具允许用户编辑 C,汇编,Verilog, C#等语言代码。设计资源编辑器:该工具用于配置整个设计的参数,包括电源,编译开关,调试开关,Flash 保护信息,以及管脚分配等。图标编辑器:允许用户创建自己的模块图标其他工具:- 原理图宏编辑器:允许用户对原理图设置不同的宏以完成不同的功能。- 原理图模板编辑器:允许用户对原理图的模板进行编辑- 图标形状编辑器:允许用户在创建模块以及原理图中使用自定义的形状。PSoC Creator 在用户通过设计入口完成设计之后,对设计进行一系列的处理并完成最终的结果输出。该工具的对工程的构建过程如图 5 所示。从图 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 目录下,如图所示。通过拖曳到原理图编辑器可以放置 DMA 模块,每次拖曳的 DMA 会使用一个通道。DMA 模块的输入输出地址等需要在代码中进行配置,而通过原理图配置的都是控制管脚和控制信息。在原理图上 DMA 模块的表现如下图 7 所示。它的输入输出的管脚共有三个。 nrq – 输出管脚。该管教用于表征 DMA 的传输完成,用来通知中断控制器产生中断或者用来触发其他逻辑。当完成传输之后 DMA 会生成一个 2 个总线周期的脉冲。 drq – 输入管脚(可选)。该管脚是可选管脚,只有在触发条件选择为硬件的时候才可见。该管脚可以连接到产生 DMA 事务请求的模块,触发条件可以配置成电平触发或边沿触发。 trq – 输入管脚(可选)。该管脚是可选管脚,只有在结束条件选为硬件时才可见。该管脚触发之后,DMA 会停止数据传输。 在配置完成硬件连接以后,使用配置向导来完成对 DMA 的如下参数的配置:·Byte Per Burst – 每次执行 Burst 传输传送的字节数·Transaction Descriptor 的数量·Endian (Big / Little)的配置·传输的字节数·目标地址·源地址·地址递增模式·TD 连接模式在 PSoC Creator 中打开 DMA 向导,选择要配置的 DMA,进入第一个页面如图 8 所示。该界面主要配置目标和源地址的范围。支持地址段在 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 所示。当 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 的开发工具,能够提供基于原理图,功能组件的设计模式。使得用户能够用简单有效的方式来完成复杂的可编程系统设计。