#include "DSP28x_Project.h" // Device Headerfile and Examples Include File
// Prototype statements for functions found within this file.
// interrupt void ISRTimer2(void);
void delay_loop(void);
void spi_fifo_init(void);
void spi_init(void);
void error(void);
void init_max6951(void);
void led_input(Uint16);
unsigned int Spi_TxReady(void);
void main(void)
{
InitSysCtrl();
InitSpiaGpio();
DINT;
InitPieCtrl();
IER = 0x0000;
IFR = 0x0000;
InitPieVectTable();
//PieCtrlRegs.PIEIER6.bit.INTx1=1;
//PieCtrlRegs.PIEIER6.bit.INTx2=1;
//IER=0x20;
EINT;
ERTM;
/**************************************************************************************************/
EALLOW;
GpioCtrlRegs.GPAMUX1.bit.GPIO7 = 0;
GpioCtrlRegs.GPAPUD.bit.GPIO7 = 0;
GpioCtrlRegs.GPADIR.bit.GPIO7 = 1; //输出
GpioCtrlRegs.GPAQSEL1.bit.GPIO7 = 3;
GpioDataRegs.GPACLEAR.bit.GPIO7 = 1;
EDIS;
/*************************************************************************************************/
// Step 4. Initialize all the Device Peripherals:
// This function is found in DSP2802x_InitPeripherals.c
//InitPeripherals(); // Not required for this example
spi_fifo_init(); // Initialize the Spi FIFO
spi_init(); // init SPI
init_max6951();
// Step 5. User specific code:
// Interrupts are not used in this example.
for(;;)
{
led_input(0x6001);
led_input(0x6102);
led_input(0x6203);
led_input(0x6304);
led_input(0x6405);
led_input(0x6506);
led_input(0x6607);
led_input(0x6708);
}
}
// Step 7. Insert all local Interrupt Service Routines (ISRs) and functions here:
void delay_loop()
{
long i;
for (i = 0; i < 1000; i++){}
}
void error(void)
{
asm(" ESTOP0"); // Test failed!! Stop!
for (;;);
}
void spi_init()
{
SpiaRegs.SPICCR.all =0x000F; // Reset on, rising edge, 16-bit char bits
SpiaRegs.SPICTL.all =0x0006; // Enable master mode, normal phase,不延迟
// enable talk, and SPI int disabled.
SpiaRegs.SPIBRR =0x007F;
SpiaRegs.SPICCR.all =0x009F; // Relinquish SPI from Reset
SpiaRegs.SPIPRI.bit.FREE = 1; // Set so breakpoints don't disturb xmission
SpiaRegs.SPIPRI.bit.TRIWIRE = 0;
}
void spi_fifo_init()
{
// Initialize SPI FIFO registers
SpiaRegs.SPIFFTX.all=0xE040;
SpiaRegs.SPIFFRX.all=0x2044;
SpiaRegs.SPIFFCT.all=0x0;
}
void led_input(Uint16 i)
{
GpioDataRegs.GPACLEAR.bit.GPIO7 = 1;
SpiaRegs.SPITXBUF=i;
//while(!Spi_TxReady());
DELAY_US(10);
GpioDataRegs.GPASET.bit.GPIO7 = 1;
DELAY_US(0.03);
}
void init_max6951(void)
{
led_input(0x0411);
led_input(0x0700);
led_input(0x0307);
led_input(0x020F);
led_input(0x01FF);
}
unsigned int Spi_TxReady(void)
{
unsigned int i;
if(SpiaRegs.SPISTS.bit.BUFFULL_FLAG == 1)
{
i = 0;
}
else
{
i = 1;
}
return(i);
}
|