PSoC Express实施透明无代码PSoC应用开发
扫描二维码
随时随地手机看文章
PSoC作为可编程的系统级芯片(SoC),克服了SoC制设计制造周期长和成本高的缺点。其集成了微控制器以及嵌入式系统中通常位于微控制器周围的模拟及数字组件。它具有混合信号ASIC的优势,同时又无需ASIC NRE或设计完成时间。从而帮助客户节约设计时间和板上面积,降低了功耗及系统成本。
PSoC(可编程片上系统)是Cypress半导体生产的包含有8位微处理器核和数字与模拟混合信号阵列的可编程片上系统。其应用领域与8位的MCU相同。区别于8位的MCU,PSoC的周边数字资源(如定时器、PWM、UART等等)和周边模拟资源(放大器、比较器、滤波器等等)以数字模块和模拟模块的方式提供。不同型号的PSoC芯片的差异主要在于其拥有的数字模块和模拟模块的数量的不同。用户可以根据自己的需要来定义这些模块。PSoC的集成开发环境PSoC Designer也预先为用户定义了七十多个常用的数字和模拟资源供用户选择。如数字资源有:定时器、PWM、UART、SPI、CRC、PRS等等;模拟资源有放大器、比较器、滤波器等等;AD和DA转换器由若干数字模块和模拟模块组合而成。所有这些预定义的模块被称之为用户模块。PSoC Designer也为用户提供这些用户模块的API函数供用户编程时调用。在PSoC Express出现以前,开发PSoC的应用项目与MCU的应用开发相似,使用PSoC Designer集成开发环境根据项目的需要调用和配置资源(用户模块),编写代码(C或汇编),编译,调试…. 现在由于PSoC Express可以在更高的抽象概念水平上运行,且无需汇编或C的软件开发,因此设计人员只需要数小时或数天时间即可完成对PSoC器件的新设计开发、仿真及编程,而不再耗时数周乃至数月。由于其采用无缝多重处理器架构、具有设计可视化功能,包含丰富的驱动程序库和多种传输函数的*估器以及软仿真功能,因此系统开发工程师采用PSoC Express工具能够更快地完成设计工作,并实现更高的可靠性。在PSoC Express中,尤其值得提到它的Monitor功能,它使得PSoC的无代码、可视化应用开发变得透明化。对某些比较复杂的应用,需要及时调节或修改某些参数时,不会再有那种捉摸不定和黑匣子的感觉。使你的调试过程更从容、更快、更有效率。 透明化应用开发过程 使用PSoC Express的开发过程 1. 选择输入和输出 运行PSoC Express,选择Design选项夹,根据设计的需要选择相应的输入、输出和接口驱动器。如果有的话,根据要求设定驱动器的参数。 2. 定义输出的行为 根据不同的输入变化,来定义系统的输出行为。系统的输入输出的关系相对比较简单的直接使用输出驱动器的传输函数来定义输入和输出的相应关系。通过鼠标右键点击输出驱动器选择传输函数,输出驱动器提供三种传输函数:优先编码器、状态编码器和表格对应器。通过使用这三种传输函数建立起输入和输出的关系。输入输出的关系相对比较复杂的则需要使用*估器(Valuator),传输函数*估器包含6个传输函数,它们除了输出驱动器里提到的三种以外,还有环状延时(LoopDelay)、状态机和阈值(SetPointRegin)三种传输函数。选择更合适的传输函数来产生中间结果作为输出驱动器的输入。3. 仿真和验证 仿真为软仿真。它主要通过交互式的方式,移动或单击输入器件旁的图形或小窗口来改变输入的值或状态,输出驱动器和*估器的状态或数值显示图形块中的参数值随即发生相应的变化,通过观察这个变化,用户可以*估和验证他的设计是否实现他所要的结果。 4.生成系统文件及使用编程器下载十六进制编程文件到PSoC芯片 通常如果顺利的话,软件设计便大功告成。PSoC芯片的运行结果将满足设计工程师的预期。但是,如果PSoC芯片的运行结果没有满足设计工程师的预期,则他需要重新检查他的整个设计过程。有些项目需要通过仔细调节输入驱动器的某些参数,才能达到设计工程师的预期效果。早先的PSoC Express版本,由于没有提供有效的调试方法,当用户遇到诸如此类的问题时,便会有手足无措的感觉、或者仿佛感到PSoC芯片象一个黑匣子,其中间过程和中间结果不得而知。调试过程非常盲目。 现在PSoC Express 3.0版本为用户提供了Monitor功能。它使用USB到I2C的转接器将PSoC芯片和PC上的PSoC Express开发环境连接起来,在用户用PSoC Express开发项目时增加一个步骤,即第一个阶段选择输入和输出时,从接口驱动器中选择一个从的I2C驱动器加入到项目中即可。几乎所有的的PSoC 芯片都包含有I2C资源。当PSoC运行时,启动Monitor功能,就可以在PSoC Express开发环境的输出窗口中看到所有中间变量的实时数据,它可以将多个中间变量的实时数据以动态曲线的方式给出。对有些驱动器,在Monitor 的功能里,还提供调谐功能,并提供专用输入驱动器参数调节窗口,当你在这个窗口里调节某一个参数时,马上就可以看到受影响的曲线是如何变化的。通过这么一个简单的工具和PSoC Express所集成的Monitor功能,使得无代码的PSoC应用开发透明化。使得用户开发和调试项目变得更轻松而且更有趣。 透明化应用开发实施 一个用Monitor功能实施透明化应用开发的实例是用PSoC Express开发并实现触摸感应的项目。在这个项目里有一个触摸感应按键和一个由8个感应块组成的滑条。有无感应按键 和手指在滑条上的位置信息被显示在一个LCD上。PSoC Express包含有三个高级的电容感应式触摸感应输入驱动器:CSD、CSA、CSR。它仅需要一颗PSoC芯片加极少的外部无源元件就可以在一个项目中同时实现多个触摸感应按键和1或2个滑条的功能。其输入感应器仅仅是在PCB板上被连到PSoC芯片IO口上的铜箔。 1. 启动并建立一个项目 首先从输入驱动器库中选择并放置触摸感应按键和滑条驱动器并设置参数,然后从输出驱动器库中选择并放置LCD驱动器并设置参数。我们还需要从输入驱动器库中选择并放置触摸感应算法模块驱动器,这里选择CSD算法,并设置相关参数。最后从接口驱动器库中选择并放置从I2C驱动器。所有模块放置完毕,通过鼠标右键点击输出驱动器LCD并选择状态编码器传输函数来建立输入和输出之间的对应关系。如,对按键,当按键的值等于1时,LCD的第一排显示Button0,等于0时,LCD的第一排不显示。对滑条,没有手指触摸时,LCD的第二排显示0,有手指触摸时,显示手指在滑条上的位置值。一旦输入和输出之间的对应关系建立好,便有红线将对应的输入和输出连接起来。(见图一)到此,主要的设计任务已经完成。图1:从输入驱动器库中选择并放置触摸感应按键和滑条驱动器并设置参数 现在可以用软仿真来*估和验证这个设计是否符号上面的要求。如果正确,就可以通过Build来配置管脚和生成系统文件,它包括产生用于编程的十六进制代码。然后启动编程功能,将十六进制代码文件下载到PSoC芯片中。 由于触摸感应按键和滑条的灵敏度受PCB板材、印刷线路板的布线、感应铜箔的尺寸大小、覆盖物的介质和厚度等诸多因素的影响,所以对一个具体的应用需要通过反复地调节输入驱动器的参数才能找到合适的灵敏度。在此Monitor的作用被充分的体现出来。 2. 启动Monitor功能 在启动Monitor功能之前,先用USB转I2C桥将PC和应用板上的编程口连接起来。然后点击Monitor启动Monitor功能。Monitor功能被启动之后,通过点击 Power Selection,选择供电电压(5V、3.3V和外部供电),可以通过USB转I2C桥给应用板供电。一旦应用板得电,就可以在PSoC Express的输出窗口中看到滚动的数据。当从View菜单点击Variables Chart时,一个图形显示画面便显示出来。这个图形显示画面的右面列出了所有的可以看到的中间变量。当点击Play按钮时所有这些变量值以动态曲线的方式被显示出来。这些曲线不同的颜色对应不同的变量。你可以改变采样的速率,也可以将不需要看的曲线屏蔽掉。 在这个例子里,可以通过观察与感应电容相对应的RawCount的值及其他相关值的变化来调节感应键和滑条的灵敏度。比如,当手指触摸感应键时可以看到Button0_RawCount 的变化量以及Button0_RawCount相对Baseline的差值。当它太大或太小时,可以通过改变输入驱动器的参数使其有一个合适的值进而找到一个合适的灵敏度。这使得调试变得即简单又直观。(见图2)图2:通过改变输入驱动器的参数实现简单直观的调试 3. 用Tuning进行调试 对有些输入驱动器,PSoC Express在Monitor功能的基础上还增加了Tuning的功能。Tuning的作用在于不需要每次改变输入驱动器的参数后重新对整个项目进行 Build和下载代码到芯片中。它可以实施在线调试,即在线改变参数,参数改变以后立即可以看到输出结果的变化。当参数全部调好以后,最后重新对整个项目进行一次Build和下载代码到芯片里即可。图三和图四是CSD模块的感应按键和滑条的Tuning窗口界面。图3:CSD模块的感应按键和滑条的 Tuning窗口界面图4:利用Tuning窗口界面实施在线调试 它通过在Monitor状态,用鼠标右键点击相应的输入驱动器就可以打开它的Tuning窗口。从Tuning窗口中可以看到对应按键和滑条的所有参数都集中在了窗口的左面,一目了然。窗口的右面以棒图的方式显示感应按键或滑条的RawCount的值。上面的一些横线则代表噪声阈值和手指阈值以及手指阈值的正和负的迟滞等参数。对滑条,被计算出来的手指的位置用绿线表示。这种直观明了的调试方式进一步加快了调试的过程并增加了调试的乐趣。