找回密码
 立即注册
查看: 838|回复: 3

读不到外置flash设备ID,不知道什么原因

[复制链接]

6

主题

16

回帖

148

积分

注册会员

积分
148
发表于 2023-6-29 10:41:47 | 显示全部楼层 |阅读模式
u8  GD25Q20ETIGR_ID, GD25Q20ETIGR_ID1, GD25Q20ETIGR_ID2;


void SPI_Init(void)
{
      SPCTL |=  (1 << 7); //忽略 SS 引脚功能,使用 MSTR 确定器件是主机还是从机
      SPCTL |=  (1 << 6); //使能 SPI 功能
      SPCTL &= ~(1 << 5); //先发送/接收数据的高位( MSB)
      SPCTL |=  (1 << 4); //设置主机模式
      SPCTL &= ~(1 << 3); //SCLK 空闲时为低电平,SCLK 的前时钟沿为上升沿,后时钟沿为下降沿
      SPCTL &= ~(1 << 2); //数据 SS 管脚为低电平驱动第一位数据并在 SCLK 的后时钟沿改变数据
      SPCTL = (SPCTL & ~3) | 0;   //SPI 时钟频率选择, 0: 4T, 1: 8T,  2: 16T,  3: 32T
      P_SW1 = (P_SW1 & ~(3<<2)) | (1<<2);     //IO口切换. 0: P1.2/P5.4 P1.3 P1.4 P1.5, 1: P2.2 P2.3 P2.4 P2.5, 2: P5.4 P4.0 P4.1 P4.3, 3: P3.5 P3.4 P3.3 P3.2

      SPI_CLK = 0;    // set clock to low initial state
      SPI_SI = 1;
      SPSTAT = SPIF + WCOL;   //清0 SPIF和WCOL标志
}

void FlashCheckID(void)
{
    SPI_CS = 0;
    send_byte(0x90);        //发送读取ID命令
    send_byte(0x00);            //空读3个字节
    send_byte(0x00);
    send_byte(0x00);
    GD25Q20ETIGR_ID1 = receive_byte();         //读取制造商ID1
    GD25Q20ETIGR_ID  = receive_byte();         //读取设备ID
    GD25Q20ETIGR_ID2 = receive_byte();         //读取制造商ID2
    SPI_CS = 1;
       
    if(GD25Q20ETIGR_ID1 == 0xC8 ||GD25Q20ETIGR_ID == 0xC8||GD25Q20ETIGR_ID2 == 0xC8)
                printf("read success..\n");

}

void main() {
        // 初始化SPI
        SPI_Init();
        FlashCheckID();
        FlashCheckID();
}

回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:501
  • 最近打卡:2025-06-17 09:45:37
已绑定手机

29

主题

349

回帖

1995

积分

金牌会员

机长

积分
1995
发表于 2023-6-29 14:44:27 | 显示全部楼层
哪个型号的外置spi设备?
业余撸代码,专业开飞机 https://gitee.com/STC-MCU
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:58
  • 最近打卡:2025-06-17 09:13:13

26

主题

1037

回帖

3950

积分

超级版主

积分
3950
发表于 2023-6-29 16:20:38 | 显示全部楼层
是什么型号的单片机?I/O是否有进行初始化?
STC8、STC32系列的单片机,上电后所有I/O都是高阻输入模式
是无法对外输出电平信号的
回复 支持 反对

使用道具 举报 送花

6

主题

16

回帖

148

积分

注册会员

积分
148
发表于 2023-6-29 19:43:02 | 显示全部楼层
已经解决,每次在读或者写之后都要进行  SPSTAT = SPIF + WCOL;   //清0 SPIF和WCOL标志  这个动作,不然会出错
回复 支持 1 反对 0

使用道具 举报 送花

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

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-6-17 10:16 , Processed in 0.117407 second(s), 64 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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