选用的是SPI0硬件,但是一直配置不成功,下面是相关函数,希望有人帮帮我
UINT32 TEST_spi_flash(void)
{
// UINT32 rtn;
// UINT32 i;
// 管脚复用配置
// RK6748_lpscTransition(PSC0, DOMAIN0, LPSC_SPI0, PSC_ENABLE);
PSCModuleControl(SOC_PSC_0_REGS, HW_PSC_SPI0, PSC_POWERDOMAIN_ALWAYS_ON,
PSC_MDCTL_NEXT_ENABLE);
GPIOBankPinMuxSet();
// DSP 中断初始化
InterruptInit();
// SPI 初始化
SPIInit();
GPIOINIT();//用gpio模拟了reset
}
void SPIInit(void)
{
unsigned char cs = 0x08;
unsigned char dcs = 0x08;
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);
SPIClkConfigure(SOC_SPI_0_REGS, 228000000, 1500000, SPI_DATA_FORMAT0);
SPIPinControl(SOC_SPI_0_REGS, 0, 0, &val);
SPIDefaultCSSet(SOC_SPI_0_REGS, dcs);
// 配置 SPI 数据格式
SPIDataFormatConfig(SPI_DATA_FORMAT0);
// 配置 SPI 数据格式及片选信号
SPIDat1Config(SOC_SPI_0_REGS, (SPI_CSHOLD | SPI_DATA_FORMAT0), cs);
// 映射中断到 INT1
SPIIntLevelSet(SOC_SPI_0_REGS, SPI_RECV_INTLVL | SPI_TRANSMIT_INTLVL);
// 使能 SPI
SPIEnable(SOC_SPI_0_REGS);
}
//我的数据收发函数
uint8_t SPI_ReadWriteByte(uint8_t txData)
{
// while (SPI_I2S_GetFlagStatus(WIZ_SPIx, SPI_I2S_FLAG_TXE) == RESET);
while( HWREG(SOC_SPI_0_REGS + SPI_SPIBUF) & (0x20000000));
SPITransmitData1(SOC_SPI_0_REGS,txData);
while( HWREG(SOC_SPI_0_REGS + SPI_SPIBUF) & (0x80000000));
return SPIDataReceive(SOC_SPI_0_REGS);
}