/****************************************************************************/
/* */
/* PSC初始化 */
/* */
/****************************************************************************/
void PSCInit(void)
{
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_UPP, PSC_POWERDOMAIN_ALWAYS_ON,PSC_MDCTL_NEXT_ENABLE);
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_UART0, PSC_POWERDOMAIN_ALWAYS_ON,PSC_MDCTL_NEXT_ENABLE);
PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_SPI0, PSC_POWERDOMAIN_ALWAYS_ON,PSC_MDCTL_NEXT_ENABLE);//ADD SPI0
/* */
/* PSC初始化 */
/* */
/****************************************************************************/
void PSCInit(void)
{
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_UPP, PSC_POWERDOMAIN_ALWAYS_ON,PSC_MDCTL_NEXT_ENABLE);
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_UART0, PSC_POWERDOMAIN_ALWAYS_ON,PSC_MDCTL_NEXT_ENABLE);
PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_SPI0, PSC_POWERDOMAIN_ALWAYS_ON,PSC_MDCTL_NEXT_ENABLE);//ADD SPI0
}
/****************************************************************************/
/* */
/* GPIO 管脚复用配置 */
/* */
/****************************************************************************/
void GPIOBankPinMuxSet(void)
{
// 配置相应的 GPIO 口功能为普通输入输出口
// 核心板 LED
GPIOBank6Pin12PinMuxSetup();
GPIOBank6Pin13PinMuxSetup();
//SPIO PinMux
SPIPinMuxSetup(0);
//SPI0 CS0
SPI0CSPinMuxSetup(2);//片选改成CS2
/* */
/* GPIO 管脚复用配置 */
/* */
/****************************************************************************/
void GPIOBankPinMuxSet(void)
{
// 配置相应的 GPIO 口功能为普通输入输出口
// 核心板 LED
GPIOBank6Pin12PinMuxSetup();
GPIOBank6Pin13PinMuxSetup();
//SPIO PinMux
SPIPinMuxSetup(0);
//SPI0 CS0
SPI0CSPinMuxSetup(2);//片选改成CS2
UARTPinMuxSetup(0, FALSE);
// 核心板 LED
GPIODirModeSet(SOC_GPIO_0_REGS, 109, GPIO_DIR_OUTPUT); // GPIO6[12]
GPIODirModeSet(SOC_GPIO_0_REGS, 110, GPIO_DIR_OUTPUT); // GPIO6[13]
}
/****************************************************************************/
/* */
/* SPI 初始化 */
/* */
/****************************************************************************/
void SPIInit(void)
{
unsigned char cs = 0x4;//改成CS2
unsigned char dcs = 0x4;//改成CS2
unsigned int val = SIMO_SOMI_CLK_CS;
/* */
/* SPI 初始化 */
/* */
/****************************************************************************/
void SPIInit(void)
{
unsigned char cs = 0x4;//改成CS2
unsigned char dcs = 0x4;//改成CS2
unsigned int val = SIMO_SOMI_CLK_CS;
SPIReset(SOC_SPI_0_REGS);
SPIOutOfReset(SOC_SPI_0_REGS);
SPIModeConfigure(SOC_SPI_0_REGS, SPI_MASTER_MODE);
***(SOC_SPI_0_REGS, 150000000, 1000000, SPI_DATA_FORMAT0);
SPIPinControl(SOC_SPI_0_REGS, 0, 0, &val);
SPIDefaultCSSet(SOC_SPI_0_REGS, dcs);
// 配置 SPI 数据格式
SPIDataFormatConfig(SPI_DATA_FORMAT0);
SPIDataFormatConfig(SPI_DATA_FORMAT0);
// 配置 SPI 数据格式及片选信号
SPIDat1Config(SOC_SPI_0_REGS, (0 | SPI_DATA_FORMAT0), cs);
SPIDat1Config(SOC_SPI_0_REGS, (0 | SPI_DATA_FORMAT0), cs);
// 使能 SPI
SPIEnable(SOC_SPI_0_REGS);
}
SPIEnable(SOC_SPI_0_REGS);
}
/****************************************************************************/
/* */
/* SPI 传输 */
/* */
/****************************************************************************/
void WriteReg(unsigned char addr,unsigned int data)
{
unsigned int status;
/* */
/* SPI 传输 */
/* */
/****************************************************************************/
void WriteReg(unsigned char addr,unsigned int data)
{
unsigned int status;
SPIDat1Config(SOC_SPI_0_REGS, SPI_DATA_FORMAT0, 0x4);//改成CS2
SPITransmitData1(SOC_SPI_0_REGS, addr);
status=SPI_SPIFLG_TXINTFLG;
while(status!=SPI_SPIFLG_TXINTFLG)
{
status=SPIIntStatus(SOC_SPI_0_REGS, SPI_SPIFLG_TXINTFLG);
}
while(status!=SPI_SPIFLG_TXINTFLG)
{
status=SPIIntStatus(SOC_SPI_0_REGS, SPI_SPIFLG_TXINTFLG);
}
Delay(50);
status=SPIDataReceive(SOC_SPI_0_REGS);
SPIDat1Config(SOC_SPI_0_REGS, SPI_DATA_FORMAT0, 0x4);//改成CS2
status=SPIDataReceive(SOC_SPI_0_REGS);
SPIDat1Config(SOC_SPI_0_REGS, SPI_DATA_FORMAT0, 0x4);//改成CS2
SPITransmitData1(SOC_SPI_0_REGS, data);
status=SPI_SPIFLG_TXINTFLG;
while(status!=SPI_SPIFLG_TXINTFLG)
{
status=SPIIntStatus(SOC_SPI_0_REGS, SPI_SPIFLG_TXINTFLG);
}
Delay(50);
status=SPIDataReceive(SOC_SPI_0_REGS);
while(status!=SPI_SPIFLG_TXINTFLG)
{
status=SPIIntStatus(SOC_SPI_0_REGS, SPI_SPIFLG_TXINTFLG);
}
Delay(50);
status=SPIDataReceive(SOC_SPI_0_REGS);
}
请教下是不是配置有问题呢?CS2不能正常动作。