由于刚接触AM335X,在测试官方提供的Demo示例mcspiFlash时,发现读出来的永远是0xFF,不知道问题在哪里。原理图上也是SPI0,管角全是SPI0的默认管角功能,希望能够给予帮助,谢谢。
主函数部分:
/* Enable the clocks for McSPI0 module.*/
McSPI0ModuleClkConfig();
/* Perform Pin-Muxing for SPI0 Instance */
McSPIPinMuxSetup(0);
/* Perform Pin-Muxing for CS0 of SPI0 Instance */
McSPI0CSPinMuxSetup(0);
/* Initialize the UART utility functions */
//UARTStdioInit();
//UARTPuts("Here the McSPI controller on the SoC communicates with", -1);
//UARTPuts(" the SPI Flash.\r\n\r\n", -1);
/* Enable IRQ in CPSR.*/
IntMasterIRQEnable();
/* Map McSPI Interrupts to AINTC */
McSPI0AintcConfigure();
/* Do the necessary set up configurations for McSPI.*/
McSPISetUp();
unsigned int McSPIPinMuxSetup(unsigned int instanceNum)
{
unsigned int profile = 2;
unsigned int status = FALSE;
switch (profile)
{
case 2:
HWREG(SOC_CONTROL_REGS + CONTROL_CONF_SPI0_SCLK) =
(CONTROL_CONF_SPI0_SCLK_CONF_SPI0_SCLK_PUTYPESEL |
CONTROL_CONF_SPI0_SCLK_CONF_SPI0_SCLK_RXACTIVE);
HWREG(SOC_CONTROL_REGS + CONTROL_CONF_SPI0_D0) =
(CONTROL_CONF_SPI0_SCLK_CONF_SPI0_SCLK_PUTYPESEL |
CONTROL_CONF_SPI0_SCLK_CONF_SPI0_SCLK_RXACTIVE);
HWREG(SOC_CONTROL_REGS + CONTROL_CONF_SPI0_D1) =
(CONTROL_CONF_SPI0_SCLK_CONF_SPI0_SCLK_PUTYPESEL|
CONTROL_CONF_SPI0_SCLK_CONF_SPI0_SCLK_RXACTIVE);
status = TRUE;
break;
default:
break;
}
return status;
}
unsigned int McSPI0CSPinMuxSetup(unsigned int csPinNum)
{
unsigned int profile = 2;
switch (profile)
{
case 2:
HWREG(SOC_CONTROL_REGS + CONTROL_CONF_SPI0_CS0) =
(CONTROL_CONF_SPI0_SCLK_CONF_SPI0_SCLK_PUTYPESEL |
CONTROL_CONF_SPI0_SCLK_CONF_SPI0_SCLK_RXACTIVE);
return TRUE;
default:
break;
}
return FALSE;
}