中级会员
 
- 积分
- 483
- 金钱
- 483
- 注册时间
- 2013-7-27
- 在线时间
- 4 小时
|
5金钱
关于SPI的异常问题
void Flash_Write_Bytes(u8 *pbuff, u32 WriteAddr, u16 NumberByteToWrite)
{
u8 i;
// 打开写使能
Spi_WriteRead(W25X_WriteEnable);
// 打开片选
SPI_CS_w25q64 = 0;
// 发送24bit地址
Spi_WriteRead((u8)(WriteAddr >> 16));
Spi_WriteRead((u8)(WriteAddr >> 8));
Spi_WriteRead(WriteAddr);
// 写数据
for(i = 0;i<NumberByteToWrite;i++)
{
Spi_WriteRead(pbuff); // 循环读数
}
SPI_CS_w25q64 = 1;//关闭片选
delay_ms(1000);//等待写入结束
}
void Flash_Read_Bytes(u8 *pbuff, u32 ReadAddr,u16 NumberByteToRead)
{
u8 i;
// 这样写,始终读到 0xff ??????????????
// 打开读使能
Spi_WriteRead(W25X_ReadData);
//打开片选
SPI_CS_w25q64 = 0;
// 这样写,始终收到 0x00 ??????????????????
//SPI_CS_w25q64 = 0;
//Spi_WriteRead(W25X_ReadData);
// 发送24bit地址
Spi_WriteRead((u8)(ReadAddr >> 16));
Spi_WriteRead((u8)(ReadAddr >> 8));
Spi_WriteRead(ReadAddr);
for(i = 0;i<NumberByteToRead;i++)
{
pbuff =Spi_WriteRead(0xff); // 循环读数 , ???
}
SPI_CS_w25q64 = 1;//关闭片选
}
奇怪现象: 在 Flash_Read_Bytes 函数中,当 打开读使能语句在 打开片选语句之前时, 无论写入啥,始终读到0xff。当 先打开片选,再打开读使能时,时钟收到 0x00。 实在不明白出了问题? 求大侠帮忙解答一下,非常非常感谢!!!
|
|