kxsi 发表于 2022-7-6 16:01

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、总结AT32F403A的XMC与SPIM共用时存在引脚冲突(PB7),在初始化XMC时加上此句gpio_pin_remap_config(XMC_NADV_MUX, TRUE);以解决利用问题。

htmlme 发表于 2022-7-8 09:59

LVGL搞起来   

biechedan 发表于 2022-7-8 10:30

这个焊工可以啊   

muyichuan2012 发表于 2022-7-8 11:37

总结的很到位,感谢分享。

phoenixwhite 发表于 2022-7-8 15:24

有完整的工程文件吗

mickit 发表于 2022-7-8 16:37

性能怎么样   

ArterySW 发表于 2022-7-8 16:55

雅特力的LVGL sample code就是这么配置的。图片放在SPIM flash,用XMC驱动LCD。代码链接如下
点我

iyoum 发表于 2022-7-9 12:42

图形存储有什么格式要求?

febgxu 发表于 2022-7-9 14:20

lvgl的刷新速度怎么样
页: [1]
查看完整版本: AT32F403A, XMC, SPIM, LVGL, 图片, SPIM存储意外擦除的BUG原因与解决