PSoCCreator软件及设计流程.ppt
《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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- PSoCCreator 软件 设计 流程
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-6515979.html