PSoCCreator软件及设计流程.ppt

上传人:牧羊曲112 文档编号:6515979 上传时间:2023-11-08 格式:PPT 页数:82 大小:998KB
返回 下载 相关 举报
PSoCCreator软件及设计流程.ppt_第1页
第1页 / 共82页
PSoCCreator软件及设计流程.ppt_第2页
第2页 / 共82页
PSoCCreator软件及设计流程.ppt_第3页
第3页 / 共82页
PSoCCreator软件及设计流程.ppt_第4页
第4页 / 共82页
PSoCCreator软件及设计流程.ppt_第5页
第5页 / 共82页
点击查看更多>>
资源描述

《PSoCCreator软件及设计流程.ppt》由会员分享,可在线阅读,更多相关《PSoCCreator软件及设计流程.ppt(82页珍藏版)》请在三一办公上搜索。

1、第8章 PSoC Creator软件及设计流程Chapter 8 PSoC Creator Software&Design Proess,何宾2010.10,PSoC Creator软件及设计流程-前言,本章主要介绍PSoC Creator软件及设计流程,其内容主要包括:基于PSoC3工程的简单流程;基于PSoC5工程的简单流程;基于PLD的自定义元件设计流程。,PSoC Creator软件及设计流程-PSoC Creator的主要功能,PSoC Creator 是最先进的集成开发环境(Integrated Development Environment,IDE),带有创新性的图形设计编辑器,

2、构成独特而强大的硬件/软件协同设计环境。图形化的设计入口简化了配置一个特殊元件的任务。设计者可以从元件库内选择所要求的功能,并且将其放置在设计中。所有的参数化元件都有一个编辑器对话框,允许设计者根据需要对功能进行裁减(定制)。,PSoC Creator软件及设计流程-PSoC Creator的主要功能,PSoC Creator软件平台自动的配置和布线I/O到所选择的引脚,并且为给定的应用产生应用程序接口函数API,通过这些接口函数对硬件进行控制。修改PSoC的配置是非常简单的,比如添加一个新元件,设置它的参数和重新建立(rebuilding)工程等。,PSoC Creator软件及设计流程-P

3、SoC Creator的主要功能,在开发的任何阶段,设计人员都能很自由的修改硬件配置,甚至是目标处理器。设计者可以将应用修改到新的目标上(硬件和软件),甚至是从8位平台移植到32位平台上(只需要选择新的设备,并进行重新的建立)。设计者也可以修改C编译器和进行性能评估。下图给出了PSoC Creator软件的主界面。,PSoC Creator软件及设计流程-PSoC Creator的主要功能,图 PSoC Creator软件平台主界面,PSoC Creator软件及设计流程-PSoC Creator的主要功能,PSoC Creator软件平台的特点主要有:集成了原理图捕获功能用于设备配置;可供选

4、择的丰富的元件IP核资源;集成了源代码编辑器;内置调试器;支持自定义元件创建(设计重用)功能;PSoC 3 编译器-Keil CA51(无代码大小限制);PSoC 5 编译器-CodeSourcery 的 Sourcery G Lite 版本,PSoC Creator软件及设计流程-PSoC Creator的主要功能,主界面的后侧是元件的库的分类列表,库中的元件用于满足设计者的不同要求。主界面的右侧是元件的库的分类列表,库中的元件用于满足设计者的不同要求。元件的范围从最简单的元件,比如逻辑门和寄存器,到数字定时器,计数器和PWM,其它模拟元件,比如:ADC,DAC,滤波器和各种通信协议,比如:

5、I2C,USB,CAN等。,PSoC Creator软件及设计流程-PSoC Creator的主要功能,符号编辑器使设计者能开发可重用的元件,这样可以显著的减少将来的设计时间。编辑器仅仅画一个符号和相关的设计关联符号。PSoC Creator允许放置新的符号。设计者可以在任何时间和任何工程中“重用”自己的设计(不需要知道实现的具体细节)。锚定工具(Anchoring tool)是一个现代的,高级可定值的用户接口。它包含一个项目管理器和用于源代码的集成C编辑器和汇编器,以及设计入口工具。,PSoC3/5基本编程模型-位变量的使用,使用bit关键字声明位操作。下面给出C语言对位的声明和操作:bit

6、 myVar;myVar=myVar;if(!myVar).,PSoC3/5基本编程模型-位变量的使用,此外,为了保证代码容易移植到PSoC5上,可以使用CYBIT关键字替换bit关键字。例如:CYBIT myVar;PSoC Creator软件工具中提供了完整的宏定义集,用来将PSoC3的代码移植到PSoC5上。更详细的说明,请参考cyboot文件夹中自动生成的文件cytypes.h。,PSoC3/5基本编程模型-避免从中断句柄调用函数,当编译用于中断服务程序ISR的C代码时,Keil编译器将试图认为在ISR中可能修改的寄存器入栈操作。如果ISR包含一个函数调用,编译器并不知道函数调用将修改

7、哪个寄存器,这样就会将所有寄存器内容入栈。比如:改函数调用:,PSoC3/5基本编程模型-避免从中断句柄调用函数,CY_ISR(myISR)UART_1_ReadRxStatus();为:CYBIT flag;CY_ISR(myISR)flag=1;,PSoC3/5基本编程模型-避免从中断句柄调用函数,void main()/*等待ISR设置flag标志 if(flag)flag=0;UART_1_ReadRxStatus();.,PSoC3/5基本编程模型-将变量放在合适的存储空间,当变量放在8051内部的存储空间时,具有最好的CPU访问效率,根据访问效率,定义变量类型的顺序依次为:data

8、,idata,pdata和xdata.由于堆栈空间有限,Keil编译器不在堆栈中保存本地变量,而是将其保存在固定的存储空间,并且和其它函数调用的变量共享存储空间。,PSoC3/5基本编程模型-将变量放在合适的存储空间,此外,尽量使循环变量递减而不是递增操作,这是由于测试等于0操作比测试等于常数的操作要快。比如使用下面的代码:void main()data uint8 i;/*循环10次*/for(i=10;i!=0;i-).,PSoC3/5基本编程模型-将变量放在合适的存储空间,在C代码中,为了测试某些位,经常使用下面的代码风格:uint8 x;x|=0 x10;/*set bit 4*/x/

9、*toggle bit 4*/if(x&0 x10)/*test bit 4*/.,PSoC3/5基本编程模型-将变量放在合适的存储空间,使用8051比特级的汇编指令,实现C中的按位操作,使用sbit关键字和特殊的操作符(不是C语言中的按位操作)。通过下面两种方式实现:1)将变量放到位可寻址的区域20-2F,使用bdata 关键字。然后用sbit和定义感兴趣的比特位。,PSoC3/5基本编程模型-将变量放在合适的存储空间,/*This places myVar in the 8051*internal data space,in 202F.*/bdata uint8 myVar;/*放置myV

10、ar到8051内部空间20-2F sbit mybit4=myVar4;/*myVar变量的第4位*/mybit4=1;/*设置myVar 变量的第4位*/mybit4=0;/*清除myVar变量的第4位*/mybit4=mybit4;/*切换myVar的第4位*/if(mybit4)/*测试myVar的第4位*/.这个方法也可以对32和16位变量其中的某些位进行操作。注意bdata和sbit定义为全局的,而不是本地的。,PSoC3/5基本编程模型-将变量放在合适的存储空间,2)将所感兴趣的比特位暂时放到感兴趣的SFR中。查看cy_boot文件夹下由PSoC Creator生成的PSoC3_8

11、051.h文件。了解sbit和sfr关键字用于支持位访问的SFR。sfr PSW=0 xD0;sbit P=PSW0;sbit F1=PSW1;sbit OV=PSW2;sbit RS0=PSW3;sbit RS1=PSW4;sbit F0=PSW5;sbit AC=PSW6;sbit CY=PSW7;,PSoC3/5基本编程模型-使用B寄存器用于暂存数据,在8051结构中,B寄存器用来方便汇编指令MUL和DIV的操作。除此以外,它只是一个辅助的寄存器。下面给出使用B寄存器实现两个8位变量的交换:uint8 x,y;B=x;x=y;y=B;,PSoC3/5基本编程模型-编写汇编代码的方法,1创

12、建一个单独的汇编源文件 1)在PSoC Creator主界面的Project Explorer子窗口下,用鼠标右键点击工程名字,并选择“Add new item”。2)选择“8051 Keil Assemby Assembly File”,然后输入文件名。3)将创建一个汇编文件,该文件在整个工程中的扩展名为.a51。4)在文件中添加汇编代码;5)可以在主界面的主菜单下选择Helpdocumentation KeilAX51 Assembler User Guide for help on instruction,template等。查看相关的汇编语言指令。,PSoC3/5基本编程模型-编写汇编

13、代码的方法,2在C文件中使用内嵌汇编代码 1)在C源文件中,将汇编代码写在指令“#pragma asm”和“Pragma endasm”中间。2)在主界面下的Project Explorer子窗口下,鼠标右键点击源文件,出现Build Settings界面。3)在Compiler选项界面下,将Inline Assembly设置为True,即使能在C文件中内嵌汇编语言。,PSoC3/5基本编程模型-PSoC3中断编程模型(设置全局中断),1)使用PSoC Creator软件中CyLib.h文件中提供的 CYGlobalIntEnable 宏定义来全局中断使能功能。2)使用PSoC Creator

14、软件中CyLib.h文件中提供的 CYGlobalIntDisable 宏定义来禁止中断使能功能。使用宏定义,将来可以很方便的进行代码的移植。,PSoC3/5基本编程模型-PSoC3中断编程模型(定制中断服务程序),可以在main.c或者其它.c文件中编写中断服务程序。用设计中具体使用的中断元件的例化名字代替下面程序中的isr_1名字(isr_1为默认的中断原件例化名字)。可以在希望编写定制中断服务程序的地方编写自己的中断服务程序,使用下面的方式定义:CY_ISR(MyOwn_Interrupt)/*以下为定制的中断服务程序代码*/.,PSoC3/5基本编程模型-PSoC3中断编程模型,并使用

15、isr_1_StartEx或者isr_1_SetVector API函数来更新中断向量表(根据具体设计将isr_1名字修改为具体的中断元件的例化名字)。main()-/*主程序代码*/-/*修改向量地址到定制的中断服务程序MyOwn_Interrupt,然后从cydwr文件中修改优先级,然后使能中断*/isr_1_StartEx(MyOwn_Interrupt);-,PSoC3/5基本编程模型-PSoC3中代码重入,若一个程序或子程序可以安全的被并行执行,则称其为可重入(reentrant或re-entrant)的;即,当该子程序正在运行时,可以再次进入并执行它。若一个函数是可重入的,则该函数

16、:不能含有静态(全局)非常量数据。不能返回静态(全局)非常量数据的地址。只能处理由调用者提供的数据。不能依赖于单实例模式资源的锁。不能调用不可重入的函数。多用户/对象/进程优先级以及多进程一般会使得对可重入代码的控制变得复杂。同时,IO代码通常不是可重入的,因为他们依赖于像磁盘这样共享的、单独的资源。,PSoC3/5基本编程模型-PSoC3中代码重入,需要代码重入,在函数声明和函数定义的名字后面添加 CYPEENTRANT宏定义声明,比如:uint8 increment(uint8)CYREENTRANT;uint8 increment(uint8 value)CYREENTRANT uint

17、8 iCount1;uint32 iDelay1;value+;for(iCount1=0;iCount12;iCount1+)for(iDelay1=0;iDelay165000;iDelay1+)关于这部分更详细的内容参考Cypress提供的应用文档AN54460Interrupt Handling in PSoC3和相关的例子。,PSoC3/5基本编程模型-PSoC3/5 DMA编程模型,PSoC内的控制器完成下面的数据传输:存储器到存储器存储器到外设外设到存储器外设到外设 关于DMA控制器更详细的信息,在本书前面章节已经进行了详细的说明。,PSoC3/5 DMA编程模型-DMA应用程序

18、API接口函数,PSoC3/5 DMA编程模型-DMA配置向导,当设计中添加DMA控制器元件后,可以使用PSoC Creator的DMA向导完成对DMA通道的相关参数配置。DMA配置向导是一个图形化的配置界面,使得设计者能实现DMA和TD配置选择,而不需要知道底层的API。当完成DMA和TD配置后,向导产生API能被复制到工程中,其方法是:在PSoC Creator软件主界面下的主菜单下选择Tools-DMA Wiazrd,打开配置向导对DMA通道进行参数配置。在配置向导结束后,将配置向导生成的DMA配置API函数模板,复制并粘贴到main.c文件或者希望的.c文件中。,PSoC3/5 DMA

19、编程模型-DMA配置向导,注:选中配置向导中的参数TERMOUT时,数据传输完成后,TD在DMA的NRQ触发一个脉冲。这个脉冲触发其它元件,比如:其它中断DMA、中断等。关于DMA配置向导更详细的使用可以参考Cypress公司提供的AN52705Using DMA on PSoc3/PSoC5应用文档。,PSoC Creator软件及设计流程-基于PSoC3工程的简单设计流程,本工程使用PSoC3内的PWM可编程外设来控制两个不同的LCD灯的闪烁频率。,基于PSoC3工程的简单设计流程-加载PSoC3工程,加载PSoC3工程的步骤包括:1打开PSoC Creator软件;2如下图,在Start

20、 Page页面中的Start Page Topic下面展开Kits and Solutions。,图 Kit and Solution界面,基于PSoC3工程的简单设计流程-加载PSoC3工程,3在Kits and Solutions下,展开PSoC CY8C38 Family Processor Module Kit。4点击Ex1_LED_with_PWM.cywrk打开工程。5选择保存工程的路径;6工程打开后,如下图所示,可以在Workspce Explorer下面 看到打开的工程。,图 Workspace Explorer界面,基于PSoC3工程的简单设计流程-建立PSoC3工程,1如下

21、图所示,在PSoC Creator的主界面下选择Build-Build Ex1_LED_with_PWM。,图 Build窗口界面,基于PSoC3工程的简单设计流程-建立PSoC3工程,2PSoC Creator建立工程,如下图,并且在Output窗口显示建立过程的信息。当output窗口显示“Build Successed”信息后,就可以准备编程了(注意其编译器为DP8051-Keil)。,图 Output 窗口界面,基于PSoC3工程的简单设计流程-编程PSoC3工程,下面给出将程序下载到CY8C38开发板上的步骤,这些步骤包括:1连接MiniProg3到CY8C38的开发板上。2在PSo

22、C Creator主菜单下选择Tools-Options,打开Options窗口。3如下图所示,选择Programmer/Debugger,并展开该选项,然后选择MiniProg3。进行如下设置:,基于PSoC3工程的简单设计流程-编程PSoC3工程,图 MiniProg参数设置界面,基于PSoC3工程的简单设计流程-编程PSoC3工程,设置Applied Voltage:3.3V;设置Transfer Mode:SWD;设置Active Port:10 Pin;设置Acquire Mode:Reset;设置Debug Clock Speed:3.2MHz;点击“OK”按钮。4在PSoC Cr

23、eator主菜单下选择Debug-Select Debug Target。出现如下图所示的界面。,基于PSoC3工程的简单设计流程-编程PSoC3工程,图 Select Debug Target界面,基于PSoC3工程的简单设计流程-编程PSoC3工程,5在PSoC Creator主界面下选择Debug-Program,在PSoC Creator输出窗口显示如下图所示的信息,表示正在编程和编程成功的信息。6一直等待编程成功为止。,图 编程Flash信息,基于PSoC3工程的简单设计流程-运行PSoC3工程并调试,1在提供的CYPRESS开发套件上,用导线将面包板旁的P16接口连接到LED1;将

24、面包板旁的P17接口连接到LED2;2给板子再次上电,观察LED等的闪烁频率。3如下图所示,按键F9,在此行设置断点,并按键F5,让程序运行。观察灯的变化情况。,基于PSoC3工程的简单设计流程-运行PSoC3工程并调试,图 断点调试界面,PSoC Creator软件及设计流程-基于PSoC5工程的简单设计流程,本工程使用PSoC5内的PWM可编程外设来控制两个不同的LCD灯的闪烁频率。,基于PSoC5工程的简单设计流程-加载PSoC5工程,1打开PSoC Creator软件;2如下图,在Start Page页面中的Start Page Topic下面展开Kits and Solutions。

25、3在Kits and Solutions下,展开PSoC CY8C55 Family Processor Module Kit。4点击Ex1_LED_with_PWM.cywrk打开工程。,基于PSoC5工程的简单设计流程-加载PSoC5工程,图 Kit and Solution界面,基于PSoC5工程的简单设计流程-加载PSoC5工程,5选择保存工程的路径;6工程打开后,如下图所示,可以在Workspce Explorer下面看到打开的工程。,图 Workspace Explorer界面,基于PSoC5工程的简单设计流程-建立PSoC5工程,1如下图所示,在PSoC Creator的主界面下

26、选择Build-Build Ex1_LED_with_PWM。,图 Build窗口界面,基于PSoC5工程的简单设计流程-建立PSoC5工程,2PSoC Creator建立工程,如下图,并且在Output窗口显示建立过程的信息。当output窗口显示“Build Successed”信息后,就可以准备编程了(注意其编译器为ARM CM3-GCC 4.2.1)。,基于PSoC5工程的简单设计流程-建立PSoC5工程,图 Output 窗口界面,基于PSoC5工程的简单设计流程-编程PSoC5工程,下面给出将程序下载到CY8C55开发板上的步骤,这些步骤包括:1连接MiniProg3到CY8C55

27、的开发板上。2在PSoC Creator主菜单下选择Tools-Options,打开Options窗口。3如下图所示,选择Programmer/Debugger,并展开该选项,然后选择MiniProg3。进行如下设置:,基于PSoC5工程的简单设计流程-编程PSoC5工程,图 MiniProg参数设置界面,基于PSoC5工程的简单设计流程-编程PSoC5工程,设置Applied Voltage:3.3V;设置Transfer Mode:SWD;设置Active Port:10 Pin;设置Acquire Mode:Reset;设置Debug Clock Speed:3.2MHz;点击“OK”按

28、钮。4在PSoC Creator主菜单下选择Debug-Select Debug Target。出现如下图所示的界面。,基于PSoC5工程的简单设计流程-编程PSoC5工程,图 Select Debug Target界面,基于PSoC5工程的简单设计流程-编程PSoC5工程,5在PSoC Creator主界面下选择Debug-Program,在PSoC Creator输出窗口显示如下图所示的信息,表示正在编程和编程成功的信息。6一直等待编程成功为止,图 编程Flash信息,。,基于PSoC5工程的简单设计流程-运行PSoC5工程并调试,1在开发板上,用导线将面包板旁的P16接口连接到LED1;

29、将面包板旁的P17接口连接到LED2;2给板子再次上电,观察LED等的闪烁频率。3如下图所示,按键F9,在此行设置断点,并按键F5,让程序运行。观察灯的变化情况。,基于PSoC5工程的简单设计流程-运行PSoC5工程并调试,图 断点调试界面,基于PSoC5工程的简单设计流程-基于PLD的自定义元件设计流程,自定义元件是PSoC Creator所提供了一个非常强大的功能,设计人员可以充分利用软件强大的自定义元件功能实现特定元件的设计和复用。下面将通过一个设计详细的介绍自定义元件的设计流程,并进行验证。,基于PSoC5工程的简单设计流程-基于PLD的自定义元件设计流程,该工程将使用基于Verilo

30、g HDL设计Count4ByN带有异步复位的递增计数器元件。该元件的接口包括:2个输入信号:clock,reset;4个输出信号:Count3:0;参数N(规定了每个始终计数器递增N);,基于PLD的自定义元件设计流程-建立工程,下面给出建立PSoC工程的步骤,其步骤包括:1打开PSoC Creator软件;2如下图所示,在主菜单下选择File-New-Project,图 新建工程选项,基于PLD的自定义元件设计流程-建立工程,3如下图所示,在Name域内输入counter,并确定该工程的路径。,然后点击“OK”按钮。,图 创建新工程界面,基于PLD的自定义元件设计流程-添加自定义元件,1如

31、下图(a)所示,并切换标签栏到Components,出现下图(b)的界面。,基于PLD的自定义元件设计流程-添加自定义元件,2在上图(b)界面下,选中Projectcounter,并点击鼠标右键,出现下图的界面,选择Add Component Item选项。,图 选择Add Component Item.选项,基于PLD的自定义元件设计流程-添加自定义元件,3出现如下图的界面,选择“Symbol Wizard”选项,并在Component Name域中输入:counter4b。并点击“Create New”按钮。,基于PLD的自定义元件设计流程-添加自定义元件,5出现下图的界面,并按照该界面分

32、别输入reset,clock,和count 3:0名字及其相关参数,点击“OK”按钮。,图 Symbol Creation Wizard,基于PLD的自定义元件设计流程-添加自定义元件,6出现左图界面,并在该界面,点击鼠标右键,出现右图界面,选择Symbol Parameters。,图 选择Symbol Parameters选项,图 创建的符号,基于PLD的自定义元件设计流程-添加自定义元件,7出现下图的界面,输入N参数,类型为int,Value为1。在Misc栏中选择Description,,图 Parameters Definition界面,基于PLD的自定义元件设计流程-添加自定义元件,

33、出现下图的界面,并输入描述语句“Amount to increment count by one each clock”。点击“OK”按钮,返回上图的界面。,图 Text Editor界面,基于PLD的自定义元件设计流程-添加自定义元件,修改Hardware设置为:True;修改Validators设置。8出现下图的界面,输入条件,即当N超过该范围时,会报错。点击“Ok”按钮。回到前面图界面,并点击“OK”按钮,退出该界面。,基于PLD的自定义元件设计流程-添加自定义元件,图 Parameter Validators界面,基于PLD的自定义元件设计流程-添加自定义元件,8图界面下,选择“Gen

34、erate Verilog”选项,打开counter4b.v文件。在该文件中进行代码添加。,图 选择Symbol Parameters选项,基于PLD的自定义元件设计流程-添加自定义元件,9如下图界面,添加Verilog代码。,图 添加Verilog代码,基于PLD的自定义元件设计流程-调用自定义元件,当自定义元件设计完成后,就可以调用该元件,并进行验证。下面给出调用该元件的步骤:1如右图所示,在Workspace窗口下,选择Source标签,并点击“TopDesign.cysch”选项,打开原理图编辑窗口。,图 选择”TopDesign.cysch”,基于PLD的自定义元件设计流程-调用自定

35、义元件,2在Component Catalog下选择“Default”标签。如右图展开选项,选择Counter4b,在该界面的下部出现Counter4b的符号,用鼠标将其拖入原理图编辑界面。,图 调用自定义元件,基于PLD的自定义元件设计流程-调用自定义元件,3如下图所示,从Logic库中调用“Not”元件到原理图编辑界面;从Ports and Pins库中调用“Digital Input Pin”元件到原理图编辑界面。,图 调用各种元件,基于PLD的自定义元件设计流程-调用自定义元件,4鼠标双击Pin_1引脚,如下图打开配置界面对其进行配置。Name:ResetN;选择“General”选项

36、,Drive Mode选择“Resistive Pull Up”选项,并点击“OK”按钮,退出配置选项界面。,图 Pin_1引脚配置界面,基于PLD的自定义元件设计流程-调用自定义元件,5。如下图,从System库中选择“Clock”元件,并拖入原理图界面。双击“Clock”符号,打开其配置界面。,图 原理图界面,基于PLD的自定义元件设计流程-调用自定义元件,6如下图,在时钟配置界面内,将时钟频率改为1Hz。不选中“Tolerence”选项,点击“OK”,退出配置选项界面。,图 时钟的配置界面,基于PLD的自定义元件设计流程-调用自定义元件,7从Ports and Pins库中调用“Digi

37、tal Output Pin”元件到原理图编辑界面。用鼠标双击该引脚符号,打开配置界面。8将引脚名字改为“Count”,Number of Pin改为“4”,在Mapping标签中选中“Display as Bus”,点击“OK”按钮,退出该界面。,基于PLD的自定义元件设计流程-调用自定义元件,9如下图,选择“Counter4b.cydwr”选项,打开引脚编辑器界面。,图 打开引脚编辑器,基于PLD的自定义元件设计流程-调用自定义元件,10如下图,进行引脚位置的分配,并将相应的引脚和外设资源(LED灯、按键)连接。11将工程下载CYPRESS提供的PSoC开发套件上,并进行验证。,图 引脚分配,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号