12
返回列表 发新帖
楼主: 最后无事

[求助] SPI flash

[复制链接]
  • TA的每日心情
    开心
    2020-4-30 08:32
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    79

    主题

    239

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1095
    最后登录
    2025-6-7
    发表于 2015-9-18 10:54:00 | 显示全部楼层
    最后无事 发表于 2015-9-18 05:07
    那这个用来读芯片ID 的又是什么意思啊,Send_Byte(0x00);这句不懂是有啥用的
    ...

    //发送ID命令,
    Send_Byte(0x90); //发(0x90)后必须跟3个字节,见附图

    Send_Byte(0x00);  // 伪指令,应该可以为8bit的任何数
    Send_Byte(0x00);  // 伪指令,应该可以为8bit的任何数
    Send_Byte(0x00);  // 必须为0x00;见手册


    // 读出16bit  ID值
    IDcode = (Send_Byte(0xff) << 8) | Send_Byte(0xff);
    读ID高8位;
    (Send_Byte(0xff) << 8)  // send 0xff,让spi 主机(mcu)继续产生时钟,以便从机(flash)发送数据
    读ID低8位;
    Send_Byte(0xff)  // send 0xff,让spi 主机(mcu)继续产生时钟,以便从机(flash)发送数据

    spi在读从机数据时,必须让主机继续产生clk信号(从机不产生时钟信号),所以只有让主机发送数据,理论上可以为任何值,但为了不和其它命令产生冲突,一般用0xff.
    Image 2.png
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-11-14 15:33
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    63

    主题

    605

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1783
    最后登录
    2016-11-14
     楼主| 发表于 2015-9-18 11:18:52 | 显示全部楼层
    xxs-133546 发表于 2015-9-18 10:54
    //发送ID命令,
    Send_Byte(0x90); //发(0x90)后必须跟3个字节,见附图

    首先谢谢你这么详细的解答啊,我也去查了下SPI flash的数据手册,然后我的理解就是像上面的时序图所说的,发完90H之后,需要发个24位的地址,然而编程那里写三个Send_Byte(0x00);其实也是想表达发送000000h的意思,不过这样可能会让人不明就里,然后我换了另外一种方式,  Send_Byte((0x000000 & 0xFF0000) >> 16); Send_Byte((0x000000 & 0x00FF00) >> 8); Send_Byte((0x000000 & 0x0000FF)); 最后也是能读到ID号滴
    flash_read_id.png
    spi flash id.png
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-11-14 15:33
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    63

    主题

    605

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1783
    最后登录
    2016-11-14
     楼主| 发表于 2015-9-18 11:22:33 | 显示全部楼层
    xxs-133546 发表于 2015-9-18 10:54
    //发送ID命令,
    Send_Byte(0x90); //发(0x90)后必须跟3个字节,见附图

    你这个中文手册哪里找到的啊,能不能发给我一下,谢谢
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-11-14 15:33
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    63

    主题

    605

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1783
    最后登录
    2016-11-14
     楼主| 发表于 2015-9-18 11:27:10 | 显示全部楼层
    xxs-133546 发表于 2015-9-18 10:54
    //发送ID命令,
    Send_Byte(0x90); //发(0x90)后必须跟3个字节,见附图

    看了你的评论,你说前两个是发伪指令,填任何数都可以,最后一个一定要发00h,我试了试确实是这样子,为啥手册的时序图写成000000h呢
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2020-4-30 08:32
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    79

    主题

    239

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1095
    最后登录
    2025-6-7
    发表于 2015-9-18 11:28:14 | 显示全部楼层
    最后无事 发表于 2015-9-18 11:22
    你这个中文手册哪里找到的啊,能不能发给我一下,谢谢

    刚在百度上搜的,我没下载。
    https://wenku.baidu.com/link?url ... 5IUCnK3zt_CH0j7h-By
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-28 22:51 , Processed in 0.093484 second(s), 25 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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