Other Parts Discussed in Thread: C2000WARE
你好,我在调试的时候发现我写的初始化程序无法对SPI寄存器赋值,但GPIO的寄存器却可以正常写入。使用的开发板是28388CotrolCARD,附上我的初始化程序代码。非常感谢您能为我提供一些思路!
#include "f2838x_device.h"
#include "f2838x_examples.h"
#include "f2838x_globalprototypes.h"
#include "rtwtypes.h"
#define Fs_Set GpioDataRegs.GPBSET.bit.GPIO35 = 1 //FS Pin
#define Fs_Clr GpioDataRegs.GPBCLEAR.bit.GPIO35 = 1
#define Load_Set GpioDataRegs.GPBSET.bit.GPIO37 = 1 //Load Pin
#define Load_Clr GpioDataRegs.GPBCLEAR.bit.GPIO37 = 1
void init_SPI_GPIO(void) //GPIO Configuration Spia:GPIO16,17,18
{
EALLOW;
GpioCtrlRegs.GPAGMUX2.bit.GPIO16=0; //configure GPIO16 as SPIASIMO
GpioCtrlRegs.GPAMUX2.bit.GPIO16=1;
GpioCtrlRegs.GPAGMUX2.bit.GPIO17=0; //configure GPIO17 as SPIASOMI
GpioCtrlRegs.GPAMUX2.bit.GPIO17=1;
GpioCtrlRegs.GPAGMUX2.bit.GPIO18=0; //configure GPIO18 as SPISCK
GpioCtrlRegs.GPAMUX2.bit.GPIO18=1;
GpioCtrlRegs.GPBGMUX1.bit.GPIO35=0; //configure GPIO35 as GPIO(siganl FS)
GpioCtrlRegs.GPBMUX1.bit.GPIO35=0;
GpioCtrlRegs.GPBGMUX1.bit.GPIO37=0; //configure GPIO37 as GPIO(signal LOAD)
GpioCtrlRegs.GPBMUX1.bit.GPIO37=0;
EDIS;
}
void init_SPI_A(void)
{
EALLOW;
SpiaRegs.SPICCR.bit.SPISWRESET=0;
SpiaRegs.SPICTL.bit.MASTER_SLAVE=1; //Master Mode
SpiaRegs.SPICCR.bit.CLKPOLARITY=1;
SpiaRegs.SPICTL.bit.CLK_PHASE=0;
SpiaRegs.SPICCR.bit.SPICHAR=15; //16bit SPI
SpiaRegs.SPIBRR.bit.SPI_BIT_RATE=39; //Set baud Rate
SpiaRegs.SPICTL.bit.TALK=1; //Enable transmit
SpiaRegs.SPIPRI.bit.FREE=1;
SpiaRegs.SPICCR.bit.SPISWRESET=1;
EDIS;
}