各位大神,我这里有个需求在boot阶段需要通过SPI访问外部Flash,结果发现回读的数总是0,因为例程自带的SPI初始化是初始化成Slave,不能使用,为了保证初始化的正确性,我直接移植App(调试好了访问外部Flash)中的代码,具体如下:
#ifdef SSI_ENABLE_UPDATE
//
// Enable the clocks to the SSI and GPIO modules.
//
//自带的时钟初始化,去掉后回读出问题
HWREG(SYSCTL_RCGC2) |= SYSCTL_RCGC2_GPIOA;
HWREG(SYSCTL_RCGC1) |= SYSCTL_RCGC1_SSI0;
SysCtlPeripheralEnable(0xf0001c00);
SysCtlPeripheralEnable(0xf0000800);
GPIOPinConfigure(0x802);
GPIOPinConfigure(0xc02);
GPIOPinConfigure(0x1002);
GPIOPinConfigure(0x1402);
GPIOPinTypeSSI(GPIO_PORTA_BASE, SSI_PINS);
SSIConfigSetExpClk(SSI0_BASE, CRYSTAL_FREQ, 0x0, 0x0, CRYSTAL_FREQ/128, 8);
//Enable SSI
HWREG(SSI0_BASE + SSI_O_CR1) |= SSI_CR1_SSE;
#endif
boot阶段的SPI读写是验证过的,因为我在App中有个AC_JumpToBootLoader();,能够直接进入到boot的updater,这样自读写是成功,原因我觉得应该是没有下电,在App中初始化的SPI配置都没有变才没有问题,但是下电直接进入SPI初始化,再读写就不行,不知道我忘记写哪个寄存器了,请大神们帮忙看一下