本帖最后由 RCSN 于 2020-5-15 22:40 编辑
编译完成后,烧录到板子上,idf.py –p /dev/ttyUSB0 flash,烧录进入后发现系统一直复位,提示如下
搜索后,发现lgvl使用的esp32中,显示线程用了第二个核心,而其他调度则用了第一个核心。而esp32s2是单核,我们需要改动下一下,显示都用单核。
烧录进去后发现显示完全不对,主要是没有显示相关图标,只显示一堆重叠颜色,而刷到esp32板子上则正常,我试着单纯循环一个像素刷红蓝绿则正常,但是刷一整张图片不正常,后来查看到的是,lgvl使用的驱动,描点函数使用的spi类似轮询方式发送,而不是使用的DMA发送。
对此我去对比了下两个芯片的用户手册,发现esp32s2的手册极其不全,并且spi并没有介绍其外设,而esp32则很详细,这让我不得不怀疑两者的寄存器并不相同。好在与esp32s2的手册的DMA有对spi进行收发描述,而且esp-idf中example也有对esp32s2的DMA收发例子。如此可以进行移植。
如此我就在disp-spi.c中做了esp32和esp32s2的适配驱动,目前只支持ILI9431
而lgvl真正底层描点函数,这里使用类framerbuffer传输。
编译烧录到板子后,demo一切正常,效果如下,esp32s2刷屏效果还是可以,特别是使用DMA后,在窗口切换中,没有明显的拉窗效果
|