AT32F403A, XMC, SPIM, LVGL, 图片, SPIM存储意外擦除的BUG原因与解决

写在前面:

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);

以解决利用问题。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值