通过TMS320F28335学习DSP的开发流程——28335的基础知识(1)
1、TMS320F28335內(nèi)核的主要特點
①F28335 DSP集成了DSP和微控制器的長處,如DSP的主要特征、單周期乘法運算,F28335能夠在一個周期內(nèi)完成32x32位的乘法累加運算,或者兩個16x16位乘法累加運算,而同樣32位的普通單片機則需要4個周期以上才能完成
②快速的中斷響應
③可在任何內(nèi)存位置進行單周期讀、修改、寫操作
④可采用C/C++編程軟件,效率非常高
2、處理器的主要資源
①32位浮點DSP,主頻是150MHz,方便電機控制、電力設備控制及工業(yè)控制等。
②片上存儲器:FLASH–256Kx16位;SRAM–34Kx16位;BOOT ROM–8Kx16位;OPT ROM–2Kx16位。其中FLASH、OPT ROM受口令保護,可以保護用戶程序。
③片上外設:PWM–18路;HRPWM–6路;CAP–6路;QEP–2通道;ADC–2*8通道,12位,80ns轉(zhuǎn)換時間,0-3V輸入量程;SCI–3通道;MCBPS–2通道;CAN–2通道;SPI–1通道;I2C–1通道;外部存儲器擴展接口–XINTF;通用輸入/輸出IO–88個;看門狗電路。
3、與DSP2812的性能對比
3、存儲器與寄存器
(1)存儲器映射
存儲器本身不具有地址信息,它的地址是由芯片廠商或用戶分配,給存儲器分配地址的過程稱為存儲器映射,如果再分配一個地址就叫重映射。
(2)F28335存儲器特點
F28335是采用多級流水線的增強的哈佛總線結構,能夠并行訪問程序和數(shù)據(jù)存儲空間。在F28335芯片內(nèi)部集成了大量的不同的存儲介質(zhì),F28335片上有256K×16位的FLASH,34K×16位的SARAM,8K×16位的BOOT ROM,2K×16位的OPT ROM,采用統(tǒng)一尋址方式(程序、數(shù)據(jù)和I/O統(tǒng)一尋址),從而提高了存儲空間的利用率,方便程序的開發(fā)。除此之外,F28335還提供了外部并行擴展接口XINTF,可進一步外擴存儲空間。
(1)片上SARAM
(2)BOOT ROM
(3)片上FLASH和OTP
(3)寄存器映射
通過#pragma預處理命令和DATA_SECTION將定義的寄存器指定到相應的存儲單元內(nèi),然后即可通過C語言來操作這些寄存器。
比方說我們找到0x007010這個單元地址,那么可以通過查閱芯片數(shù)據(jù)手冊了解到此單元是系統(tǒng)控制寄存器功能(至于此地址如何查找這個功能我們后面會具體介紹)。因此為了更好區(qū)分此單元的功能和方便后續(xù)的程序開發(fā),可以給這個單元取一個別名SysCtrlRegs,那么這個SysCtrlRegs就是寄存器,并且這個寄存器地址就是0x007010。這個過程就是寄存器映射。
(4)如何訪問F28335寄存器內(nèi)容
根據(jù)#pragma和DATA_SECTION(這些是CCS軟件內(nèi)特定的)的特點,可以使用#pragma和DATA_SECTION將定義的寄存器與實際的存儲單元對應起來,然后再使用C語言操作定義的寄存器,比如使用結構體等。假如我們要讓F28335的GPIOC的第68管腳輸出低電平,我們怎么使用 C 語言來處理?
(1)首先要知道GPIO外設每類寄存器所對應存儲單元的首地址是哪個,比如GPIO控制寄存器,通過查詢數(shù)據(jù)手冊可知其首地址是0x006F80,然后使用#pragma和DATA_SECTION將定義的寄存器與實際的存儲單元對應起來。
該定義可在DSP2833x_GlobalVariableDefs.c文件中查找到
volatile struct GPIO_CTRL_REGS GpioCtrlRegs;GPIO數(shù)據(jù)寄存器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 GPACTRL_REG {Uint32 all;struct GPACTRL_BITS bit; };// GPIO A control register bit definitions */ struct GPACTRL_BITS { // bits descriptionUint16 QUALPRD0:8; // 7:0 Qual period Uint16 QUALPRD1:8; // 15:8 Qual period Uint16 QUALPRD2:8; // 23:16 Qual period Uint16 QUALPRD3:8; // 31:24 Qual period };所以要讓GPIO68輸出一個低電平可使用C語言調(diào)用結構體內(nèi)成員,如下:
GpioDataRegs.GPCCLEAR.bit.GPIO68=1;//設置GPIO輸出低電平信號總結
以上是生活随笔為你收集整理的通过TMS320F28335学习DSP的开发流程——28335的基础知识(1)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在Ubuntu 将PHP5升级到PHP
- 下一篇: LCD1602字符串显示(STM32F1