SWM341系列 SFC和SPI应用
1、针对具有QSPI功能的SPI-NORFLASH,如需要使用4线数据为(4BIT)方式进行读操作,则需要将QE位使能,再开启4BIT的都操作指令后进行读取。
如没有开启QE位,则用4BIT进行读取的数据会有误,导致程序会判断SPI-NORFLASH的错误,如ID,格式错误等。 部分型号NORFLSH的QE位是出厂固定为1的,不能进行写0操作,具体要查看SPI-NORFLASH的数据手册。
2、外挂SpiFlash 最大只能支持 128Mbit。
3、SFC写操作与TFTLCD显示的影响
如果有调用SFC,可以通过cnt=4 多次调用SFC_write解决。要写入的数据必须全部在同一页内,即addr/256 == (addr+(cnt-1)*4)/256。 当 cnt > 4 时,LCD_DCLK 输出可能出现间断(|__| ̄|__| ̄|__| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|__| ̄|__| ̄|__|),这种情况下有些屏幕会显示异常,遇
到这种情况,可通过以 cnt = 4 多次调用 SFC_Write() 解决
4、外挂SpiFlash与 FRTOS的应用
现 象: 德兰明海(SWM34SRE),客户开发过程中遇到切换页面过程中,素材丢失的情况。经过检查LVGL的设置都没有问题,后续定位发现问题出在RTOS上面。
分析与解决: 客户在保存内容到spiflash过程中,直接开关总中断,导致RTOS运行异常。客户使用的FreeRTOS(2022 Version),进入临界区时只是关闭低优先级中断,但是不关闭总中断。如果关闭总中断,会把systick_handler给打断,把RTOS的任务调度处理过程都紊乱了,所以UI进程也不正常。后续让客户保存内容到spiflash过程中,进入临界区,不要开关总中断。
5、ROM flash擦除应用
现 象: 中有科技(SWM34SRE)需要提高usb userboot的升级速度,
分析与解决:建议可以使用块擦除的方式( SFC_EraseEx(adr, SFC_CMD_ERASE_BLOCK64KB, 0) while(SFC_FlashBusy()) __NOP(); )代替原本的扇区擦除。
6、不同品牌SpiFlash的应用
现 象:客户肇庆金鹏(SWM34SRET6)使用其自己的PCBA以及我们DEMO板测试博雅(BY25Q128ESSIG)和普冉的SPI-Flash时读写异常。
分析&解决:使用最近的Lib库中SimplSFC例程分别测试两种SPI-Flash,测试均正常,且兼容原有的flm算法文件;后续比对客户使用的Lib库与我们使用的不一致,不是最新的库,更新后读写正常。总结:(1)需及时更新最新的Lib库;(2)经测试,博雅(BY25Q128ESSIG)和普冉的SPI-Flash均可以通用我们现有的flm算法文件。
7、SFC接口写入数据到SpiFlash应用
现 象:技术支持安居宝(SWM34SRET6)智能家具报警显示面板,客户目前用SFC写写入扇区非常慢需要200ms,由于客户需要显示和写入同时进行,sfc只能一个字一个字写入,写入效率很低,200ms完成扇区写入。
分析与解决:目前建议客户使用lib库的GPIO模拟时序写入SFC,这个可以做到40ms写入扇区,达到客户可以接受的范围。
8、SWM341全系列硬件 SPI 模块 2 分频不可用
现 象: 客户深圳和而泰小家电,在破壁机项目上使用SWM341CET7,因客户希望提高 LCD 刷新帧率,目前瓶颈在 SPI 0 读取速率上,且外挂的 SPI Nor Flash 为 64MB,大于 SFC 最大支持的 16MB 容量上限,无法使用 SFC 外设。在系统主频为 150M 下,尝试提高硬件 SPI0 为 2 分频,测试读&写数据异常,改为 4 分频后,读写正常。
分析及解决:在对 PCB 整改外围走线优化波形后,测试 SWM341 硬件 SPI 速率最高极限值如下,
读&写:主频 150M 下 4 分频(37.5M),主频 80M 下 2 分频(40M);
仅写:主频 144M 下 2 分频(72M);
高于以上频率均不能保证量产一致性,且降低主频至 80M 以下才能使用 2 分频读写,这对全局性能 响过大,无法用于实际,故本问题无法解决。
屏驱动显示效果图:
9、4字节对齐读取引起显示的问题
现 象:客户需要让自己的二合一仪表显示中文,由于SDRAM内部空间不足,需要在FLASH里面加载字库,用到内部SRAM做临时缓存区,缓存字体后在输出。但是客户的程序里面一直显示有问题。
分析与解决:经过排查发现,由于SFC需要4字节32bit访问对齐,需要把字库存放4字节对齐,否则SRAM临时缓存会取值不对。
10、4字节对齐对显示速度的影响
现 象:测试SFC模块过程中(SWM341CE/RE),使用SWM341 SPI屏驱动过程中遇到一些问题,发现目前由于341CE没有SDRAM不具备解码能力,需要把图片存储在SPIFLASH里并且是通过bitmap的数据格式,并以bin文件的方式存储。SWM341CE与SPIFLASH是以SFC方式连接,自然是以SFC的方式去访问flash。在调试屏驱动过程中发现以下问题:在刷新320*170大小的图片过程中:刷新120张图片花费2.8秒,如下图1所示,是用SFC_Read进行双缓存读取。
后续通过内部DMA传输SFC到SRAM里缓存,改成改成下图的方式进行搬运,刷新120张图片花费13秒。速度反而变慢了
分析与解决:需要注意的是由于SFC本身是32bit(WORD)对齐访问的,DMA设置也需要设置成WORD对齐 ,否则DMA访问的速度会变慢,后续测试过120张图片仅搬运的话,Byte对齐,HalfWord对齐 ,Word对齐,分别花费10秒,3.6秒,700毫秒。如果后续应用有SFC读取到SRAM的应用的话,需要DMA搬运注意WORD对齐。
目前的测试条件下,150Mhz 320*170 SPI屏 最高刷新帧率61~62fps(裸机),符合客户要求,问题解决
11、341- SPI屏幕ST7789-240x240-lvgl显示字符串
问 题:客户把lvgl内部字体映射到外部flash中,但显示字符串却是乱码。
分析和解决:客户把字体储存到外部flash中,显示的字符串是乱码,储存到内部flash显示正常,原因是SFC是四字节读写对齐,可能导致字体偏移地址有误。
12、电源干扰引起SpiFlasH读取错误的问题
现 象:豪毅兴,客户反馈用上位机API播放开机视频后会出现卡死,或者出现读取不到UI.bin文件;
分析与解决:排查发现其两路升压电路导致的,把两路升压电路的电容放到MOS管前,或者拆除掉4.7uf的电容,问题解决;有问题的升压电路图如下: