學習資源:普中科技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