问答

汇集网友智慧,解决技术难题

21ic问答首页 - AT32F435的XMC在同步复用模式下时钟引脚为什么没有信号?

雅特力 AT32F435 XMC PSRAM

AT32F435的XMC在同步复用模式下时钟引脚为什么没有信号?

zh655352023-03-29
AT32F435ZMT7芯片中的XMC在使用同步复用模式连接PSRAM时,PD3CLK引脚为什么没有时钟啊?
这是我的初始化函数代码
  gpio_init_struct.gpio_pins = GPIO_PINS_3;   //CLK
  gpio_init_struct.gpio_mode = GPIO_MODE_MUX;
  gpio_init_struct.gpio_out_type = GPIO_OUTPUT_PUSH_PULL;
  gpio_init_struct.gpio_pull = GPIO_PULL_NONE;
  gpio_init_struct.gpio_drive_strength = GPIO_DRIVE_STRENGTH_STRONGER;
  gpio_init(GPIOD, &gpio_init_struct);

  /*-- xmc configuration ------------------------------------------------------*/
  xmc_norsram_default_para_init(&xmc_norsram_init_struct);
  xmc_norsram_init_struct.subbank = XMC_BANK1_NOR_SRAM3;                       //XMC_BANK1_NOR_SRAM3
  xmc_norsram_init_struct.data_addr_multiplex = XMC_DATA_ADDR_MUX_ENABLE;      //复用
  xmc_norsram_init_struct.device = XMC_DEVICE_PSRAM;                           //PSRAM设备
  xmc_norsram_init_struct.bus_type = XMC_BUSTYPE_16_BITS;                      //16bit
  xmc_norsram_init_struct.burst_mode_enable = XMC_BURST_MODE_ENABLE;           //突发模式配置
  xmc_norsram_init_struct.asynwait_enable = XMC_ASYN_WAIT_DISABLE;             //异步传输期间等待信号使能控制
  xmc_norsram_init_struct.wait_signal_lv = XMC_WAIT_SIGNAL_LEVEL_LOW;          //等待信号极性,在同步模式下,此位设置NWAIT 信号极性
  xmc_norsram_init_struct.wrapped_mode_enable = XMC_WRAPPED_MODE_DISABLE;       //支持非对齐的成组模式,XMC 于同步模式时是否支持将非对齐的AHB 成组操作拆成2 次操作
  xmc_norsram_init_struct.wait_signal_config = XMC_WAIT_SIGNAL_SYN_BEFORE;     //等待时序配置,仅在同步模式有效
  xmc_norsram_init_struct.write_enable = XMC_WRITE_OPERATION_ENABLE;           //写使能位
  xmc_norsram_init_struct.wait_signal_enable = XMC_WAIT_SIGNAL_ENABLE;         //同步传输期间等待信号使能位
  xmc_norsram_init_struct.write_timing_enable = XMC_WRITE_TIMING_DISABLE;      //读写时序不同控制位,读存储器与写存储器使用不同的时序进行操作,即SRAM/NOR 闪存写时序寄存器(XMC_BKxTMGWR)被开放
  xmc_norsram_init_struct.write_burst_syn = XMC_WRITE_BURST_SYN_ENABLE;        //对存储器写操作位
  xmc_nor_sram_init(&xmc_norsram_init_struct);

  /* timing configuration */
  xmc_norsram_timing_default_para_init(&rw_timing_struct, &w_timing_struct);
  rw_timing_struct.subbank = XMC_BANK1_NOR_SRAM3;                       //指定需要复位的subbank
  rw_timing_struct.write_timing_enable = XMC_WRITE_TIMING_DISABLE;      //读写时序不同控制位,读存储器与写存储器使用不同的时序进行操作,即SRAM/NOR 闪存写时序寄存器(XMC_BKxTMGWR)被开放   
  rw_timing_struct.addr_hold_time      = 0x00;                          //地址保持时间
  rw_timing_struct.addr_setup_time     = 0x00;                          //地址建立时间
  rw_timing_struct.data_setup_time     = 0x00;                          //数据建立时间
  rw_timing_struct.data_latency_time   = 0x0A;                           //数据延迟,仅在同步模式有效
  rw_timing_struct.bus_latency_time    = 0x0;                           //总线延迟时间,为了防止数据总线发生冲突,在复用模式或同步模式时,一次读操作之后XMC在数据总线上插入延迟
  rw_timing_struct.clk_psc             = 0x0;                           //时钟分频系数,仅在同步模式有效,定义XMC_CLK 时钟的频率
  rw_timing_struct.mode = XMC_ACCESS_MODE_A;                            //异步访问模式选择位,只在RWTD 位使能时有效
  w_timing_struct.subbank = XMC_BANK1_NOR_SRAM3;
  w_timing_struct.write_timing_enable = XMC_WRITE_TIMING_DISABLE;
  w_timing_struct.addr_hold_time      = 0x00;
  w_timing_struct.addr_setup_time     = 0x00;
  w_timing_struct.data_setup_time     = 0x00;
  w_timing_struct.data_latency_time   = 0x0A;
  w_timing_struct.bus_latency_time    = 0x0;
  w_timing_struct.clk_psc             = 0x0;
  w_timing_struct.mode = XMC_ACCESS_MODE_A;
  xmc_nor_sram_timing_config(&rw_timing_struct, &w_timing_struct);
回答 +关注 15
1192人浏览 1人回答问题 分享 举报
1 个回答

您需要登录后才可以回复 登录 | 注册