MATLAB基于模型设计(入门到精通)TMS320F28335_第1页
MATLAB基于模型设计(入门到精通)TMS320F28335_第2页
MATLAB基于模型设计(入门到精通)TMS320F28335_第3页
MATLAB基于模型设计(入门到精通)TMS320F28335_第4页
MATLAB基于模型设计(入门到精通)TMS320F28335_第5页
已阅读5页,还剩259页未读 继续免费阅读

下载本文档

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

文档简介

Matlab/simulink Matlab/simulink与dsp28335联合开发教程 MATLAB基于模型设计(入门到精通)--TMS320F28335目录一.入篇(发环建) 6CodeComposerStudio件安装 7在线安装 7离线安装 8CodeGenerationTool9软件装 11Control_SUIT3.4软装 14C2000Simulink开发工箱安装 16在线安装 16离线安装 21Visual_Studio_Professional_2012安装 23二.基篇(内外用) 26GPIO 26GPIO_OUTPUT-NORMAL26GPIO_INPUT扫描_NORMAL27GPIO_INPUT扫描_EXTERNAL28GPIO_INPUT_IT 30ADC 30ADC_NORMAL模式 31ADC_EXTERNAL模式 32Timer_IT 33EPWM 33EPWM_路输出 34EPWM_死区补输出 35EPWM_38I2C_E2PROM 40I2C述 40CAN 43CAN述 43CAN述 44消息邮箱 45Simulink的CAN建 45Simulink的CAN建 46SCI47RS232(中断收) 48USB(中断接收) 5051CAP_频率计 53eQEP-正交解码 56光电编器电测速本原理 56正交解模块用说明 56DLE的用 63SIL软件在测试 64PIL处理器在环试 66Codeprofiling(代码执时间评) 70模代码成顺明 72三.进篇(设Simulink驱动模 73蜂鸣器 73流水灯 74模拟量集 75DC集 75AC集 76电位器拟量集 76拨码开关 76计数器(Stateflow) 783X3键驱动 80数码管动 823.8OLED(128*64)84TLC5615驱(DAC芯片) 87DAC_TLC5615_压源 89AC_TLC5615电源 91LibModbus-RTU 93RS485-LibModbus-RTU 96RS232-LibModbus-RTU 100RS485&RS232-LibModbus-RTU 101MODBUS-RTUSimulink101MODSACN32104四.高篇(码生模型创) Coder介绍 105M-Coder 105MATLABCoder求 105C置 106应用实例 106SimulinkCoder 112应用实(PI器C) 112SIL&PIL 119SimulationwithTopModel 120SimulationwithModelBlocks 121SimulationwithBlocksFromSubsystems 122用户驱模块创建 122LegacyCcode绍 123创建用驱动块 123创建硬外设动模块 125建Simulink箱 130型Mask131Parameters&DialogPane 138浮点模和定模型 149数据的标 149浮点数定点的转系 151定点运算 151乘除法算 152Fix-PointTool工箱的使用 153点数最大小、溢检验 153代码生中的据管理 160数据对的基概念 160代码生事例 161使用信对象理信号 162使用参对象理参数 162基于模设计程 162仿真模搭建仿真制系统散化 163模型定化 163软测试(SIL)&处理器环测(PIL) 163代码及告生成 164物理平实验 165五.数滤波的设代码生成 数字滤器简介 166数字滤器简介 166数字滤器结特点 166数字滤器的示:方程和统函数 166结构表:方图和图 1675.1.2FDATool简介 167无限响数字波器模型设计 170IIR构 170IIR点 170巴特沃滤波设计 171低通滤器 171高通滤器 175带通滤器 179带阻滤器 184切雪夫波器计 187低通滤器 187高通滤器 191带通滤器 196带阻滤器 200有限应数滤波基于模设计 205FIR构 205FIR点 205FIR数 205利数计FIR器 206低通滤器 206高通滤器 208六.工控制器 6.1PID控制器 212PID理 212PID的MATLAB212PI214PI的MATLAB214于PI的Buck215PD器 216PD的MATLAB216PD的C成 216PCI控制器 217PCI理 217PCI的MATLAB2176.2.2PCI控制的三相电型逆变环仿真 219PR控制器 2196.3.1PR控器原理 2196.3.1PR控器的MATLAB仿真 221RC控制器 221RC理 221RC的MATLAB222Clark变换 223Clark换 223Clark换 225Clark换 227Clark换 228Park变换 230Park230Park换 232SPWM233SPWM理 233SPWM的MATLAB234于SPWM真 237SVPWM调制 239SVPWM理 239SVPWM的MATLAB242扇区的择 243基于SVPWM的相电压逆变开环真 254RampGenerator 255七.BOOST换器模型设计 BOOST理 257BOOST化 257BOOST(SIL)与处理器环测(PIL) 260代码生模型建与生成报告 261物理实验 262一.入门篇(开发环境搭建)本开发环境主要围绕EmbeddedCodeSupportPackageforTexasInstrumentsC2000Processors工具箱进行。工具箱中的主要内容如下图所示:下面将演示如何进行相关软件的安装,以及需要注意的一些安装细节,否则将导致开发环境搭建失败。整个开发环境所涉及的第三方软件较多,所以需要耐心和细心。Matlab/simulink与Matlab/simulink与dsp28335联合开发教程CodeComposerStudio软件安装在线安装第一步:/index.php/Download_CCS#Code_Composer_Studio_Version_6_Downloads打开网址,进入如下图所示的网页,找到CodeComposerStudio6.2.0,DonloadWindows第二步:进行注册TI账户后,下载如图所示的小程序第三步:下载完之后,打开并运行,如下图所示,“Iacceptthetermsofthelicenseagreement”选择,一直点击“Next”,直到软件安装完成。离线安装第一步:ccs_setup_0050LicenseAgreement,点击“Iacceptthetermsofthelicenseagreement”第二步:C盘,点击“Next”第三步:一直点击“Next”,直到安装完成。CodeGenerationTool第一步:CCShelp工具栏中,选择“InstallNewSoftware”,如下图所示:第二步:在with:”CodeGenerationUpdates-http://software-/dsps/dsps_public_sw/sdo_ccstudio/codegen/Updates/p2win32/在TICompilerUpdates中选择C2800CompilerTools6.4.12,点击“Next”, Matlab/simulink Matlab/simulink与dsp28335联合开发教程 第三步:点击”Next”,ReviewLicenses页面选择“Iacceptthetermsofthelicenseagreement”,再次点击“Finish”,如下图所示:第四步:正在安装中,直到安装完成,重启CCS就OK。Matlab/simulink与Matlab/simulink与dsp28335联合开发教程软件安装第一步:云盘下载,下载完成,进行解压后,如图所示,运行setup应用程序第二步:Internet连接,之后点击“下一步”第三步:许可协议,选择“是”,点击“下一步”第四步:09806-07443-53955-64350-21751-41297,点击“下一步”第五步:文件夹选择,选择MATLAB的安装路径,点击“下一步”第六步:选择要安装的产品,默认全选,点击“下一步”第七步:选择需要的安装选项,将快捷方式添加到“桌面”和“开始菜单的程序文件夹”,点下一步。第八步:等待漫长的安装过程,直到安装完毕。点击“完成”第九步: Matlab/simulink与dsp28335联合开发教程 安装完成后,打开破解文件夹“patch”,将将破解补丁复制到安装目录覆盖源文件将:“libmwlmgrimpl.dll”复制到\MATLAB\R2017a\bin\win64\matlab_startup_plugins\lmgrimpl\目录下覆盖源文件将:“license_R2017a.lic”复制到\MATLAB\R2017a\licenses\目录下安装完成,运行桌面快捷方式就可以体验新版MATLAB2017带来的魅力了。Control_SUIT3.4软件安装第一步:云盘下载第二步:进行解压,下图所示,打开“controlSUITE3.4.7setup”第三步:

Matlab/simulink与dsp28335联合开发教程Setup–controlSUIE,点击“Next”第四步:LicenseAgreement,点击“Iaccepttheagreement”第五步:SelectDestinationLocation,默认位置,点击“Next” Matlab/simulink Matlab/simulink与dsp28335联合开发教程 一直点击“Next”,直到安装完成C2000Simulink开发工具箱安装在线安装打开MATLAB2017A,在HOME-Add-Ons下,选择GetHardwareSupportPackages,打开会出现下图所示界面,点击EmbeddedCoderSupportPackageForTexainstrumentsC2000打开硬件支持包后,点击“Install”等待一会,出现如下图所示界面,点击“I Accept”等待支持包安装安装完成,进行相关配置Matlab/simulink与Matlab/simulink与dsp28335联合开发教程选择Supportpackagefor:TeaxInstrumentsC2000(EmbeddedCoder),然后点击NEXTCCSNEXT:在这个界面下需要注意的是CodeGenerationTools工具的选择,这里要根据1.1.3小节中实际安装的CGT版本,安装的CGT工具可以在\ti\ccsv6\tools\compiler\目录下寻找,通过Browse浏览选择:配置完成之后,点击validate进行工具链的验证,验证通过后会自动到达下一页。在这个界面中点击validate验证controlSUITE会自动跳转到下一个界面:点击cofirm,完成安装。离线安装MATLAB,找到硬件支持包所在路径,双击鼠标左键打开install_supportssofyware.exe,如下图所示,勾选EmbeddedCoderSupportPackageorxainstrumntsC000Prssorsvrion7.1.5,点击“xt点击“IAccept”后面安装和在线安装过程一致。 Matlab/simulink Matlab/simulink与dsp28335联合开发教程 Visual_Studio_Professional_2012安装解压安装包,如下图所示:运行vs_professional,如下图所示,选择我同意许可条款和条件,点击下一步。Matlab/simulink与Matlab/simulink与dsp28335联合开发教程选择要安装的可选功能,默认全选,点击安装。等待软件安装,预计几分钟。直到安装成功启动运行程序,这个是需要密钥;提供一个供大家使用YKCW6-BPFPF-BT8C9-7DCTH-QXGWC注册ok后,就可以使用了

二.基础篇(片内外设使用)F2833588GPIO88ABC三大组,AGPIO0-GPIO31、BGPIO32-GPIO63、C组包括GPIO64-GPIO87。每个引脚都有自己的复用功能,可以根据手册进行配置。IOGPxDIR接口的方向(10为输入GPxQUALI/O引脚的噪声干扰。此外,还有四种方式对GPIO引脚进行读写操作:/信号GPxSET1IO口进行置位操作GPxCLEAR1IO进行清零操作GPxTOOGLE10时均无效。GPIO_OUTPUT-NORMALLEDLED灯对应GPIO13GPIO53。我们首先对整个模型进行配置。(此处基本配置适用于所有模型,在本手册中只阐述清楚这一次,后面将直接一句带过)SimulinkSolverStopTimeinf。SloveroptionsFixed-Step,并选择discrete0.5秒。DiagonosticsDataValidityMultitaskdatastore配none。在HardwareImplementation中选择Hardwareboard为TIDefinoF2833x(bootfromsimulinkTIc2000系列。然后配置该buildactionbuild。DevicenameF28335UsecustomlinkercommandClocking30M,将系统时钟配置为150MHz24分频。其他外设模块按自己需要配置。Codegeneration选项卡中使用的Toolchain为CCSv6。在Codegenerationobjectives的Prioritizedobjectives中将执行效率、ROM效率、RAM效率设置为优先的代码生成目标。在report中勾选Generatemodelwebview使生成的代码可以进行模型与代码之间相互的跟踪。在CodePlacement中配置CodePackaging为Modular。以上便完成了一个模型最基本的配置。然后,在Simulink界面上,搭建点亮一个LED的模型,系统步长为0.5秒。如下图所示然后在模型的配置中,使能自动翻转。可以看到模型的介绍,在常规模式输入端等于1的时候,端口为高,反之则为低。在翻转模式下,当输入端口等于1的时候,端口电平翻转,等于0的时候,对端口输出无影响。以上配置完成之后,生成工程代码,可以看到开发板上的LED小灯开始闪烁。GPIO_INPUT扫描_NORMALGPIOGPIO输出模块的控制量。使用两个按键(GPIO58GPIO59)LED(分GPIO13GPIO53)0.01。在模型搭建完成后,将生成的代码下载到开发板。通过控制按键按下与否,来控制LED的状态。GPIO_INPUT扫描_EXTERNAL注意:在进行external模式操作的时候,请参照2.12小结中,完成SCIGPIOSIMULINKSCI转USBDSP进行通信。EXTERNAL模式可以极大的方便对数据的观测。首先我们需要在模型配置对外部模式进行设置。将communicationinterface设置为串行通信,然后在自己的电脑的硬件管理器上找到串行通讯的COM口,然后输入到SerialPart中。BuildAtionloadndrunmulink会自动调用CCS工具链对程序进行编译与下载。还需要在模型主界面的选择栏选择外部模式。以上配置基本配置完成后,在Simulink中搭建模型。按键对应的GPIO58GPIO59分别控制两个LED灯的亮暗。GPIODI模块输出数据类型选择uint8。完成之后,连接上开发板的USB线,并点击Simulink的run按钮,进行程序的编译与下载。我们可以通过view-DiagnosticViewer对整个过程进行观测。按下开发板上按键观察实验效果,并观察模型中显示模块的值。需要注意的是Simulink的External模式默认使用的是SCIA,并且默认复用IO端口是GPIO28GPIO29,但是我们开发板上的SCIA复用接口是GPIO35GPIO36所以需要在底层文件中进行修改。在CCS工程中,我们在rtiostream_serial_c28x_ext.c文件中进行修改,将原本的GPIO28GPIO29修改为我们开发板上的USB接口对应的GPIO。SIMULINKrun按钮将代码下SIMULINK的仿真是运行的,分别按下两个按键,可display模块中看到数值的变化。GPIO_INPUT_ITGPIOIO做数字量输出的功能,还以可以配置成外部中断达到需要的控制目的。比如最常用的按键配置成外部中断,在中断中执行参数或模式的修改,这样比常用的按键扫描方式要节省资源。SimulinkGPIO59GPIO58为外部中断触发源,并53LED的翻转,GPIO59LED1(GPIO53),GPIO58对应LED2(GPIO13)0.01。SystemInitializeGPIO59GPIO58的初始化代码。硬件中断模块配置如下图所示。在上述配置完成,并完成模型的搭建后,将生成的工程代码下载到开发板上。当按下一次按键,可以发现对应的LED电平便翻转一次。ADC关于ADC原理,本文档不做赘述。F28335的ADC主要有以下特点:12位数模转换器16通道模拟量输入2个采样保持器同步采样或顺序采样0-3VADC转换时钟最高25MHz,采样带宽12.5MHz支持软件触发外部引脚触发PWM触发排序器支持16通道独立循环“自动转换”,每次转换通道可以软件编程选择排序器可以工作在启动/停止模式允许每个或者每隔一个序列转换结束后产生中断请求。ADC_NORMALADC_NORMAL模式配置先从配置时钟开始,ADC钟线上的外设,Clocking150M2ADC配置ADCLKPS=3,CPSADC模块时钟为6.25MHz。其他配制使用默认配置。具体如下图所示。ADC模块使用排序器模式分为ABAandB,当是双排序模式时使用排序器ABAandB。转换模式分为顺序转换和同步转换,本例配置为顺序转换。开始转换信号为软件触发,输出数据类型为uint16。转换通道为1个通道,配置为A0。具体配置如下图所示。在以上配置完成后,对ADC采样的值进行转换。由于ADC转换结果寄存器是16位的,且数值是左对齐的12位数据,所以要进行向左移位4位的操作。官方支持包很人性化的做了这一点,所以我们只需直接对输出的结果进行0-3V的电压,所以直接进行转换(4096对应实33VPWM在生成代码之后将代码下载到开发板上,可以发现在调节板载电位器时,示波器上的电压占空比发生了变化。ADC_EXTERNAL模式先将模型按照前文所述的方法配置为外部模式。在Simulink中搭建模型,将输出的值转化为实际值,并在显示模块上显示。USBUSB接口上,并在外部供0-3V直流电,启动仿真便可以在显示模块上看到实际的电压值。Timer_ITTimer0Baseratetrigger作SimulinkSlover中Fixed-stepsize(fundamentalsampletime)Simulink0.0001s也就是10K的执行频率。EPWMPWM(脉宽调制)是对脉冲宽度进行调制的技术,即通过对一系列的脉冲的宽度进行调制,来等效的获得所需要的波形。F28335的每个ePWM模块相互ePWMxAePWMxBPWMPWMPWM7个模块:TB时基模块、CC计数比较模块、AQ动作模块、DB死区产生模块、PWMPC、TZET。以下我们通过三个例子来对PWM的功能进行说明。EPWM_单路输出PWM的模块输入时钟,直接有系统时钟而来,使用的时候可以根据用户需要进行分频。在ePWM的设置界面,在General选项卡中,配置为ePWM1模式,周期时间单位为秒,周期寄存器装载数据设置在计数等于0的时候,技术模式为向上计数模式,关闭同步功能,分频系数TBCLKHSPCLKDIV均为1(不对系统时钟分频)。ePWMAePWMA0的时候输出置位,等的值的时候复位,其他时间不动作。ePWM然后在Simulink中对相应的参数进行设置。周期为1e-4s对应频率为10kHz,占空比为50%。在以上配置完成,将程序下载到开发板后,就可以在示波器上看到相应的PWM波。EPWM_PWMPWM波。GeneralPWM模块的Clockcycles75001在ePWMAClockcycles。在ePWMACMPBClockcycles。CMPBCMPBCMPB的时候置清零。其他配置默认。在Deadbandunit选项卡中,设置ePWMAePWMB均使用死区,死区极性设置为AHC,死区的REDFED均设为200。其他配置默认。其他选项卡均不配置。模型配置完成如下图所示。系统时钟为150M,外部晶振为30M。整体就是频率10kHz,占空比50%,互补带死区的两路PWM波。完成上述配置以后,将生成的代码下载到开发板上,就可以在示波器上看到互补带死区的PWM波。EPWM_中断PWMPWMEventTriggerePWM在上述配置完成后,调用C28xHardwareInterrupt模块,将PWM1中断的CPU级中断号3以及PIE级中断号1写入,其余配置默认。中断函数中,我们使用StateFlow搭建了了一个简单的逻辑功能模块,使LED小灯每一秒翻转一次。其中计数器计数最大值为10000。完成上面的配置之后,将生成的代码下载到开发板上,可以看到在PWM波产生的同时,LED小灯在以1Hz的频率闪烁。I2C_E2PROMI2CI2CPHILIPS公司推出的串行通信总线,具有接线少,控制方式简SDASCL构成通信线。SDA传8bit(multimastering),任7bit,0.addr分为固定部分和可编程部份,细节视芯片而定。I2C位传输数据传输:SCL为高电平时,SDA线若保持稳定,那么SDA上是在传输数据bit;若SDA发生跳变,则用来表示一个会话的开始或结束数据改变:SCL为低电平时,SDA线才能改变传输的bit。I2C开始和结束信号开始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。结束信号:SCL为高电平时,SDA由低电平向高电平跳变,结束传送数据。I2C数据传输每一个字节8位长度。数据传输时,先传输最高位,每一个被传输的字节后面必须跟随一位应答位,相当于一个数据帧有九位。I2C数据帧格式I2C78位是数据的传送方向0表示主机接收数据。2.5.2F28335的I2C简述F28335的I2C是挂在LSPCLK总线上的模块,支持8位格式数据传输。有7位和10位两种地址模式,具有主发送/接收和接收/发送模式。数据传送速率10-400Kbps。一个16位接收FIFO和一个16位传输FIFO。支持两种传输方式:标准模式和重复模式。但需要注意的是F28335的I2C不支持高速模式以及CBUS兼容模式。使用的时候注意其模块工作频率的配置:I2CI2C/(IPSC+1)IPSCI2CI2C模块作为主机时,ICCLICCH决定了对应的低电平与高电平宽度,计算公式如下图所示其中d的数值由IPSC决定,在上图的表格中可以看到。2.5.3EEPROM芯片AT24C16的I2C通信简述400Khz,Clock0.6us1.2us5ms(ICCLICCH的值)AT24C16的地址信息在手册中可以看到A0A1A20x50()SIMULINK的相关配置系统时钟配置,高速外设时钟2分频,低速外设时钟4分频。I2C模块配置,根据AT24C16的相关数据,配置如下基本配置完成后进行代码生成模块的配置,仿真的整体模型如下图所示,仿真步长为0.5s。EEPROMData是要写入到EEPROM中的值,EEPROMAddress是EEPROM的地址。TriggerSubsystem用于触发相应的子模块读写EEPROM。模块实现的基本功能是当数据发生改变时,将数据写入到EEPROM,在数据写入并且发送FIFO中为空的时候,再将数据读出来,并赋值给dat1、dat2。其中dat1、dat2皆配置为int8型的全局变量。I2C发送模块配置如下图所示:I2C接收模块配置如下图所示需要注意的是,在写入数据时我们写入的是两个数据,故数据长度配置为2。在上述代码配置完成后,编译生成整体工程代码。CANTMS320F28335的增强控制器局域网络(eCAN)1Mbps的数据32口,即使在电噪声环境下也能可靠通信。CANCAN协议支持四种不同的通信帧类型:数据帧将数据从发射器节点发往数据接收器节点节点发出远程帧请求发送具有同一识别符的数据帧一个总线错误检测上任一节点发出的错误帧过载帧用以在先行的和后续的数据帧或远程帧之间提供附加延时此外,CAN2.0B版技术规范定义了两种标识符字段长度不同的格式帧:29位标识符的扩展帧。CAN44108CAN64128位。另外,标准数据帧最高可插入23个填充位,而扩展数据帧最高却可插入28个填充位,这主要取决于数据流编码。标准帧的最大总数据帧长度为131位,而扩展帧为156位。位字段组成了标准或扩展数据帧,eCAN的数据手册中给了具体的数据帧格式,如下图所示:帧起始包含标识符和发送消息类型的仲裁字段表示已传输位数的控制字段。多达8个数据字节循环冗余校验(CRC)确认帧结束位CANeCAN是一个带有内部32位架构的CANeCAN模块组成:CAN(CPK)消息控制器包括:(MMU)CPU(接受过滤)32RAM控制和状态寄存器CPK的消息后,消息控制器的接收控制单元确定接收RAM32收控制单元检查状态、标识符、和所有消息对象的屏蔽,以确定相应邮箱位置。收到的信息通过接受过滤后被存储在第一个邮箱。如果接收控制单元无法找到任何邮箱来存储接收到的消息,则该消息将被丢弃。一条消息由或29位标识符、一个控制字段,以及多达8个数据字节组成。当一条消息必须传CPK的发送缓冲区,以便在下次总线空闲CPK中。如果两个邮箱具有相同的优超时)eCAN模式时可用。若要启动数据传输,必须在相应的控制寄存(TRS.n)CPU介入的情况下执行。如果一个邮箱已经被配置用来接收消息,CPU就能很容易地使用CPU读指令读取其数据寄存器。在每一个成功的消息发送或接收到后,邮箱可配置为用来中断CPU。消息对象eCAN模块有32个不同的消息对象(邮箱)。每个消息对象可以配置为发送或接收。每个消息对象有其各自的接受屏蔽。一个消息对象由一个消息邮箱组成,其中包括:29位的消息标识符消息控制寄存器8字节的信息数据一个29位接受屏蔽一个32位时间戳一个32位超时值此外,位于寄存器中的相应的控制和状态位允许对消息对象的控制。消息邮箱RAMCAN信息实际存储的地方。CPURAM每个邮箱包含:消息标识符29位扩展标识符位标准标识符标识符扩展位,IDEMSGID.31)AMEMSGID.30)AAM(MSGID.29)TPLMSGCTRL.12-8)(MSGCTRL.4)DLCMSGCTRL.3-0)多达8字节的数据区字段更多关于CAN通信的原理以及寄存器配置详见“TMS320F2833x,2823x增强型局控制器域网(eCAN)”Simulink的CANCANCAN75MhzCAN1MeCAN_B模块,GPIOGPIO16GPIO17。具体配置如下图所示。配置完成后,在Simulink中搭建模型,使用中断接收的模式,使用CANB-1中断,CPU级中断号为9,PIE级中断号为7。并定义全局变量CAN_DATA用来存储接收到的数据。模型如下图所示。其中中断函数中使用了eCAN接收的硬件支持包模块,我们在程序中做的LED。eCANeCANB,使用第一个邮箱(0),信息标识符为uint8,最后使能中断。在上述配置完成后,生成代码并下载到开发板上,使用USB-CAN连接电脑的上位机进行数据发送,完成CAN通信接收实验。Simulink的CANCAN通信的发送实验,我们使用定时器中断循环发送的方法,每个定时器中断向上位机发送指定的数据。CAN的基本配置和接收模式相同,1M的波特率,使用CANB模块。仿真模型如下图所示,系统步长设置为1e-2。两个CAN模块分别发送两个32位数据和一个64位数据。eCANeCANB标准模式,eCAN配置为eCANB标准模式,1Mailboxnumber的对0、1。USB-CAN分析仪在电脑端的上位机观测发送数据。SCISCISerialCommunicationInterface,串行通信接口,接收和发送有各自通用异步接收/发送装置)。F28335SCIFIFO缓冲等新功能。同时为了减少串口通信时候的开销,F2833516级接收和发送FIFO。SCI的接收器和发送器都有各自独立的中断和使能位,可以独立的操作实现半双工通信和全双工通信。为了减软件负担,SCI采用硬件对通信数据进行极性和数据格式检查。SCI模块具有以下主要特点:SCITXDSCIRXD可编程的通信速率,波特率计算公式如下图所示(在数据手册中可以看到)一个启动位,1-8式。12位的停止位(所有特点在此不作具体说明,具体详见数据手册)RS232(中断接收)RS232的全名是“数据终端设备(DTE)和数据通讯设备(DCE)之间串行二进制数据交换接口技术标准”25DB-25连接器,对连接器的每个引脚的信号内容加以规定,还对各种信号的电平加以规定。后来IBMPCRS232DB-9连接器,从而成为事实标准。而工业控RS-232RXD、TXD、GND三条线。RS是英文“推荐标准”的缩写,232为标识号。电气特性:RS-23250英尺=15mRS23220kbps通信参数:波特率:RS-232-C标准规定的数据传输速率为每秒50、75、100、150、300、600、1200、2400、4800、9600、19200波特。5、78位,如何设置取决于你想传送的信息。SCI0~127(7位SCI0~255(8位。1,1.52位。由提供计算机校正时钟同步的机会。况,串口会设置校验位(数据位后面的一位0,保3个逻辑高位。通过上述的简单介绍,我们对RS232有了大致的了解。我们的开发板上,RS232硬件电路如下图所示,使用的是SP3232将TTL电平转换为232电平,然后经DB9接口输出信号。SimulinkSCC接口,故首先在模型的配置界面进行配置。SCI的时钟是低速外设时钟。我们设置低速外设时钟为4SuspensionModeFree_run,一位停止位,无奇偶819200bps,其他配置使用默认的配置。配置完成如下图所示。SCI模块配置为中断接收的方式。数据长度为1,并使能中断。配置SCIC的接收中断,它的CPU级中断号为8,PIE级中断号为5。其他配置为默认配置。在中断函数中,我们将接收到的数据再重新通过串口发送出来,以便调试。在上述模型搭建完成之后,生成工程代码下载到开发板上。只需用一根232USBDB9接口上,然后在电脑上使用串口调试助手便可以完成RS232USB(中断接收)USBSCIAUSB总线转接芯CH341TTLUSB12M。值得注意的是,在使CH341驱动。Simulink232SCIA模式,并修改中断配置即可。SCIACPU9,PIE级中断1。其他配置使用默认配置。在以上配置完成之后,生成工程代码并下载到开发板上运行。开发板的USBMiniUSBRS485(中断接收)看门狗主要用来检测软件和硬件的运行状态,当内部计数器一处时将产生一个复位信号,为了避免不必要的复位,要求用户软件周期地对看门狗定时器进行复位。如不明原因使CPU中断程序,比如系统软件进入了一个死循环或者CPU的程序运行到了不确定的程序空间,会使系统不能正常工作。看门狗电流将产生一个复位信号使CPU复位,程序从系统软件的开始执行,从而有效的提高了系统的可靠性。在使用看门狗之前我们首先要对看门狗的内部计数器进行配置。打开模型watchdog0.27962sTimeoutevent,(从配置中可以看到,看门狗的时钟直OSCCLK30MHz)TimeOut的事件为复位芯片。具体配置如下图所示。将看门狗模块的复位源信号设置为T0中断的周期,在采样时间对话框中填入-1。同时在T0的中断中使两LED的电平在中断中翻转。模型如下图所示。然后可以做两次对比性实验,一次实验的系统步长设置为1s(大于看门狗的溢出时间),另一次设置为0.1s(小于看门狗的溢出时间)。分别生成代码之后下载到开发板上观察实验现象。生成的代码中可以看到,每进一次定时器中断,便将看门狗计数器复位,也就是所说的喂狗。在对比实验中,可以清楚地看到,当中断周期大于看门狗定时器的时间,芯片会一直复位,LED灯无法按照设定的频率翻转。反之则LED灯正常工作。CAP_频率计TMS320F28335eCAPeCAP不但具有捕获功能,还可以PWMF28335150M32位的时6.67ns,一次最多可以捕获四个事件的时间。eCAPPWMSimulink首先配置ECAP1的中断,它属于CPU中断的第四组下的PE中断第个,具体可以在C28xHardwareInterrupt的help中可以看到。然后,我们初始化好十个全局变量,t1表示第一个捕捉事件发生时计数器的值,t2表示第二个捕捉事件发生时计数器的值,t3表示第三个捕捉事件发生时计数器的值,T1表示t2-t1的差也就是测试方波的高电平时间对应的计数值,T2表示t3-t2的差也就是测试方波的低电平时间对应的计数值,CLK表示系统时钟周期,Duty表示实际方波的占空比,Frequence表示方波的频率,Period表示方波的周期,Flag表示检测完成标志位。HDI10KHz50%PWM中断中配置如下图,使用的是eCAP1模块,配置为连续控制模式,并在第三次事件之后停止计数并重置,第一次事件的触发极性为上升沿,第二次事件的触发极性为下降沿,第三次触发极性为上升沿,计数时间的数据类型为无符号的32位整形。中断配置为捕捉到第三次事件之后触发中断。上述配置完成后,在eCAP输出接上demux模块,并将输出的值赋予t1t2t3。T1T2FlagWhlie(1)CLK=1/150000000,。在上述模块搭建完成之后,生成工程代码,下载到开发板上观察现象。下图是信号发生器的配置,频率10kHz,占空比71%,幅度为5V。eQEP-正交解码在运动控制系统中,不仅仅需要获取实时的速度信息,有时候为了精确控制,也需要位置信息以及运动方向信息,F28335eQEP不仅仅可以获取速度信息,也可以获得方向信息以及位置信息。一般来说,根据光电编码器产生脉冲的方式不同,可以分为增量式、绝对式以及复合式3大类。光电编码器电机测速的基本原理速度测量是工控系统中最基本的需求之一,最常用的是用数字脉冲测量某根轴的转速,再根据机械比、直径换算成线速度。脉冲测速最典型的方法有测频率(M法)和测周期(T法)。定性分析:M法是测量单位时间内的脉数换算成频率,因存在测量时间内首尾的半个脉冲问题,可能会有2个脉的误差。速度较低时,因测量时间内的脉冲数变少,误差所占的比例会变大,所以M法宜测量高速。如要降低测量的速度下限,可以提高编码器线数或加大测量的单位时间,使用一次采集的脉冲数尽可能多。T法是测量两个脉冲之间的时间换算成周期,从而得到频率。因存在半个时间单位的问题,可能会有1个时间单位的误差。速度较高时,测得的周期较小,误差所占的比例变大,所以T法宜测量低速。如要增加速度测量的上限,可以减小编码器的脉冲数,或使用更小更精确的计时单位,使一次测量的时间值尽可能大。M法、T不能太长(得考虑实时性)M法、T法都无法胜任全速度范围内的测量。正交解码模块使用说明eQEP2,5V光耦隔离设计。增量式AB90°,通过正交解码器,可以计量出编码器的转向及脉冲数,从而可以获得转速以及转动的位置。在这里我们提供的正交解码工具箱,并没有采用自带的正交解码模块进行搭建转速以及位置的测量,我们将TI官方出的possspeed源码封入模型给大家使用,并提供TI的计算书说明,方便大家根据不同的编码器进行参数设计,快速的完成正交解码的程序设计。官方提供的源码,可以进行转速(rpm)支持高度低速测量,还有位置的测量。部分源码如下图所示:TI官方提供了该源码的参数计算书,如下图所示:通过相关参数的设定,即可计算出相应需要设置的参数,完成相应的速度测量,接下来我们简要看一下simulink的正交解码模型,其中SpeedRpm_pr高速测量、SpeedRpm_fr低速测量、DirectionQep为转动方向信息、theta_elec为电机电角度、theta_mech为电机电角度。提供了俩个模型,一个为初始化模型,一个为测量模型,初始化模型中,完成如下的参数设置:5测速结果、方向、电机机械角度、电机电角度。现在我们来解析一下计算书的使用:TI1000序分为高速测速以及低速测速俩部分,又成为单位时间测速和单位位置测速。打开Example_posspeed.xls根据表格有150MHZ及100MHz俩个选择以150MHZ为例,在开始之前,我们首先观察一下表格的右上角you对三种颜色的说明,红色--输入,绿色—输出信息需要进行配置,黄色—信息。如上图所示,红色方框中需要输入编码器线数*4,1000线编码器则为4000。如上图所示,俩个参数分别设置的是可以进行测量的最大转速和最低转速。对应模型中的如下参数设置:如上图红色框框中所示为,单位时间更新编码器频率,对应模型中的设置如下图所示,100HZ则为1500000的分频系数。此对应的是单位时间速度采样。QPPrslarMinimumQPClockpe-scalar此项中配置的为QEP最小的分频系数。及QEP的分频系数的最低限度。在模型中的相应配置如下图:32对应的参数是5,即2的5次方,128对应的是7,即2的7次方。如下图所示的CAPCuntvaluetMAXsped(SpdSlar)数设置:通过如上的设置,便可以完成正交编码器的设置。DLE的使用MCUWhlie(1)以使一些对工作周期要求不高的外设以及功能进行循环的扫描执行,例如矩阵OLEDTI提供的硬件支持包中,也很人性化的提供Idle。IdleTask模块的配置界面如下图所示。分别设置任务数以及是否具有抢占式优先级。这里的抢占式优先级不同于中断的抢占式优先级。它的功能是,当PreemptionFlag0WhliePreemptionFlag1的时候,则不作上述处理,当中断来临时,则优先执行中断。PreemptionFlag1关中断的指令。而当PreemptionFlag设置为的0,可以看到生成的代码中出现了开关中断的指令。所以在使用的时候,可以根据自己的需要选择。SIL软件在环测试软件在环测试的详细介绍内容请参考4.3.2相关内容,在这里我们采用三种软件在环测试其中的一种SimulationwithModelBlocks方式。MATLAB的官网文档中有详细的操作步骤,英文操作文档请详见的内容,在这里我们结合MATLAB自带的SIL例程给大家解剖,如何进行SIL在环测试。第一步:打开示例模型rtwdemo_sil_modelblock,可以在命令窗口直接输入open(‘rtwdemo_sil_modelblock.slx’)这样也可以直接打开模型。模型如下图所示:CounterABlockParameters(ModelReference),打开功能配置窗口。SimulationMode,Software-in-the-loop(SIL),如下图所示:第四步:在上图的Codeinterface选项中选择Topmodel,然后点击Ok。如果你配置了SIL仿真,指定portablewordsizes选项,选择CodeGeneration>Enableportablewordsizes.第五步:如果需要可以进行一下的配置:代码覆盖率。通过为顶级模型配置执行分析,为您的模型块执行代码执行分析。第六步:下面就可以运行模型了。PIL处理器在环测试4.3.2相关内容。在这里,将直接进PILDSP28335SCIAGPIO35GPIO36码才可以进行处理器在环测试。如下首先找到如下的串口.文件,找到图中的串口端口配置部分,按照图中修改,这样才可以与TUPID-DSP28335进行数据交换。C:\ProgramData\MATLAB\SupportPackages\R2017a\toolbox\target\supportpackages\tic2000_base\src\rtiostream_serial_c28x.cSimulinkDSP28335程DSP28335XDS100V1,XDS100V3,所以需要找到C:\ProgramData\MATLAB\SupportPackages\R2017a\toolbox\target\supportpackages\tic2000\CCS_Configf28335.ccxmlCCS接下来,我们就可以来说说,simulinkPIL处理器在环测试的事情了,在这里我们例举了一个官网的PIL在环测试的例程。首先在例程中我们准备了三个文件,分别是c2000_pil_block.slxcontroller.slxPILConfir.m,接下来来解读一下这三个文件的作用。首先PILConfir.m的源码如下图所示首先配置PIL的串口号,根据使用的具体串口号进行,然后配置端口的波特率,最后使能串口。点击运行即可。DSP端的串口已经完成配置,接下来,我们来PIL测试的仿真模型。DSPSimulink(simulink中参与仿真,但是输入输出的simulinksimlinkhexDSPsimulinkPorts&SubsystemsModel加载仿真模型controller.slxcontroller.slxBlockParametersPIL模式。controller.slxc2000_pil_block.slx的模型参数2000的代码生成模式进行配置(uild,loadndrun方式请参照本章的前面小节课程。在这里我们需要注意的是controller.slx以及PIL仿真模型c2000_pil_block.slx的模型参数配置需要一致,如果出现不一致的时候,根据错误信息提示进行相关配置即可,检验配置信息是否相同时,提供的错误信息,当修改完成之后,继续运行,仍然会得到如下的报错信息,这个时候就需要删除之前模型编译出的一些文件,然后继续运行即可。ControllerController(PIL)的俩个模型做差可以看到,在输入信号相同的情况下,两模型的运行结果差值是DSPreportccs工程,所report来分析运行的机制。由于串口115200,通信速率并不是很高,所以无法完成小固定步长的实时通PIL测试中,我的分析认为代码运行机制是这样的(可能有问题,希望与我们沟通讨论:1.模型并没有做固定步长运行处理,因为在源码中,没有看到关于定时器的相关信息。2.代码的运行和SimulinkSimulink模型仿真部分的输入输出信息是同步的(PIL测试没有意义PILPIL处理器在环测试技术。Report的界面如下图所示:2.13.1Codeprofiling(代码执行时间评估)通过如上的配置可以完成对于对于代码运行时间的评估,运行PIL测试之后,会弹出如下的界面:点击PIL测试模块,可以看到右侧的Profiling中显示了代码的运行时间如下图所示:接下来我们点击Viewfullcodeexecutionprofilingreport:1e-9模型代码生成顺序说明三.进阶篇(外设Simulink驱动模型)SimulinkDSP28335的外设开发,主要包含有蜂鸣器、流水灯呼吸灯、拨码开关、计数器、3x3键盘驱动、OLED(0.9寸)驱动、DACTLC5615驱动(电压源电流源、RS485-LIBMODBUS-MODBUS通信协议栈,支持多端口从模式)。蜂鸣器GPIO52PNP三极管的开关控制蜂鸣器的通断。在低电平时三极管导通,高电平时关断。SIMULINK的仿真模型搭建也很简单。系统仿真步长1s,只需控制IO的高低电平即可实现控制。仿真模型如下图所示。流水灯硬件流水灯模块由四个LED组成,分别对应端口PB8PB12PB13PB9。SIMULINK中逻辑设计利用最常规的延时开通关断设计,仿真步长1s。仿真模型如下图所示:其基本逻辑就是在每4个步长的时间过后,开关信号翻转一次,所有LED依次开关,形成循环效果。模拟量采集DC55路直流量并没有做点位抬升处理,所以无法直接采集负电压信号。直流信号的调理电路如下图所示,通过电压跟随,可起到隔离的作用,保护后级电路:输入信号衰减倍数计算为(5100/(10005100)*(5100/(6851000.8256,则建议输入电压范围为(03,5DAC1、DAC2、A4、A5、A6。AC在这里仅仅配置了一路的交流信号调理电路,交流采样电路的信号调理电路的计算公式如下:𝐴𝐶_𝑀𝐶𝑈=(3.3−3.6𝐴𝐷𝐶𝐴0𝐴𝐶)∗1015 22所以当外部输入电压为0V是,DSP模拟量接口A0处的电压为0V。电位器模拟量采集电位器的调理电路如上图所示,10K(03P3V的电压。拨码开关拨码开关是硬件中常用的器件,常用于控制模式的切换。本例将为大家演4OLED液晶显示屏上显示。硬件接口与流水灯复用,硬件连接上使用跳线帽连接至拨码开关一侧即可使用。SIMULINK的仿真模型如下图所示,仿真步长1e-3。其中K1-4为拨码开关对应的四个引脚的变量值。SAMPLE子系统为扫描检测拨码开关4个引脚对应IO的输入电平。Bin子系统为数据处理模块,将IO的输入值变成十进制数表示的二进制码形式。SystemInitialize为OLED液晶显示的初始化,display模块将数据显示在OLED液晶屏上。SAMPLE子系统模块的内部结构如下:使用memorycopy将各引脚的输入电平从GPIO的数据寄存器中读出来,再赋值给对应的K1-4。寄存器相关查询,在F28335的数据手册中可以查到。例如读取GPIO18的数据寄存器的值配置如下图所示,其他引脚以此类推。BIN子系统模块中结构如下图所示,也就是简单的十进制乘法。最后将得到的值赋予变量value,并在OLED上显示。计数器(Stateflow)StateFlowSimulinkSimulink功能的有效拓展,在系统中可以用图形化工具实现状态之间的迁移以及逻辑的处理。本节用计数器的实现作为例子,来展示StateFlow和Simulink的结合使用。计数器整体模型如下图所示,其中StartLap分别按键中断的标志位,控制计数器的启动停止以及记录数据;MINSECPERCENT间的关系为MIN=60*SEC=100*PERCENT,MINBUFSECBUFPERCENTBUF分别表示对应变TICPERCENTPERCENT1;再在对应的条件满足之后,MINSEC=11Start11IdleOLED上。计数器的StateFlow结构图如下图所示。在ModelExplorer中对所有的变量进行定义StateFlow的配置为C语言运行,由于模型没有位运算,故不使能位运算功能。InterruptGPIO58GPIO59XINT3XINT5help在以上配置完成后,生成CCS工程代码,并下载到开发板观察实验现象。3X3键盘驱动IO进行循环的扫描得口。使用时,通过行列扫描,达到使用的目的。矩阵键盘硬件电路如下图所示,使用了6个GPIO端口。其中GPIO20GPIO21GPIO22为输出模式,GPIO23GPIO29GPIO61为输入模式。DSP在读取键盘输入的值以后,将数据显示在数码管上。SIMULINK1e-3SystemInitalize中GPIO的初始化,Mode

温馨提示

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

评论

0/150

提交评论