4. 在对串行Flash MX25L1605D进行读RDID操作时,LPC2388发送0x9F时,MX25L1605D应该返回3个字节:0x00C22015; 可是返回的前3个字节是0x00FFC220,当返回第4字节时,返回的是0xFFC22015;有人说是SSP1初始化有问题,请各位高人指教?
附上SSP1初始化代码:
void SSP_Init (void)
{
IO0DIR |= SSP_CS; /* SPI1的片选引脚P0.6做输出 */
PCONP |= (1 << 10); // 在外设功率控制寄存器里使能SSP外设1,默认情况下,该外设已被使能
PINSEL0 = PINSEL0|(0x02 << 12) | (0x02 << 14) | (0x02 << 16) | (0x02 << 18); // 选择SSP: P0.6 - SSEL1, P0.7 - SCLK1
// 选择SSP: P0.8 - MISO1, P0.9 - MOSI1
/* 设置数据长度为8位,帧格式SPI,SCK高有效,第2个时钟沿采样,位速率为默认值。 */
SSP1CR0 = (0x07 << 0) | // 8位数据长度
(0x00 << 4) | // 设置帧格式为SPI
(0x00 << 6) | // 设置SCK高有效
(0x00 << 7) | // 数据在SCK的第2个时钟沿采样
(0x00 << 8); // 设置SSP通信位速率为默认值
/* 设置SSP对PCLK的分频值,主模式下有效, 500Kbps */
SSP1CPSR = 48; // SPI通信速率:SSPLCK = PCLK / SSP1CPSR
// = Fcclk / 2 * SSP1CPSR
// = 48MHz / 2 * 48
// = 500k
SSP1CR1 = (0x00 << 0) | // SPI正常工作模式
(0x01 << 1) | // SSP使能
(0x00 << 2) | // SSP设置为主机模式
(0x00 << 3); // 从机输出禁止
} |