你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

查看: 836|回复: 0

[STM32F767] 各位大神 请教一下,stm32f767使用QSPI实现内存映射的问题

[复制链接]

3

主题

5

回帖

0

蝴蝶豆

新手上路

最后登录
2020-7-10
发表于 2019-7-3 10:28:55 | 显示全部楼层 |阅读模式
我想通过原子的stm32f767的探索版,调试spi的内存映射功能,参照769的官方历程修改的,但是出来的数据一直不正确,这个是映射配置的代码
往w25q256里写的代码算是原子的历程,
变量的初始化
const u8 TEXT_Buffer[]={"Apollo STM32F7 QSPI TEST"};
#define SIZE sizeof(TEXT_Buffer)
__IO uint8_t buf[100],*p


while(1)
{
if(key==KEY2_PRES)//KEY0按下,读取字符串并显示
                {
                        LCD_Fill(0,170,239,319,WHITE);//清除半屏   
                        LCD_ShowString(30,170,200,16,16,"OSPI Start Read QSPI.... ");
                        
                        Memory_Mapped_Enable(4);
                        x=0;
                        memset(datatemp,0,sizeof(TEXT_Buffer));
                        while(1)
                        {
                                if(*qspi_addr==0)
                                {
                                        break;
                                }
                                datatemp[x++] = *qspi_addr++;                                
                                printf("datatemp :%c",datatemp[x]);
                                printf("        *qspi_addr:%4d",*qspi_addr);
                                printf("                    qspi_addr:%x\r\n",qspi_addr);
                        }
                        printf("x = %d",x);
                        
                        LCD_ShowString(30,170,200,16,16,"The qspi Data Readed Is:   ");        //提示传送完成
                        LCD_ShowString(30,230,200,16,16,datatemp);                                        //显示读到的字符串
                }         


}

//使能内存映射.
u8 Memory_Mapped_Enable(u32 dummyCycles)
{
  QSPI_CommandTypeDef      s_command;              //命令结构体
  QSPI_MemoryMappedTypeDef s_mem_mapped_cfg;       //内存映射 配置结构体
        
        /* Configure the command for the read instruction */
  s_command.InstructionMode   = QSPI_INSTRUCTION_1_LINE;                //指令模式   单线传输数据
  s_command.Instruction       = Fast_Read_Quad;                                  //指令      具体的指令
  s_command.AddressMode       = QSPI_ADDRESS_4_LINES;                          //地址模式    四线传输
  s_command.Address           = 0;
  s_command.AddressSize       = QSPI_ADDRESS_24_BITS;                    //地址长度      24位地址
  s_command.AlternateByteMode = QSPI_ALTERNATE_BYTES_NONE;                    //交替字节    无交替字节
  s_command.AlternateBytes                 = 0x00;
//s_command.AlternateBytesSize = QSPI_ALTERNATE_BYTES_8_BITS;
  s_command.DataMode          = QSPI_DATA_4_LINES;                                        //数据模式
                                                                //QSPI_DATA_1_LINE
  s_command.NbData            = 1;   //每次读的字节数
  s_command.DummyCycles       = dummyCycles;        //设置空指令周期数
  s_command.DdrMode           = QSPI_DDR_MODE_DISABLE;              //关闭DDR模式
  s_command.DdrHoldHalfCycle  = QSPI_DDR_HHC_ANALOG_DELAY;           //ddr模式下 数据输出延迟
  s_command.SIOOMode          = QSPI_SIOO_INST_EVERY_CMD;            //每次都发送指令
                                 //传输的数据个数
        
  /* Configure the memory mapped mode */
  s_mem_mapped_cfg.TimeOutActivation = QSPI_TIMEOUT_COUNTER_DISABLE;
  s_mem_mapped_cfg.TimeOutPeriod     = 0;

  if (HAL_QSPI_MemoryMapped(&QSPI_Handler, &s_command, &s_mem_mapped_cfg) != HAL_OK)
  {
         printf("HAL_QSPI_MemoryMapped Fail \r\n ");
         return 1;
  }
  else
  {
        printf("HAL_QSPI_MemoryMapped Sucess \r\n ");
        return 0;
  }

}

恳求哪位大神帮我看看 是哪里出现错了
回复

使用道具 举报

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版