PSoCCreator软件与设计流程.ppt_第1页
PSoCCreator软件与设计流程.ppt_第2页
PSoCCreator软件与设计流程.ppt_第3页
PSoCCreator软件与设计流程.ppt_第4页
PSoCCreator软件与设计流程.ppt_第5页
免费预览已结束,剩余77页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第8章PSoCCreator软件及设计流程Chapter8PSoCCreatorSoftware DesignProess 何宾2010 10 PSoCCreator软件及设计流程 前言 本章主要介绍PSoCCreator软件及设计流程 其内容主要包括 基于PSoC3工程的简单流程 基于PSoC5工程的简单流程 基于PLD的自定义元件设计流程 PSoCCreator软件及设计流程 PSoCCreator的主要功能 PSoCCreator是最先进的集成开发环境 IntegratedDevelopmentEnvironment IDE 带有创新性的图形设计编辑器 构成独特而强大的硬件 软件协同设计环境 图形化的设计入口简化了配置一个特殊元件的任务 设计者可以从元件库内选择所要求的功能 并且将其放置在设计中 所有的参数化元件都有一个编辑器对话框 允许设计者根据需要对功能进行裁减 定制 PSoCCreator软件及设计流程 PSoCCreator的主要功能 PSoCCreator软件平台自动的配置和布线I O到所选择的引脚 并且为给定的应用产生应用程序接口函数API 通过这些接口函数对硬件进行控制 修改PSoC的配置是非常简单的 比如添加一个新元件 设置它的参数和重新建立 rebuilding 工程等 PSoCCreator软件及设计流程 PSoCCreator的主要功能 在开发的任何阶段 设计人员都能很自由的修改硬件配置 甚至是目标处理器 设计者可以将应用修改到新的目标上 硬件和软件 甚至是从8位平台移植到32位平台上 只需要选择新的设备 并进行重新的建立 设计者也可以修改C编译器和进行性能评估 下图给出了PSoCCreator软件的主界面 PSoCCreator软件及设计流程 PSoCCreator的主要功能 图PSoCCreator软件平台主界面 PSoCCreator软件及设计流程 PSoCCreator的主要功能 PSoCCreator软件平台的特点主要有 集成了原理图捕获功能用于设备配置 可供选择的丰富的元件IP核资源 集成了源代码编辑器 内置调试器 支持自定义元件创建 设计重用 功能 PSoC3编译器 KeilCA51 无代码大小限制 PSoC5编译器 CodeSourcery 的SourceryG Lite版本 PSoCCreator软件及设计流程 PSoCCreator的主要功能 主界面的后侧是元件的库的分类列表 库中的元件用于满足设计者的不同要求 主界面的右侧是元件的库的分类列表 库中的元件用于满足设计者的不同要求 元件的范围从最简单的元件 比如逻辑门和寄存器 到数字定时器 计数器和PWM 其它模拟元件 比如 ADC DAC 滤波器和各种通信协议 比如 I2C USB CAN等 PSoCCreator软件及设计流程 PSoCCreator的主要功能 符号编辑器使设计者能开发可重用的元件 这样可以显著的减少将来的设计时间 编辑器仅仅画一个符号和相关的设计关联符号 PSoCCreator允许放置新的符号 设计者可以在任何时间和任何工程中 重用 自己的设计 不需要知道实现的具体细节 锚定工具 Anchoringtool 是一个现代的 高级可定值的用户接口 它包含一个项目管理器和用于源代码的集成C编辑器和汇编器 以及设计入口工具 PSoC3 5基本编程模型 位变量的使用 使用 bit 关键字声明位操作 下面给出C语言对位的声明和操作 bitmyVar myVar myVar if myVar PSoC3 5基本编程模型 位变量的使用 此外 为了保证代码容易移植到PSoC5上 可以使用 CYBIT 关键字替换 bit 关键字 例如 CYBITmyVar PSoCCreator软件工具中提供了完整的宏定义集 用来将PSoC3的代码移植到PSoC5上 更详细的说明 请参考cyboot文件夹中自动生成的文件cytypes h PSoC3 5基本编程模型 避免从中断句柄调用函数 当编译用于中断服务程序ISR的C代码时 Keil编译器将试图认为在ISR中可能修改的寄存器入栈操作 如果ISR包含一个函数调用 编译器并不知道函数调用将修改哪个寄存器 这样就会将所有寄存器内容入栈 比如 改函数调用 PSoC3 5基本编程模型 避免从中断句柄调用函数 CY ISR myISR UART 1 ReadRxStatus 为 CYBITflag CY ISR myISR flag 1 PSoC3 5基本编程模型 避免从中断句柄调用函数 voidmain 等待ISR设置flag标志if flag flag 0 UART 1 ReadRxStatus PSoC3 5基本编程模型 将变量放在合适的存储空间 当变量放在8051内部的存储空间时 具有最好的CPU访问效率 根据访问效率 定义变量类型的顺序依次为 data idata pdata 和 xdata 由于堆栈空间有限 Keil编译器不在堆栈中保存本地变量 而是将其保存在固定的存储空间 并且和其它函数调用的变量共享存储空间 PSoC3 5基本编程模型 将变量放在合适的存储空间 此外 尽量使循环变量递减而不是递增操作 这是由于测试等于0操作比测试等于常数的操作要快 比如使用下面的代码 voidmain datauint8i 循环10次 for i 10 i 0 i PSoC3 5基本编程模型 将变量放在合适的存储空间 在C代码中 为了测试某些位 经常使用下面的代码风格 uint8x x 0 x10 setbit4 x togglebit4 if x 0 x10 testbit4 PSoC3 5基本编程模型 将变量放在合适的存储空间 使用8051比特级的汇编指令 实现C中的按位操作 使用 sbit 关键字和特殊的操作符 不是C语言中的按位操作 通过下面两种方式实现 1 将变量放到位可寻址的区域20 2F 使用 bdata 关键字 然后用sbit和 定义感兴趣的比特位 PSoC3 5基本编程模型 将变量放在合适的存储空间 ThisplacesmyVarinthe8051 internaldataspace in20 2F bdatauint8myVar 放置myVar到8051内部空间20 2Fsbitmybit4 myVar 4 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文件夹下由PSoCCreator生成的PSoC3 8051 h文件 了解sbit和sfr关键字用于支持位访问的SFR sfrPSW 0 xD0 sbitP PSW 0 sbitF1 PSW 1 sbitOV PSW 2 sbitRS0 PSW 3 sbitRS1 PSW 4 sbitF0 PSW 5 sbitAC PSW 6 sbitCY PSW 7 PSoC3 5基本编程模型 使用B寄存器用于暂存数据 在8051结构中 B寄存器用来方便汇编指令MUL和DIV的操作 除此以外 它只是一个辅助的寄存器 下面给出使用B寄存器实现两个8位变量的交换 uint8x y B x x y y B PSoC3 5基本编程模型 编写汇编代码的方法 1 创建一个单独的汇编源文件1 在PSoCCreator主界面的ProjectExplorer子窗口下 用鼠标右键点击工程名字 并选择 Addnewitem 2 选择 8051KeilAssembyAssemblyFile 然后输入文件名 3 将创建一个汇编文件 该文件在整个工程中的扩展名为 a51 4 在文件中添加汇编代码 5 可以在主界面的主菜单下选择Help documentation Keil AX51AssemblerUserGuideforhelponinstruction template等 查看相关的汇编语言指令 PSoC3 5基本编程模型 编写汇编代码的方法 2 在C文件中使用内嵌汇编代码1 在C源文件中 将汇编代码写在指令 pragmaasm 和 Pragmaendasm 中间 2 在主界面下的ProjectExplorer子窗口下 鼠标右键点击源文件 出现BuildSettings界面 3 在Compiler选项界面下 将InlineAssembly设置为True 即使能在C文件中内嵌汇编语言 PSoC3 5基本编程模型 PSoC3中断编程模型 设置全局中断 1 使用PSoCCreator软件中CyLib h文件中提供的CYGlobalIntEnable宏定义来全局中断使能功能 2 使用PSoCCreator软件中CyLib h文件中提供的CYGlobalIntDisable宏定义来禁止中断使能功能 使用宏定义 将来可以很方便的进行代码的移植 PSoC3 5基本编程模型 PSoC3中断编程模型 定制中断服务程序 可以在main c或者其它 c文件中编写中断服务程序 用设计中具体使用的中断元件的例化名字代替下面程序中的isr 1名字 isr 1为默认的中断原件例化名字 可以在希望编写定制中断服务程序的地方编写自己的中断服务程序 使用下面的方式定义 CY ISR MyOwn Interrupt 以下为定制的中断服务程序代码 PSoC3 5基本编程模型 PSoC3中断编程模型 并使用isr 1 StartEx或者isr 1 SetVectorAPI函数来更新中断向量表 根据具体设计将isr 1名字修改为具体的中断元件的例化名字 main 主程序代码 修改向量地址到定制的中断服务程序MyOwn Interrupt 然后从cydwr文件中修改优先级 然后使能中断 isr 1 StartEx MyOwn Interrupt PSoC3 5基本编程模型 PSoC3中代码重入 若一个程序或子程序可以安全的被并行执行 则称其为可重入 reentrant或re entrant 的 即 当该子程序正在运行时 可以再次进入并执行它 若一个函数是可重入的 则该函数 不能含有静态 全局 非常量数据 不能返回静态 全局 非常量数据的地址 只能处理由调用者提供的数据 不能依赖于单实例模式资源的锁 不能调用不可重入的函数 多用户 对象 进程优先级 以及多进程一般会使得对可重入代码的控制变得复杂 同时 IO代码通常不是可重入的 因为他们依赖于像磁盘这样共享的 单独的资源 PSoC3 5基本编程模型 PSoC3中代码重入 需要代码重入 在函数声明和函数定义的名字后面添加CYPEENTRANT宏定义声明 比如 uint8increment uint8 CYREENTRANT uint8increment uint8value CYREENTRANT uint8iCount1 uint32iDelay1 value for iCount1 0 iCount1 2 iCount1 for iDelay1 0 iDelay1 65000 iDelay1 关于这部分更详细的内容参考Cypress提供的应用文档AN54460 InterruptHandlinginPSoC3 和相关的例子 PSoC3 5基本编程模型 PSoC3 5DMA编程模型 PSoC内的控制器完成下面的数据传输 存储器到存储器存储器到外设外设到存储器外设到外设关于DMA控制器更详细的信息 在本书前面章节已经进行了详细的说明 PSoC3 5DMA编程模型 DMA应用程序API接口函数 PSoC3 5DMA编程模型 DMA配置向导 当设计中添加DMA控制器元件后 可以使用PSoCCreator的DMA向导完成对DMA通道的相关参数配置 DMA配置向导是一个图形化的配置界面 使得设计者能实现DMA和TD配置选择 而不需要知道底层的API 当完成DMA和TD配置后 向导产生API能被复制到工程中 其方法是 在PSoCCreator软件主界面下的主菜单下选择Tools DMAWiazrd 打开配置向导对DMA通道进行参数配置 在配置向导结束后 将配置向导生成的DMA配置API函数模板 复制并粘贴到main c文件或者希望的 c文件中 PSoC3 5DMA编程模型 DMA配置向导 注 选中配置向导中的参数TERMOUT时 数据传输完成后 TD在DMA的NRQ触发一个脉冲 这个脉冲触发其它元件 比如 其它中断DMA 中断等 关于DMA配置向导更详细的使用可以参考Cypress公司提供的AN52705 UsingDMAonPSoc3 PSoC5 应用文档 PSoCCreator软件及设计流程 基于PSoC3工程的简单设计流程 本工程使用PSoC3内的PWM可编程外设来控制两个不同的LCD灯的闪烁频率 基于PSoC3工程的简单设计流程 加载PSoC3工程 加载PSoC3工程的步骤包括 1 打开PSoCCreator软件 2 如下图 在StartPage页面中的StartPageTopic下面展开KitsandSolutions 图KitandSolution界面 基于PSoC3工程的简单设计流程 加载PSoC3工程 3 在KitsandSolutions下 展开PSoCCY8C38FamilyProcessorModuleKit 4 点击Ex1 LED with PWM cywrk打开工程 5 选择保存工程的路径 6 工程打开后 如下图所示 可以在WorkspceExplorer下面看到打开的工程 图WorkspaceExplorer界面 基于PSoC3工程的简单设计流程 建立PSoC3工程 1 如下图所示 在PSoCCreator的主界面下选择Build BuildEx1 LED with PWM 图Build窗口界面 基于PSoC3工程的简单设计流程 建立PSoC3工程 2 PSoCCreator建立工程 如下图 并且在Output窗口显示建立过程的信息 当output窗口显示 BuildSuccessed 信息后 就可以准备编程了 注意其编译器为DP8051 Keil 图Output窗口界面 基于PSoC3工程的简单设计流程 编程PSoC3工程 下面给出将程序下载到CY8C38开发板上的步骤 这些步骤包括 1 连接MiniProg3到CY8C38的开发板上 2 在PSoCCreator主菜单下选择Tools Options 打开Options窗口 3 如下图所示 选择Programmer Debugger 并展开该选项 然后选择MiniProg3 进行如下设置 基于PSoC3工程的简单设计流程 编程PSoC3工程 图MiniProg参数设置界面 基于PSoC3工程的简单设计流程 编程PSoC3工程 设置AppliedVoltage 3 3V 设置TransferMode SWD 设置ActivePort 10Pin 设置AcquireMode Reset 设置DebugClockSpeed 3 2MHz 点击 OK 按钮 4 在PSoCCreator主菜单下选择Debug SelectDebugTarget 出现如下图所示的界面 基于PSoC3工程的简单设计流程 编程PSoC3工程 图SelectDebugTarget界面 基于PSoC3工程的简单设计流程 编程PSoC3工程 5 在PSoCCreator主界面下选择Debug Program 在PSoCCreator输出窗口显示如下图所示的信息 表示正在编程和编程成功的信息 6 一直等待编程成功为止 图编程Flash信息 基于PSoC3工程的简单设计流程 运行PSoC3工程并调试 1 在提供的CYPRESS开发套件上 用导线将面包板旁的P1 6 接口连接到LED1 将面包板旁的P1 7 接口连接到LED2 2 给板子再次上电 观察LED等的闪烁频率 3 如下图所示 按键F9 在此行设置断点 并按键F5 让程序运行 观察灯的变化情况 基于PSoC3工程的简单设计流程 运行PSoC3工程并调试 图断点调试界面 PSoCCreator软件及设计流程 基于PSoC5工程的简单设计流程 本工程使用PSoC5内的PWM可编程外设来控制两个不同的LCD灯的闪烁频率 基于PSoC5工程的简单设计流程 加载PSoC5工程 1 打开PSoCCreator软件 2 如下图 在StartPage页面中的StartPageTopic下面展开KitsandSolutions 3 在KitsandSolutions下 展开PSoCCY8C55FamilyProcessorModuleKit 4 点击Ex1 LED with PWM cywrk打开工程 基于PSoC5工程的简单设计流程 加载PSoC5工程 图KitandSolution界面 基于PSoC5工程的简单设计流程 加载PSoC5工程 5 选择保存工程的路径 6 工程打开后 如下图所示 可以在WorkspceExplorer下面看到打开的工程 图WorkspaceExplorer界面 基于PSoC5工程的简单设计流程 建立PSoC5工程 1 如下图所示 在PSoCCreator的主界面下选择Build BuildEx1 LED with PWM 图Build窗口界面 基于PSoC5工程的简单设计流程 建立PSoC5工程 2 PSoCCreator建立工程 如下图 并且在Output窗口显示建立过程的信息 当output窗口显示 BuildSuccessed 信息后 就可以准备编程了 注意其编译器为ARMCM3 GCC4 2 1 基于PSoC5工程的简单设计流程 建立PSoC5工程 图Output窗口界面 基于PSoC5工程的简单设计流程 编程PSoC5工程 下面给出将程序下载到CY8C55开发板上的步骤 这些步骤包括 1 连接MiniProg3到CY8C55的开发板上 2 在PSoCCreator主菜单下选择Tools Options 打开Options窗口 3 如下图所示 选择Programmer Debugger 并展开该选项 然后选择MiniProg3 进行如下设置 基于PSoC5工程的简单设计流程 编程PSoC5工程 图MiniProg参数设置界面 基于PSoC5工程的简单设计流程 编程PSoC5工程 设置AppliedVoltage 3 3V 设置TransferMode SWD 设置ActivePort 10Pin 设置AcquireMode Reset 设置DebugClockSpeed 3 2MHz 点击 OK 按钮 4 在PSoCCreator主菜单下选择Debug SelectDebugTarget 出现如下图所示的界面 基于PSoC5工程的简单设计流程 编程PSoC5工程 图SelectDebugTarget界面 基于PSoC5工程的简单设计流程 编程PSoC5工程 5 在PSoCCreator主界面下选择Debug Program 在PSoCCreator输出窗口显示如下图所示的信息 表示正在编程和编程成功的信息 6 一直等待编程成功为止 图编程Flash信息 基于PSoC5工程的简单设计流程 运行PSoC5工程并调试 1 在开发板上 用导线将面包板旁的P1 6 接口连接到LED1 将面包板旁的P1 7 接口连接到LED2 2 给板子再次上电 观察LED等的闪烁频率 3 如下图所示 按键F9 在此行设置断点 并按键F5 让程序运行 观察灯的变化情况 基于PSoC5工程的简单设计流程 运行PSoC5工程并调试 图断点调试界面 基于PSoC5工程的简单设计流程 基于PLD的自定义元件设计流程 自定义元件是PSoCCreator所提供了一个非常强大的功能 设计人员可以充分利用软件强大的自定义元件功能实现特定元件的设计和复用 下面将通过一个设计详细的介绍自定义元件的设计流程 并进行验证 基于PSoC5工程的简单设计流程 基于PLD的自定义元件设计流程 该工程将使用基于VerilogHDL设计Count4ByN带有异步复位的递增计数器元件 该元件的接口包括 2个输入信号 clock reset 4个输出信号 Count 3 0 参数N 规定了每个始终计数器递增N 基于PLD的自定义元件设计流程 建立工程 下面给出建立PSoC工程的步骤 其步骤包括 1 打开PSoCCreator软件 2 如下图所示 在主菜单下选择File New Project 图新建工程选项 基于PLD的自定义元件设计流程 建立工程 3 如下图所示 在Name域内输入counter 并确定该工程的路径 然后点击 OK 按钮 图创建新工程界面 基于PLD的自定义元件设计流程 添加自定义元件 1 如下图 a 所示 并切换标签栏到Components 出现下图 b 的界面 基于PLD的自定义元件设计流程 添加自定义元件 2 在上图 b 界面下 选中Project counter 并点击鼠标右键 出现下图的界面 选择AddComponentItem选项 图选择AddComponentItem 选项 基于PLD的自定义元件设计流程 添加自定义元件 3 出现如下图的界面 选择 SymbolWizard 选项 并在ComponentName域中输入 counter4b 并点击 CreateNew 按钮 基于PLD的自定义元件设计流程 添加自定义元件 5 出现下图的界面 并按照该界面分别输入reset clock 和count 3 0 名字及其相关参数 点击 OK 按钮 图SymbolCreationWizard 基于PLD的自定义元件设计流程 添加自定义元件 6 出现左图界面 并在该界面 点击鼠标右键 出现右图界面 选择SymbolParameters 图选择SymbolParameters 选项 图创建的符号 基于PLD的自定义元件设计流程 添加自定义元件 7 出现下图的界面 输入N参数 类型为int Value为1 在Misc栏中选择Description 图ParametersDefinition界面 基于PLD的自定义元件设计流程 添加自定义元件 出现下图的界面 并输入描述语句 Amounttoincrementcountbyoneeachclock 点击 OK 按钮 返回上图的界面 图TextEditor界面 基于PLD的自定义元件设计流程 添加自定义元件 修改Hardware设置为 True 修改Validators设置 8 出现下图的界面 输入条件 即当N超过该范围时 会报错 点击 Ok 按钮 回到前面图界面 并点击 OK 按钮 退出该界面 基于PLD的自定义元件设计流程 添加自定义元件 图ParameterValidators界面 基于PLD的自定义元件设计流程 添加自定义元件 8 图界面下 选择 GenerateVerilog 选项 打开counter4b v文件 在该文件中进行代码添加 图选择SymbolParameters 选项 基于PLD的自定义元件设计流程 添加自定义元件 9 如

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论