本帖最后由 天空飘来五个字儿 于 2025-2-12 20:27 编辑

    开发板到手有一段时间了,刚好是年底春节前,各种公私杂事颇多,没有太过深入研究学习。目前项目上也没有具体使用到相关芯片及开发环境,看参考手册,数据手册,有了初步了解,谈不上深入,后面提到的一些问题和建议仅供厂家参考。
    至于开箱、环境搭建其它同学都说得太多了,就不赘述了。此处省略1000字。
    对于一款新的芯片,从不熟悉到熟悉,总是从官方例程开始,我也不例外,下好资料包,尝试官方工具过代码下载成功,就盯着lvgl_demo例程看,断断续续,也算了解大概。
    优点:
一、开发环境易于搭建,直接给到的Keil工程,参照例程很容易调试跑通。
二、用官方的下载工具,非常方便,加载少些文件后,连上串口,打开烧录,开发板复位即可自动烧录。同时下载软件也可以查看串口调试信息,不用更换其它串口软件,省事。
三、芯片方面,功能强大,接口很多,支持BT双模,驱动RGB屏显,xip访问外部flash。
    不足:
一、lvgl例程中夹杂了太多的无用代码,增加了阅读难度,容易误导。整个工程的架构有点复杂,其中有些函数弯来拐去的,来回调用,又加上RTOS的事件驱动,没有指导文档,对于新手来说,有很大阻力。
二、芯片规格书和手册对于芯片内部叠封flash及spi接口的PMU语焉不详,及时看代码也比较迷糊,感觉不好下手。
三、芯片方面,缺少图形加速处理(类似于STM32的DMA2D),在图形复杂处理的时候,明显不足,后面视频可以看到。
==========分割线===========
下图是main.c中,hw_xip_flash_init()函数,进入内部看了分析,我认为式初始化内部叠封的flash,用于程序存储。但疑惑的是,在这之前的代码又是从哪里加载运行的呢?
Freq-1.jpg
上图中,hw_external_flash_init()是初始化外部flash,其实在ext_flash_program()中有初始化外部flash,但如果没有连接下载,就不会初始化,所以这里再做一次初始化。

当我看到下图中用lv_img_set_src()时,又跟进查看了图片源
Freq-3.png
图片源数组:
Freq-4.png
图片定义:
Freq-5.png
图片起始地址:
Freq-6.png
跟进lv_img_set_src()内部,看到Freq官方对这个函数做了修改,可以看到图片地址增加了基址:0xC0000000
Freq-7.png
由此,我猜测是把外部Flash映射到0xC0000000起始的地址空间,但没有看到规格书上有明确说明。
另外从Freq官方的keil下载算法也可以看出端倪,都是ext. flash spi
Freq-8.png
下载了qinyunti的本地播放音乐的工程,烧录到芯片里面后,下载了一首歌曲,测试了音乐播放。再重新烧录回lvgl_demo的工程代码,首页变成了这样:
Freq-p1.jpg
可见中文字体被歌曲内容覆盖了,不能正确显示中文字,但英文字没受影响:
Freq-p2.jpg
除了中文字体,其它图片也没受影响,估计还没有覆盖到,如果多下几首歌就会被覆盖。
Freq-p3.jpg
lvgl例程中提供了资源文件的hex文件all_Jul_25_2024_105313.hex,但官方的下载软件只能识别bin格式文件,此外,下载时也需要指定存放到flash的地址,这些都不确定,不清楚存放的目标地址。官方能给出一个制作资源bin文件的操作方法和流程,以及下载操作说明就更好了。
另外,使用lv_demo_benchmark()测试了驱屏能力,感觉芯片驱屏能力还是弱了,对于图形运算处理较多的情形明显能力不足,一方面可能也是单缓冲的问题,另一方面就是缺少图形加速处理器(DMA2D),请看下面视频中15秒开始和50多秒开始的地方,惨不忍睹

这颗芯片用来驱动静态图片或者刷新不频繁的画面还是可以的,但如果要出现频繁变化的画面,特别画面比较大的情形是不合适的。如果有这样需求的同学得注意测评下。
此外,蓝牙方面的测试,仅作为外设,手机作主控,通过BLE调试助手进行了简单的读写操作,轻微障碍下10几米是没有问题的,如果有墙阻隔距离十几米会出现丢包,不过测试的不是很严谨,只是根据我们产品实际应用可能会出现的场景模拟了下,认为不会有问题。也不排除手机端蓝牙收发能力更强掩盖了该芯片的不足,不过这些都需要用到专业的测试设备,目前手头没有相应设备,无法做出准确评测。