1
eZDSP F2812 Code Composer Studio
: , TMS320F2812.
, Code Composer Studio.
. 1.1 eZDSP320F2812 c . TMS320F2812 , (+3.3 +1.9 ), JTAG-, . Zwickau Adapterboard, (. 1.1). , , , , , FLASH-, , RS-232 CAN, . LPT-.
Code Composer Studio (CCS) Texas Instruments. , . () , () (. 1.2). (Project), , , , . , . ( , ) .
. 1.1. eZDSP Zwickau Adapterboard
. 1.2. Code Composer Studio
(*.obj) (*.out), , . , (, ++, ). . , . .
1. .
Project → New . Project Name Lab1. Location , E:\DspUser\Lab1. Project Type Executable (.out), Target TMS320C28XX. , Debug → Connect.
|
|
2. .
File → New → Sourse File . . () , . 1.3. , . 1, lab1.c File → Save as: lab1.c.
unsigned int k;
void main (void)
{
unsigned int i;
while(1)
{
for (i=0;i<100;i++)
k=i*i;
}
}
. 1.3.
3. .
. Project → Add files to Project, : lab1.c. Source . , Project → Add files to Project :
C:\tidcs\c28\dsp281x\v100\DSP281x_common\cmd\F2812_EzDSP_RAM_lnk.cmd
C:\CCStudio_v3.3\C2000\cgtools\lib\rts2800_ml.lib
Add files to Project.
4. .
, . Project → Compile File ( Ctrl+F7) . :
Compile Complete,
0 Errors, 0 Warnings, 0 Remarks.
5. .
-:
Project → Build Options → Linker → Libraries → Search Path: C:\CCStudio_v3.3\C2000\cgtools\lib
Project → Build Options → Linker → Libraries → Search Path Linker → Incl. Libraries: rts2800_ml.lib
0400:
Project → Build Options → Linker → Basic → Stack Size (-stack): 0x400 ( 0x hex-).
6. eZDSP.
Project → Build ( F7) . , , . hex-, . - : File→Load Program→Debug\lab1.out. , . out- , Load Program After Build Option→Customize→Program/Project/CIO.
:
1) , .
2) .
7. .
|
|
. Debug → Reset CPU ( Ctrl+R) Debug → Restart ( Ctrl+Shift+F5).
Debug → Go Main ( Ctrl+M) void main (void) . Go Main , . .
.
Debug → Run ( F5) . Running. Debug → Halt ( Shift+F5) .
Debug → Step Into F11. F11, .
8. .
View → Watch Window . Name , i k ( , , Add to Watch Window). Value , . Type (, ..), Radix (, , .). Watch Window . , , Add Globals to Watch, , .
9. (Breakpoint).
(Breakpoint) Code Composer Studio . Breakpoint , , , . (F5) , ( ). Breakpoint, . Breakpoint (Run) Watch ( ).
(. 1.3) , . 1.4.
unsigned int k;
void main (void)
{
unsigned int i;
while(1)
{
for (i=0;i<100;i++)
{
k=2;
k=i*i;
}
}
}
. 1.4.
10. Animate.
Animate . Debug → Animate ( Shift+F5) . Option → Customize → Debug Properties → Animate Speed. , 1 .
11. .
, View → Registers → CPU Register View → Registers → Status Register. , .
1. Breakpoint 7, 9 10 , . 1.4. (Run) .
i k Watch. .
|
|
2. Breakpoint, Animate. , Watch ( i k). .
3. CPU Register Status Register, Animate. .
4. , , (Window → Disassembly). . , (Window → Lab1.c). . Breakpoint.
:
, , , , .
:
1. eZDSP320F2812 Zwickau Adapterboard.
2. Code Composer Studio. , , .
3. Code Composer Studio. .
4. Code Composer Studio. .
5. Code Composer Studio. (Breakpoint).
6. Code Composer Studio. .
7. :
- ;
- ;
- .
2
, / TMS320F2812
: , - , , .
C28x . 2.1. .
. 2.1. C28x
C28x . 2.2. (Single Access RAM SARAM, ) 18 , 0, M1 (2x1), L0, L1 (2x4) 0 (8). , , .. , . F2812 - 128 (4 8 6 16).
C28x, (CPU) (, , .), . 28x ( CPU), / () , . , .. , (. . 2.2).
|
|
. 2.2. C28x
Peripheral Frame 0 (PF0, 2K, 0x00 0800
0x00 0FFF) XINTF, PIE, Flash-, , CSM;
Peripheral Frame 2 (PF2, 4K, 0x00 60000x00 6FFF) eCAN;
Peripheral Frame 1 (PF1, 4K, 0x00 7000
0x00 7FFF) , - GPIO, EVA/EVB, McBSP, SCI, SPI, .
GPIOA, GPIOB, GPIOD, GPIOE, GPIOF, GPIOG. GPIO (general purpose input/output) / .
, / . , : , . . 2.3 .
. 2.3. - F2812
6 (GPxMUX, , , x ). 0, ; 1 , .. (pin) (. . 2.4). :
- GPxDAT ( , );
- GPxSET ( );
- GPxCLEAR ( );
- GPxTOGGLE ( ).
. 2.4. GPIO
. GPxDIR:
0 , 1 . A, B, D E (Input Qualification feature) 7-0 GPxQUAL. , 2 (GPxQUAL=0x01) 510 (GPxQUAL=0xFF) SYSCLKOUT, .
. , 28 , . , . OSCCLK, ,
30 . 150 5 (OSCCLK*10/2, . . 2.5). PLLCR.
. 2.5. PLLCR
, : LOSPCP HISPCP (. 2.6), .
, . , , . LOSPCP HISPCP.
. 2.6. HISPCP LOSPCP
28 , / PCLKCR (. 2.7).
EVAENCLK | HSPCLK EVA |
EVBENCLK | HSPCLK EV |
ADCENCLK | HSPCLK (ADC) |
SPIAENCLK | LSPCLK SPI |
SCIAENCLK | LSPCLK SCI-A |
SCIBENCLK | LSPCLK SCI-B |
MCBSPENCLK | LSPCLK McBSP |
ECANENCLK | eCAN |
. 2.7. PCLKCR: 1 ; 0 .
|
|
(Watchdog timer WDT, . 2.8) WDCNTR, - WDINT WDRST ( ). WDT .
101, , WDCHK 20 WDCR (. 2.9) , ( , ). WDCNTR 0x55 + 0xAA WDKEY.
. 2.8.
. 2.9. WDCR
WDFLAG , : (WDFLAG=0) (WDFLAG=1). WDPS 20 . WDDIS () WDT.
(System Control and Status
Register SCSR, . 2.10) . WDINTS WDINT. WDENINT WDT ( ). WDENINT=0 WDRST, WDENINT=1 WDINT.
WDOVERRIDE 1, , .. WDDIS WDCR. , WDOVERRIDE, 1, .
. 2.10. SCSR
I
I , : (. . 2.11, ), , , (. . 2.11, ). GPIOB7 GPIOB0 (1 , 0 ), GPIOB15 GPIOB8 (1 , 0 ).
. 2.11. : ) ; ) .
1. .
Code Composer Studio Lab2.pjt. Project Name Lab2. Location , E:\DspUser\Lab2.
1.1. _lab2_.c E:\DspUser\Templates. ? , (. 2.12). E:\DspUser\Lab2 Lab2.c. :
Project → Add files to Project.
1.2. , , , ( , , Add files to Project):
C:\tidcs\c28\dsp281x\v100\DSP281x_common\cmd\F2812_EzDSP_RAM_lnk.cmd
C:\tidcs\c28\dsp281x\v100\DSP281x_headers\cmd\DSP281x_Headers_nonBIOS.cmd
C:\CCStudio_v3.3\C2000\cgtools\lib\rts2800_ml.lib
C:\tidcs\c28\dsp281x\v100\DSP281x_headers\source\DSP281x_GlobalVariableDefs.c
2. .
2.1. , Project → Build Options, Compiler Preprocessor Include Search Path (-i) :
C:\tidcs\C28\dsp281x\v100\DSP281x_headers\include;..\include
2.2. .
-:
Project → Build Options → Linker → Libraries → Search Path: C:\CCStudio_v3.3\C2000\cgtools\lib
Project → Build Options → Linker → Libraries → Search Path Linker → Incl. Libraries: rts2800_ml.lib
0400:
Project → Build Options → Linker → Basic → Stack Size (-stack): 0x400
//##################################################################
// : _Lab2_.c
//
// : 8 ,
// GPIOB0 - GPIOB7, " ".
// -
//##################################################################
#include "DSP281x_Device.h" //
void delay_loop(long);
void Gpio_select(void);
void InitSystem(void);
void main(void)
{
unsigned int i;
unsigned int LED[8]= {0x0001,0x0002,0x0004,0x0008,
0x0010,0x0020,0x0040,0x0080};
InitSystem(); //
Gpio_select(); // /
while(1)
{
for(i=0;i<14;i++)
{
if(i<7) GpioDataRegs.GPBDAT.all = LED[i];
else GpioDataRegs.GPBDAT.all = LED[14-i];
delay_loop(?);
}
}
}
//##################################################################
// : delay_loop
//
// :
//##################################################################
void delay_loop(long end)
{
long i;
for (i = 0; i < end; i++);
EALLOW; //
//SysCtrlRegs.WDKEY = 0x?;
//SysCtrlRegs.WDKEY = 0x?;
EDIS;
}
//##################################################################
// : Gpio_select
//
// : GPIO B15-8 ,
// B7-0 . A, D, F, E, G
// .
//##################################################################
void Gpio_select(void)
{
EALLOW;
GpioMuxRegs.GPAMUX.all = 0x?; // /
GpioMuxRegs.GPBMUX.all = 0x?; //
GpioMuxRegs.GPDMUX.all = 0x?;
GpioMuxRegs.GPFMUX.all = 0x?;
GpioMuxRegs.GPEMUX.all = 0x?;
GpioMuxRegs.GPGMUX.all = 0x?;
GpioMuxRegs.GPADIR.all = 0x?; // , D, E, F, G
//
GpioMuxRegs.GPBDIR.all = 0x?; // 15-8 ,
GpioMuxRegs.GPDDIR.all = 0x?; // 7-0
GpioMuxRegs.GPEDIR.all = 0x?;
GpioMuxRegs.GPFDIR.all = 0x?;
GpioMuxRegs.GPGDIR.all = 0x?;
GpioMuxRegs.GPAQUAL.all = 0x?; //
GpioMuxRegs.GPBQUAL.all = 0x?;
GpioMuxRegs.GPDQUAL.all = 0x?;
GpioMuxRegs.GPEQUAL.all = 0x?;
EDIS;
}
//#####################################################################
// : InitSystem
//
// : ,
// = 1.
// . 150 .
//
// 2,
// - 4.
//
//#####################################################################
void InitSystem(void)
{
EALLOW;
SysCtrlRegs.WDCR= 0x?; // // , = 64
// -
// , = 1
SysCtrlRegs.SCSR =?; // WDT
SysCtrlRegs.PLLCR.bit.DIV =?;//
SysCtrlRegs.HISPCP.all = 0x?;//
SysCtrlRegs.LOSPCP.all = 0x?; //
SysCtrlRegs.PCLKCR.bit.EVAENCLK=?; //
SysCtrlRegs.PCLKCR.bit.EVBENCLK=?; //
SysCtrlRegs.PCLKCR.bit.SCIAENCLK=?;
SysCtrlRegs.PCLKCR.bit.SCIBENCLK=?;
SysCtrlRegs.PCLKCR.bit.MCBSPENCLK=?;
SysCtrlRegs.PCLKCR.bit.SPIENCLK=?;
SysCtrlRegs.PCLKCR.bit.ECANENCLK=?;
SysCtrlRegs.PCLKCR.bit.ADCENCLK=?;
EDIS;
}
. 2.12.
3. .
Lab2.c
InitSystem().
3.1. WDCR (. . 2.9), (WDDIS=0), WDFLAG, Watchdog-, 1 (WDPS0, WDPS1, WDPS2=0). 1
(. . 2.12).
3.2. SCSR (. . 2.10) Watchdog-. WDENINT 0, WDOVERRIDE 0 , (. 2
. 2.12).
3.3. PLLCR (. . 2.5) , 30 SYSCLKOUT 150 (. 3 . 2.12).
3.4. HISPCP
(. . 2.6) 2, (LOSPCP) 4 (. 3 . 2.12).
3.5. - PCLKCR (. . 2.7) (. 4 . 2.12).
4. .
Gpio_select().
4.1. - GPxMUX (. 5 . 2.12).
4.2. - GPxDIR A, D, E, F, G (. 5 . 2.12).
GPIOB GPIOB15 GPIOB8 , GPIOB7 GPIOB0 (. 5 . 2.12).
4.4. GPxQUAL A, B, D, E (. 5 . 2.12).
5.
delay_loop() (. 6 . 2.12) n . ( ):
.
6. , .
6.1. : Project → Compile File. , .
6.2. : Project → Build. , .
6.3. : File → Load Program → Debug\ lab2.out ( , , ).
7. .
7.1. : Debug → Reset CPU, Debug → Restart.
7.2. void main (void) : Debug → Go main.
7.3. : Debug → Run. , .
, , GPIOB. :
- ;
- , ●;
- GpioDataRegs.GPBDAT, Add to Watch Window;
- + GpioDataRegs.GPBDAT Watch Window, bit, GPIOB (. 2.13);
- () , // delay_loop(?);
- (Project → Save), ;
- Animate, GPIOB.
8. .
8.1. .
8.2. InitSystem() WDCR (. 1 . 2.12). WDPS 64 (. . 2.8, 2.9).
8.3. delay_loop() // , WDKEY (. 7 . 2.12), Watchdog-:SysCtrlRegs.WDKEY = 0x55, SysCtrlRegs.WDKEY = 0xAA.
/WDRST Watchdog- :
WDT (.. ), t ≤ tWDRST.
8.4. , .
. 2.13. GPIOB Watch Window
9. .
9.1. Lab2.c , Lab2a.c.
9.2. Lab2a.c ,
(. . 2.11, ).
9.3. Lab2a.c Lab2.c ( Remove from project).
9.4. , .
II
II ( , ), .
1. .
1.1. Lab2.c , Lab2b.c.
1.2. Lab2b.c. ( ), , . , , (GPIOB), , GPIOB 8 :
GpioDataRegs.GPBDAT.all = GpioDataRegs.GPBDAT.all >> 8
,
InitSystem() Gpio_select() .
1.3. Lab2b.c Lab2a.c.
1.4. , .
2. .
2.1. Lab2.c , Lab2c.c.
2.2. Lab2c.c. . 2.11, , (0,1*N+0,001) , N , B15B8. InitSystem() Gpio_select() .
2.3. Lab2c.c Lab2b.c.
2.4. , .
:
, , , , .
:
1. C28x.
2. C28x.
3. /, , .
4. TMS320F2812.
5. TMS320F2812. , , .
6. Watchdog timer: , , .
7. , , GPIOD1, , GPIOD6
(0 , 1 )?
.
8. , .
3