华芯微特32位MCU 发表于 2024-1-2 15:59:07

SWM341系列应用(SFC和SPI应用)

六、SWM341系列 SFC和SPI应用6.1、针对具有QSPI功能的SPI-NORFLASH,如需要使用4线数据为(4BIT)方式进行读操作,则需要将QE位使能,再开启4BIT的都操作指令后进行读取。 如没有开启QE位,则用4BIT进行读取的数据会有误,导致程序会判断SPI-NORFLASH的错误,如ID,格式错误等。   部分型号NORFLSH的QE位是出厂固定为1的,不能进行写0操作,具体要查看SPI-NORFLASH的数据手册。
6.2、外挂SpiFlash 最大只能支持 128Mbit。
6.3、SFC写操作与TFTLCD显示的影响                如果有调用SFC,可以通过cnt=4 多次调用SFC_write解决。要写入的数据必须全部在同一页内,即addr/256 == (addr+(cnt-1)*4)/256。    当 cnt > 4 时,LCD_DCLK 输出可能出现间断(|__| ̄|__| ̄|__| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|__| ̄|__| ̄|__|),这种情况下有些屏幕会显示异常,遇到这种情况,可通过以 cnt = 4 多次调用 SFC_Write() 解决
6.4、外挂SpiFlash与 FRTOS的应用               现       象: 德兰明海(SWM34SRE),客户开发过程中遇到切换页面过程中,素材丢失的情况。经过检查LVGL的设置都没有问题,后续定位发现问题出在RTOS上面。分析与解决: 客户在保存内容到spiflash过程中,直接开关总中断,导致RTOS运行异常。客户使用的FreeRTOS(2022 Version),进入临界区时只是关闭低优先级中断,但是不关闭总中断。如果关闭总中断,会把systick_handler给打断,把RTOS的任务调度处理过程都紊乱了,所以UI进程也不正常。后续让客户保存内容到spiflash过程中,进入临界区,不要开关总中断。
6.5、ROM flash擦除应用            现         象: 中有科技(SWM34SRE)需要提高usbuserboot的升级速度,分析与解决:建议可以使用块擦除的方式( SFC_EraseEx(adr, SFC_CMD_ERASE_BLOCK64KB, 0) while(SFC_FlashBusy()) __NOP(); )代替原本的扇区擦除。
6.6、不同品牌SpiFlash的应用             现      象:客户肇庆金鹏(SWM34SRET6)使用其自己的PCBA以及我们DEMO板测试博雅(BY25Q128ESSIG)和普冉的SPI-Flash时读写异常。分析&解决:使用最近的Lib库中SimplSFC例程分别测试两种SPI-Flash,测试均正常,且兼容原有的flm算法文件;后续比对客户使用的Lib库与我们使用的不一致,不是最新的库,更新后读写正常。总结:(1)需及时更新最新的Lib库;(2)经测试,博雅(BY25Q128ESSIG)和普冉的SPI-Flash均可以通用我们现有的flm算法文件。
6.7、SFC接口写入数据到SpiFlash应用    现      象:技术支持安居宝(SWM34SRET6)智能家具报警显示面板,客户目前用SFC写写入扇区非常慢需要200ms,由于客户需要显示和写入同时进行,sfc只能一个字一个字写入,写入效率很低,200ms完成扇区写入。分析与解决:目前建议客户使用lib库的GPIO模拟时序写入SFC,这个可以做到40ms写入扇区,达到客户可以接受的范围。
6.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 分频读写,这对全局性能 响过大,无法用于实际,故本问题无法解决。
                   屏驱动显示效果图:
6.9、4字节对齐读取引起显示的问题      现      象:客户需要让自己的二合一仪表显示中文,由于SDRAM内部空间不足,需要在FLASH里面加载字库,用到内部SRAM做临时缓存区,缓存字体后在输出。但是客户的程序里面一直显示有问题。分析与解决:经过排查发现,由于SFC需要4字节32bit访问对齐,需要把字库存放4字节对齐,否则SRAM临时缓存会取值不对。
6.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进行双缓存读取。                图1后续通过内部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(裸机),符合客户要求,问题解决6.11、341- SPI屏幕ST7789-240x240-lvgl显示字符串    问      题:客户把lvgl内部字体映射到外部flash中,但显示字符串却是乱码。分析和解决:客户把字体储存到外部flash中,显示的字符串是乱码,储存到内部flash显示正常,原因是SFC是四字节读写对齐,可能导致字体偏移地址有误。
6.12、电源干扰引起SpiFlasH读取错误的问题      现      象:豪毅兴,客户反馈用上位机API播放开机视频后会出现卡死,或者出现读取不到UI.bin文件;分析与解决:排查发现其两路升压电路导致的,把两路升压电路的电容放到MOS管前,或者拆除掉4.7uf的电容,问题解决;有问题的升压电路图如下:                              

于治国 发表于 2024-3-4 17:50:35

学习学习,学习学习。

JonathanChen 发表于 2024-7-12 10:15:11

34S 驱动BY25Q64AS,只能2线/1线, 无法四线。四线读回全是0
用的 SWM341_Lib-240508.zip

包括JLINK 通过 FLM 算法 无法读取。
PIN脚用的跟例程一样
页: [1]
查看完整版本: SWM341系列应用(SFC和SPI应用)