写在前面:
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);
以解决利用问题。