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

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

[复制链接]
jianxuan5527 提问时间:2019-7-3 10:28 /
我想通过原子的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;
  }

}

恳求哪位大神帮我看看 是哪里出现错了
收藏 评论0 发布时间:2019-7-3 10:28

举报

0个回答

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版