中级会员
 
- 积分
- 355
- 金钱
- 355
- 注册时间
- 2013-6-26
- 在线时间
- 0 小时
|
u8 SPIx_ReadWriteByte(u8 TxData)
{
u8 retry=0;
while((SPI1->SR&1<<1)==0)//等待发送区空
{
retry++;
if(retry>200)return 0;
}
SPI1->DR=TxData; //发送一个byte
retry=0;
while((SPI1->SR&1<<0)==0) //等待接收完一个byte
{
retry++;
if(retry>200)return 0;
}
return SPI1->DR; //返回收到的数据
}
========================================
========================================
//读取SPI FLASH
//在指定地址开始读取指定长度的数据
//pBuffer:数据存储区
//ReadAddr:开始读取的地址(24bit)
//NumByteToRead:要读取的字节数(最大65535)
void SPI_Flash_Read(u8* pBuffer,u32 ReadAddr,u16 NumByteToRead)
{
u16 i;
SPI_FLASH_CS=0; //使能器件
SPIx_ReadWriteByte(W25X_ReadData); //发送读取命令
SPIx_ReadWriteByte((u8)((ReadAddr)>>16)); //发送24bit地址
SPIx_ReadWriteByte((u8)((ReadAddr)>>8));
SPIx_ReadWriteByte((u8)ReadAddr);
for(i=0;i<NumByteToRead;i++)
{
pBuffer=SPIx_ReadWriteByte(0XFF); //循环读数
}
SPI_FLASH_CS=1; //取消片选
}
==========================================
============================================
为什么每次读取W25X16时都要进行写0XFF呢?这个我看过W25X16的相关资料,没有说读时要先写0XFF的??
为什么要先写0XFF在进行读取数据?? 不解???????????????????
|
|