LPC2368读SPI FLASH芯片W25X40的状态寄存器的时候,LPC2368 SPI读到的数据都为0XFF,用示波器可以看到W25X40的管脚SCK、MOSI、CS上都有波形,但是W25X40的MISO脚却没有波形;读ID也不行,SPI读到的数据也为0XFF。请教各位为什么会这样,我也换过了W25X40 这个芯片,也不行。
W25X40的WP和HOLD都是经一个电阻上拉到3.3V。
下面的是LPC2368 SPI的初始化和发送数据程序;
DWORD SPIInit( void )
{
unsigned int tt=0;
PCONP |= (1 << 8); /* by default, it's enabled already, for safety reason */
S0SPCR = 0x00;
/* Port 0.15 SPI SCK, port0.16 uses GPIO SPI_SEL,
port0.17 MISO, port0.18 MOSI */
PINSEL0 |= 0xC0000000;
PINSEL1 |= 0x0000003C;
GPIOSetDir(0,16,1); GPIOSetValue(0,16,1);
S0SPCR = (1 << 5) | // 设置为主机模式 //
(0 << 2) | // 每帧数据为8位 //
(0 << 7) | // 中断被禁能 //
(0 << 6) | // 高位在前
(0 << 3) | // 第二个时钟沿采样//
(0 << 4); // 时钟高有效 //
tt = S0SPSR;
__nop();
return( TRUE );
}
unsigned int SPISend1( unsigned int dat )
{
unsigned int state=0;
BYTE Dummy=0;
state = S0SPSR;
__nop();
GPIOSetValue(0,16,0); //CS
__nop(); __nop();
S0SPDR = dat;
while ((S0SPSR & 0x80) == 0);
__nop();
GPIOSetValue(0,16,1); //CS
__nop(); __nop();
Dummy = S0SPDR; // Flush the RxFIFO //
__nop();
return Dummy;
} |