这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » 国产MCU » 学习AI8051开发板例程:39AI8051的QSPI操作存储芯片

共2条 1/1 1 跳转至

学习AI8051开发板例程:39AI8051的QSPI操作存储芯片

高工
2026-03-19 15:13:07     打赏

Ai8051U系列单片机集成了QSPI控制器。QSPI是一种专用的通信接口,连接单线、双线或四线的SPIFlash存储介质。该接口可以在以下两种模式下工作:

间接模式:使用QSPI寄存器执行全部操作

状态轮询模式:周期性读取外部Flash状态寄存器,而且标志位置1时会产生中断(如擦除或烧写完成,会产生中断)

二:主要特性:

    两种功能模式:间接模式和 状态轮询模式

    支持SDR模式

    针对间接模式,完全可编程操作码

    针对间接模式,完全可编程帧格式

    集成32字节的FIFO,用于发送和接收支持8位数据访问

    在达到FIFO阈值、超时、操作完成以及发生访问错误时产生中断

三:使用注意事项:

当使能QSPI功能后,QSPI相关的6个IO口均会由QSPI模块进行托管,用户程序无法再对这些1LO进行输出控制,即使QSPI工作在单线模式(只使用I00和IO1进行数据传输),用户程序也无法操作I02和IO3。

QSPI的nCS脚的有效信号是由硬件自动控制的,不能用普通的IO口来代替nCS进行控制。

一组硬件QSPI口只能用于控制一个QSPI设备,不能用类似普通SPI的方式采用多个普通IO口来当作nCS片选多个设备。但可以使用分时复用的方法将整组QSPI切换到不同的IO管脚,来控制多个QSPI设备。

Ai8051U的QSPI只有主机模式,没有从机模式。

Ai8051U的QSPI 的工作模式可配置为兼容普通SPI的工作模式0(空闲是CLK为低电平)和兼容普通SPI的工作模式3(空闲是CLK为高电平),使用QSPI DCR1寄存器中的CKMODE进行配置0

四:软件代码:

4.1 QSPI初始化

void QSPI_init()
{
    P_SW4 = (P_SW4 & ~0x03) | 0x01;
    CS = 1;
    SCK = 1;
    SDI_IO0 = 1;
    SDO_IO1 = 1;
    WP_IO2 = 1;
    HLD_IO3 = 1;

    while (QSPI_CheckBusy());       //检测忙状态
    
    QSPI_HCR1 = 0x00;               //设置READ_HOLD时间1(0x0f)
    QSPI_HCR2 = 0x00;               //设置READ_HOLD时间2(0x40)
    QSPI_SetFIFOLevel(31);          //设置FIFO阈值为(31+1)=32字节
    QSPI_CR3 = 0x00;                //关闭QSPI中断
    QSPI_SetClockDivider(3);        //设置QSPI时钟为系统时钟/(3+1)=10MHz
    QSPI_SetCSHold(1);              //设置CS保持时间为(1+1)=2个QSPI时钟
    QSPI_SetSCKNormalHigh();        //空闲时SCK为高电平
    QSPI_SetFlashSize(25);          //设置Flash大小为2^(25+1)=64M字节,
    QSPI_InstructionAlways();       //设置每个事务均发送指令
    
    QSPI_Enable();                  //使能QSPI
}

4.2  W25Q128芯片操作

void W25Q_Erase4K_20(DWORD addr)
{
    W25Q_WriteEnable_06();
    QSPI_WRITE_INSTR_SADDR24(0x20, addr);
    W25Q_WaitBusy(1000);
}

void W25Q_QPI_Erase4K_20(DWORD addr)
{
    W25Q_QPI_WriteEnable_06();
    QSPI_WRITE_QINSTR_QADDR24(0x20, addr);
    W25Q_QPI_WaitBusy(1000);
}

void W25Q_Erase4K_Addr32_21(DWORD addr)
{
    W25Q_WriteEnable_06();
    QSPI_WRITE_INSTR_SADDR32(0x21, addr);
    W25Q_WaitBusy(1000);
}

五 :串口接收图片

39-1.png





关键词: AI8051     QSPI    

院士
2026-03-19 17:58:21     打赏
2楼

谢谢分享。


共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]