高级会员

- 积分
- 906
- 金钱
- 906
- 注册时间
- 2016-3-26
- 在线时间
- 116 小时
|
1金钱
void SPI_Flash_Erase_Sector(u32 Dst_Addr)
{
Dst_Addr*=4096;
SPI_FLASH_Write_Enable(); //SET WEL
SPI_Flash_Wait_Busy();
SPI_FLASH_CS=0; //ê1ÄüÆ÷¼t
SPI2_ReadWriteByte(W25X_SectorErase); //·¢ËíéèÇø2á3yÖ¸áî
SPI2_ReadWriteByte((u8)((Dst_Addr)>>16)); //·¢Ëí24bitμØÖ·
SPI2_ReadWriteByte((u8)((Dst_Addr)>>8));
SPI2_ReadWriteByte((u8)Dst_Addr);
SPI_FLASH_CS=1; //è¡ÏûƬѡ
SPI_Flash_Wait_Busy(); //μè′y2á3yíê3é
}
我想知道为什么地址要乘以4096?
还有,如果是块擦除的话,地址是不是要乘以65536?
u8 SPI2_ReadWriteByte(u8 TxData)
{
while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_TXE) == RESET){}//μè′y·¢ËíÇø¿Õ
SPI_I2S_SendData(SPI2, TxData); //í¨1yíaéèSPIx·¢Ëíò»¸öbyte êy¾Y
while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_RXNE) == RESET){} //μè′y½óêÕíêò»¸öbyte
return SPI_I2S_ReceiveData(SPI2); //·μ»Øí¨1ySPIx×î½ü½óêÕμÄêy¾Y
}
这个SPI读写函数,如果需要读取数据的话。入口参数是不是0x00或者0xff都可以?
|
最佳答案
查看完整内容[请看2#楼]
1.FLASH的24位地址已经覆盖了所有字节,他在这里乘4096,可能是因为Dst_Addr是以4K为单位的.
2.SPI读数据时传什么参数,要看设备的SPI时序要求,如果时序上说明,读数据时不关心MOSI,那你传什么值都是可以的.
|