写在前面:

XMC初始化时添加:

gpio_pin_remap_config(XMC_NADV_MUX, TRUE);

1、环境:

IAR, LVGLv8, ILI9488, W25Q32, XMC, AT32F403A-LQFP100

2、现像描述:

1)关键代码如下:

  system_clock_config();
  nvic_priority_group_config(NVIC_PRIORITY_GROUP_4);
  delay_init();
  dG_Flash0.pf_Config();
  spim_init();

lv_obj_t* img1 = lv_img_create(lv_scr_act());

  lv_img_set_src(img1, &_book_alpha_50x50);
  lv_obj_set_style_bg_color(img1, lv_color_make(0, 0xff, 0), 0);
  lv_obj_set_size(img1, 50, 50);
  lv_obj_set_pos(img1, 0, 0);

  while(1){
    lv_task_handler();
  }

图片是存储在W25Q32里的位置0x08400000,通过QSPI访问。

2)现像如下:

当运行到spim_init(); 后,可以通过IAR的调试得到数据如下

                                                                       初始化前

                                                                        初始化后

当运行到lv_task_handler();也就是,运行完后,数据如下:

                                                         使用w25q64为ff,使用w25q32为乱码

3)、问题查找

 已经能够确定不是显示驱动,因为能正常画按键。

程序最开始是调试的SPIM,能够正常运行。后来使用XMC与SPIM就出现问题。

单步调试时,只出现过一次正常显示图片的上边一点点,猜测为硬件问题。

查找硬件原理图如下:

官方推荐硬件图如下AN0042_AT32_SPIM_Application_Note_ZH_V2.0.0.pdf (arterytek.com)

修改电路后如下:

测试后,问题依然存在。

此时继续各种调试,没有发现有用的现像。问题到此卡住。不过依然怀疑与XMC有关。

通过网络搜索得到 AN0024, 

PB7做为XMC的NADV共用(都为PB7),存在数据冲突。

使用gpio_pin_remap_config(XMC_NADV_MUX, TRUE);将XMC_NADV转为复用功能后恢复正常。

 

到此问题解决。

3、值得注意的是,外部SPIM还会影响单片机的时钟频率:

查询DS得到如下:

 

 4、总结

AT32F403A的XMC与SPIM共用时存在引脚冲突(PB7),在初始化XMC时加上此句gpio_pin_remap_config(XMC_NADV_MUX, TRUE);

以解决利用问题。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐