查看: 1445|回复: 0

【怪兽F7】开始打怪——SPI扩展接口QSPI

[复制链接]
  • TA的每日心情
    奋斗
    2023-7-6 08:48
  • 签到天数: 169 天

    连续签到: 1 天

    [LV.7]常住居民III

    发表于 2016-6-23 09:36:41 | 显示全部楼层 |阅读模式
    分享到:
    QSPI是Queued SPI的简写,是Motorola公司推出的SPI接口的扩展。QUADSPI是一种专用的通信接口,连接单、双或四(条数据线)SPI Flash 存储介质
    主要特性:

    工作模式:
    单线 SPI 模式
    双线 SPI 模式
    四线 SPI 模式
    SDR 模式
    DDR 模式
    双闪存模式
    从原理图上看,板子上的QSPI:

    那么接下来,就来看一下程序了。
    在main函数的while中只调用了一个函数
      while(1)  {    /* Execute the code from QSPI memory ------------------------------------ */    GpioToggle();  }而这个函数GpioToggle();的定义如下所示:
    #if defined(__CC_ARM) #pragma arm section code = ".qspi" #pragma no_inline static void GpioToggle(void) #elif defined(__ICCARM__) static void GpioToggle(void) @ ".qspi" #elif defined(__GNUC__) static void __attribute__((section(".qspi"), noinline)) GpioToggle(void) #endif{  BSP_LED_Toggle(LED1);  /* Insert delay 100 ms */  HAL_Delay(100);}#if defined(__CC_ARM)#pragma arm section code#endif由于我们使用的是Keil,所以__CC_ARM是有效的。
    那么最后函数的定义为
    #pragma arm section code = ".qspi" #pragma no_inline static void GpioToggle(void){  BSP_LED_Toggle(LED1);  /* Insert delay 100 ms */  HAL_Delay(100);}#pragma arm section code即是将GpioToggle函数定义在了QSPI的存储器中。
    下面对工程进行编译后,查看map文件,可以看到GpioToggle函数的地址是0x90000001。

    从手册中查找到,0x90000001的地址是映射到了QSPI上的。
    回复

    使用道具 举报

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

    本版积分规则

    关闭

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

    手机版|小黑屋|与非网

    GMT+8, 2024-4-18 13:45 , Processed in 0.123815 second(s), 18 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.