OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4500|回复: 1

SPI程序擦除一个扇区函数 遇到点问题,求助,谢谢(地址咋就是4字节了?)新手,谢谢

[复制链接]

1

主题

2

帖子

0

精华

新手入门

积分
17
金钱
17
注册时间
2017-8-21
在线时间
1 小时
发表于 2017-8-21 19:30:20 | 显示全部楼层 |阅读模式
2金钱
    if(W25QXX_TYPE==W25Q256)                //如果是W25Q256的话地址为4字节的,要发送最高8位
    {
        SPI5_ReadWriteByte((u8)((Dst_Addr)>>24));
    }
    SPI5_ReadWriteByte((u8)((Dst_Addr)>>16));  //发送24bit地址   
    SPI5_ReadWriteByte((u8)((Dst_Addr)>>8));   
    SPI5_ReadWriteByte((u8)Dst_Addr);  
这个右移24,16,8啥意思。

整体函数如下:
void W25QXX_Erase_Sector(u32 Dst_Addr)   
{  
        //监视falsh擦除情况,测试用   
        //printf("fe:%x\r\n",Dst_Addr);          
        Dst_Addr*=4096;
    W25QXX_Write_Enable();                  //SET WEL          
    W25QXX_Wait_Busy();   
          W25QXX_CS=0;                            //使能器件   
    SPI5_ReadWriteByte(W25X_SectorErase);   //发送扇区擦除指令
    if(W25QXX_TYPE==W25Q256)                //如果是W25Q256的话地址为4字节的,要发送最高8位
    {
        SPI5_ReadWriteByte((u8)((Dst_Addr)>>24));
    }
    SPI5_ReadWriteByte((u8)((Dst_Addr)>>16));  //发送24bit地址   
    SPI5_ReadWriteByte((u8)((Dst_Addr)>>8));   
    SPI5_ReadWriteByte((u8)Dst_Addr);  
        W25QXX_CS=1;                            //取消片选                  
    W25QXX_Wait_Busy();                                       //等待擦除完成
}


最佳答案

查看完整内容[请看2#楼]

刚弄明白,4个字节地址,需要8位发送一次,所以,才右移24,16,8位,最终发送完成4个字节的地址,是这样的吧
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

2

帖子

0

精华

新手入门

积分
17
金钱
17
注册时间
2017-8-21
在线时间
1 小时
 楼主| 发表于 2017-8-21 19:30:21 | 显示全部楼层
刚弄明白,4个字节地址,需要8位发送一次,所以,才右移24,16,8位,最终发送完成4个字节的地址,是这样的吧
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-19 06:02

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表