学习资源:普中科技DSP TMS320F2833五、CCS6.0.0编程
主要功能:电机控制,加强型PWM。安全
使用方法:安装CCS软件,安装DSP仿真器驱动,给开发板供电并经过仿真器链接电脑。学习
TMS:前缀(合格设备),320:系列号(DSP Family),F:工艺(Flash EEPROM),28335:设备类型,PGF:封装形式(176引脚QFP封装),A:温度范围(40~85℃)。测试
与2812对比:ui
两个供电端→开关→转压。D8为指示灯。加密
模拟、数字隔离。spa
RST1手动复位,XRS直接接地。电容充电电路:开机复位。操作系统
提供系统时钟。3d
30MHz,X1和X2接晶振,XCLKIN接地。调试
配合JTAG下载器。
C_D3.3V上拉,GND下拉。
TMS320F28335支持多种启动模式。
经过4个拨码选择16种启动方式:
Project→Import CCS Projects…
View→Project Explorer
View→Target Configuration
Test Connection:测试是否链接成功。
编译、调试。
给存储器分配地址的过程就是存储器映射。
F28335片上有256K×16位的FLASH,34K×16位的SARAM,8K×16位的BOOT ROM,2K×16位的OPT ROM,采用统一寻址方式(程序、数据和I/O统一寻址),从而提升了存储空间的利用率,方便程序的开发。除此以外,F28335还提供了外部并行扩展接口XINTF,可进一步外扩存储空间。
F28335是采用多级流水线的加强的哈佛总线结构,可以并行访问程序和数据存储空间。
(1)片上SARAM
(2)BOOT ROM
(3)片上FLASH和OTP
flash分区:(共256K×16)
经过一个128位的密码(至关于8个16位的字)来对安全区来进行加密或解密。这段密码保存在FLASH的最后8个字中(0X33FFF8-OX33FFFF),也就是密码区中(PWL) ,经过密码匹配( PMF ) , 能够解锁器件。
全1表示未加密,全0则不能解锁。
经过#pragma预处理命令和DATA_SECTION将定义的寄存器指定到相应的存储单元内,而后便可经过C语言来操做这些寄存器。
比方说咱们找到0x007010这个单元地址,那么能够经过查阅芯片数据手册了解到此单元是系统控制寄存器功能。所以为了更好区分此单元的功能和方便后续的程序开发,能够给这个单元取一个别名SysCtrlRegs,那么这个SysCtrlRegs就是寄存器,而且这个寄存器地址就是0x007010。这个过程就是寄存器映射。
对于GPIO控制寄存器,经过查询数据手册可知其首地址是0x006F80,而后使用#pragma和DATA_SECTION将定义的寄存器与实际的存储单元对应起来。
#pragma DATA_SECTION(GpioCtrlRegs,"GpioCtrlRegsFile");
volatile struct GPIO_CTRL_REGS GpioCtrlRegs;
该定义可在DSP2833x_GlobalVariableDefs.c文件中查找到。
GpioCtrlRegsFile是SECTIONS内定义的,该定义可在DSP2833x_Headers_nonBIOS.cmd文件中查找到。
GPIO数据寄存器GPIO_DATA_REGS:
struct GPIO_DATA_REGS { union GPADAT_REG GPADAT; // GPIO Data Register (GPIO0 to 31) union GPADAT_REG GPASET; // GPIO Data Set Register (GPIO0 to 31) union GPADAT_REG GPACLEAR; // GPIO Data Clear Register (GPIO0 to 31) union GPADAT_REG GPATOGGLE; // GPIO Data Toggle Register (GPIO0 to 31) union GPBDAT_REG GPBDAT; // GPIO Data Register (GPIO32 to 63) union GPBDAT_REG GPBSET; // GPIO Data Set Register (GPIO32 to 63) union GPBDAT_REG GPBCLEAR; // GPIO Data Clear Register (GPIO32 to 63) union GPBDAT_REG GPBTOGGLE; // GPIO Data Toggle Register (GPIO32 to 63) union GPCDAT_REG GPCDAT; // GPIO Data Register (GPIO64 to 95) union GPCDAT_REG GPCSET; // GPIO Data Set Register (GPIO64 to 95) union GPCDAT_REG GPCCLEAR; // GPIO Data Clear Register (GPIO64 to 95) union GPCDAT_REG GPCTOGGLE; // GPIO Data Toggle Register (GPIO64 to 95) Uint16 rsvd1[8]; };
union GPCDAT_REG { Uint32 all; struct GPCDAT_BITS bit; };
all可对32位总体操做,通常使用bit进行位操做。
struct GPCDAT_BITS { // bits description Uint16 GPIO64:1; // 0 GPIO64 Uint16 GPIO65:1; // 1 GPIO65 Uint16 GPIO66:1; // 2 GPIO66 Uint16 GPIO67:1; // 3 GPIO67 Uint16 GPIO68:1; // 4 GPIO68 ... Uint16 GPIO87:1; // 23 GPIO87 Uint16 rsvd1:8; // 31:24 reserved };
因此要让GPIO68输出一个低电平可以使用C语言调用结构体内成员,以下:
GpioDataRegs.GPCCLEAR.bit.GPIO68=1;//设置GPIO输出低电平信号
TI头文件下载地址:http://www.ti.com/tool/CONTROLSUITE?keyMatch=controlsuite&tisearch=Search-EN
目录:\device_support\f2833x\v141
\DSP2833x_common\cmd:
28335_RAM_lnk:仿真调试,F28335:烧录到Flash。
\DSP2833x_common\include:头文件;\DSP2833x_common\lib:运算库文件;\DSP2833x_common\source:源文件。
\DSP2833x_headers\cmd:是否使用操做系统。
\DSP2833x_headers\include:头文件;\DSP2833x_headers\source:全局定义。
Project→New CCS Project…
自动生成的文件:
一个完整的基础工程的构成文件:
右击User→New→Source File→main.c
#include "DSP2833x_Device.h" // DSP2833x Headerfile Include File #include "DSP2833x_Examples.h" // DSP2833x Examples Include File void main() { }
右击工程→Properties→Include Options:添加对应头文件路径。
工程结构:
│ .ccsproject │ .cproject │ .project │ 28335_RAM_lnk.cmd │ F28335.cmd │ ├─.settings │ … │ ├─APP ├─Debug │ … │ ├─include │ DSP2833x_Adc.h │ DSP2833x_CpuTimers.h │ DSP2833x_DefaultIsr.h │ DSP2833x_DevEmu.h │ … │ ├─Libraries │ DSP2833x_ADC_cal.asm │ DSP2833x_CodeStartBranch.asm │ DSP2833x_DefaultIsr.c │ DSP2833x_GlobalVariableDefs.c │ DSP2833x_Gpio.c │ DSP2833x_Headers_nonBIOS.cmd │ DSP2833x_PieCtrl.c │ DSP2833x_PieVect.c │ DSP2833x_SysCtrl.c │ DSP2833x_usDelay.asm │ IQmath.lib │ ├─targetConfigs │ readme.txt │ TMS320F28335.ccxml │ └─User main.c