凌亂的DSP筆記(1)-F28335基礎知識

學習資源:普中科技DSP TMS320F2833五、CCS6.0.0編程

1. 開發板功能及使用介紹

演示文稿1

主要功能:電機控制,加強型PWM。安全

使用方法:安裝CCS軟件,安裝DSP仿真器驅動,給開發板供電並經過仿真器鏈接電腦。學習

2. DSP TMS320F28335介紹

2.1 命名

TMS:前綴(合格設備),320:系列號(DSP Family),F:工藝(Flash EEPROM),28335:設備類型,PGF:封裝形式(176引腳QFP封裝),A:溫度範圍(40~85℃)。測試

2.2 F28335內核的主要特色

  1. 集成了DSP和微控制器的長處,F28335可以在一個週期內完成32×32位的乘法累加運算,或者兩個16×16位的乘法累加運算;
  2. 快速的中斷響應;
  3. 可在任何內存位置進行單週期讀、修改、寫操做;
  4. 可採用C/C++編程,效率很是高。

2.3 F28335處理器的主要資源

  1. 32位浮點DSP,主頻是150MHz,方便電機控制,電力設備控制及工業控制等;
  2. 片上存儲器:Flash——256K×16位,SRAM——34K×16位,BOOT ROM——8K×16位,OPT ROM——2K×16位;
  3. 片上外設:PWM——18路,HRPWM——6路,CAP——6路,QEP——2通道,ADC——2×8通道,12位,80ns轉換時間,0~3V量程(採集高電壓能夠在外部分壓),SCI——3通道,MCBPS——2通道,CAN——2通道,SPI——1通道,I2C——1通道,外部存儲器擴展接口——XINTF,通用輸入/輸出IO——88個,看門狗電路。

與2812對比:ui

image

image

2.4 引腳分佈

  1. JTAG引腳:燒錄程序,調試時燒錄到RAM,最終燒錄到Flash;
  2. 時鐘引腳:X一、X2;
  3. 復位引腳:XRS;
  4. 電源引腳:VDD、VSS…;
  5. ADC信號引腳:16路;
  6. GPIO和外設信號引腳。

2.5 F28335能作什麼

  1. 自動化技術;
  2. 智能測量儀器;
  3. 家用、商用電子產品;
  4. 通訊;
  5. 軍事領域。

3. 最小系統介紹

3.1 最小系統組成

1. 電源電路

image

兩個供電端→開關→轉壓。D8爲指示燈。加密

模擬、數字隔離。spa

2. 復位電路

image

RST1手動復位,XRS直接接地。電容充電電路:開機復位。操作系統

3. 晶振電路

image

提供系統時鐘。3d

30MHz,X1和X2接晶振,XCLKIN接地。調試

4. 下載電路

image

配合JTAG下載器。

C_D3.3V上拉,GND下拉。

3.2 F28335啓動模式

TMS320F28335支持多種啓動模式。

image

經過4個撥碼選擇16種啓動方式:

image

4. CCS6工程導入

Project→Import CCS Projects…

image

View→Project Explorer

image

View→Target Configuration

image

Test Connection:測試是否鏈接成功。

image

image

image

編譯、調試。

image

image

5. 存儲器與寄存器

5.1 存儲器映射

給存儲器分配地址的過程就是存儲器映射。

1. 存儲器分配

F28335片上有256K×16位的FLASH,34K×16位的SARAM,8K×16位的BOOT ROM,2K×16位的OPT ROM,採用統一尋址方式(程序、數據和I/O統一尋址),從而提升了存儲空間的利用率,方便程序的開發。除此以外,F28335還提供了外部並行擴展接口XINTF,可進一步外擴存儲空間。

2. F28335存儲器特色

F28335是採用多級流水線的加強的哈佛總線結構,可以並行訪問程序和數據存儲空間。

(1)片上SARAM

(2)BOOT ROM

(3)片上FLASH和OTP

image

flash分區:(共256K×16)

image

3. 代碼安全模塊

經過一個128位的密碼(至關於8個16位的字)來對安全區來進行加密或解密。這段密碼保存在FLASH的最後8個字中(0X33FFF8-OX33FFFF),也就是密碼區中(PWL) ,經過密碼匹配( PMF ) , 能夠解鎖器件。

全1表示未加密,全0則不能解鎖。

4. 外部存儲器接口XINTF

5.2 寄存器和寄存器映射

經過#pragma預處理命令和DATA_SECTION將定義的寄存器指定到相應的存儲單元內,而後便可經過C語言來操做這些寄存器。

比方說咱們找到0x007010這個單元地址,那麼能夠經過查閱芯片數據手冊瞭解到此單元是系統控制寄存器功能。所以爲了更好區分此單元的功能和方便後續的程序開發,能夠給這個單元取一個別名SysCtrlRegs,那麼這個SysCtrlRegs就是寄存器,而且這個寄存器地址就是0x007010。這個過程就是寄存器映射。

5.3 如何訪問寄存器內容

對於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輸出低電平信號

6. 建立工程模板

6.1 基礎文件獲取

TI頭文件下載地址:http://www.ti.com/tool/CONTROLSUITE?keyMatch=controlsuite&tisearch=Search-EN

目錄:\device_support\f2833x\v141

image

\DSP2833x_common\cmd:

image

28335_RAM_lnk:仿真調試,F28335:燒錄到Flash。

\DSP2833x_common\include:頭文件;\DSP2833x_common\lib:運算庫文件;\DSP2833x_common\source:源文件。

\DSP2833x_headers\cmd:是否使用操做系統。

image

\DSP2833x_headers\include:頭文件;\DSP2833x_headers\source:全局定義。

6.2 新建工程

Project→New CCS Project…

image

自動生成的文件:

image

一個完整的基礎工程的構成文件:

  1. 首先須要仿真調試或者flash燒寫所需的.cmd文件和DSP的BIOS或nonBIOS .cmd文件;
  2. 其次須要咱們使用的芯片的.ccxml目標配置文件;
  3. 芯片內核及外設.c源文件,好比DSP2833x_Gpio.c、DSP2833x_PieCtrl.c等;
  4. 芯片內核及外設.h頭文件,好比DSP2833x_Gpio.h、DSP2833x_PieCtrl.h等;
  5. DSP .lib庫文件,經常使用的如IQmath.lib等。

6.3 添加文件

右擊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

相關文章
相關標籤/搜索