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

news2024/10/7 10:13:50

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的电容,问题解决;有问题的升压电路图如下:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1566142.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一维卷积神经网络的特征可视化

随着以深度学习为代表的人工智能技术的不断发展,许多具有重要意义的深度学习模型和算法被开发出来,应用于计算机视觉、自然语言处理、语音处理、生物医疗、金融应用等众多行业领域。深度学习先进的数据挖掘、训练和分析能力来源于深度神经网络的海量模型…

VUE——生命周期

概念&#xff1a; mounted:挂载 new Vue({el: "#x",data: {},methods: {},mounted() {}, }) 系统会自己调用&#xff0c;不需要我们调用。 案例 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><…

go包下载时报proxyconnect tcp: dial tcp 127.0.0.1:80: connectex错误的解决方案

一大早的GoLand就开始抽风了&#xff0c;好几个文件import都红了&#xff0c;于是我正常操作点击提示的sync&#xff0c;但是却报了一堆错&#xff1a; go: downloading google.golang.org/grpc v1.61.1 go: downloading google.golang.org/genproto v0.0.0-20240228224816-df9…

荣誉 | 人大金仓连续三年入选“金融信创优秀解决方案”

3月28日&#xff0c;由中国人民银行领导&#xff0c;中国金融电子化集团有限公司牵头组建的金融信创生态实验室发布“第三期金融信创优秀解决方案”&#xff0c;人大金仓新一代手机银行系统解决方案成功入选&#xff0c;这也是人大金仓金融行业解决方案连续第三年获得用户认可。…

C++STL--排序算法

sort 使用快速排序,平均性能好O(nlogn),但最差情况可能很差O(n^2)。不稳定。 sort(v.begin(),v.end());//对v容器进行排序,默认升序 sort(v.begin(),v.end(),greater<int>());//降序排序对于支持随机访问的迭代器的容器&#xff0c; 都可以利用sort算法直接对其进行排序…

【漏洞复现】用友NC cloud uploadChunk 存在任意文件上传

0x01 阅读须知 “如棠安全的技术文章仅供参考&#xff0c;此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等&#xff08;包括但不限于&#xff09;进行检测或维护参考&#xff0c;未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供…

软考 系统架构设计师系列知识点之云原生架构设计理论与实践(13)

接前一篇文章&#xff1a;软考 系统架构设计师系列知识点之云原生架构设计理论与实践&#xff08;12&#xff09; 所属章节&#xff1a; 第14章. 云原生架构设计理论与实践 第3节 云原生架构相关技术 14.3.2 云原生微服务 1. 微服务发展背景 过去开发一个后端应用最为直接的方…

Appium如何自动判断浏览器驱动

问题&#xff1a;有的测试机chrome是这个版本&#xff0c;有的是另一个版本&#xff0c;怎么能让自动判断去跑呢&#xff1f;&#xff1f; 解决办法&#xff1a;使用appium的chromedriverExecutableDir和chromedriverChromeMappingFile 切忌使用chromedriverExecutableDir和c…

Scala第十八章节(Iterable集合、Seq集合、Set集合、Map集合以及统计字符个数案例)

Scala第十八章节 章节目标 掌握Iterable集合相关内容.掌握Seq集合相关内容.掌握Set集合相关内容.掌握Map集合相关内容.掌握统计字符个数案例. 1. Iterable 1.1 概述 Iterable代表一个可以迭代的集合, 它继承了Traversable特质, 同时也是其他集合的父特质. 最重要的是, 它定…

Python基础中易错点分享

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、方法当变量使用二、字符串使用1.输出一个长句子换行时&#xff0c;需要使用续行符“\”&#xff0c;否则报错2.字符串的格式化3.字符串格式化之format()函数4.浅…

肿瘤免疫反应瀑布图(源于The Miller Lab)

目录 数据格式 绘图 ①根据剂量 ②根据type ③根据治疗响应度 添加水平线 数据格式 肿瘤免疫响应数据 rm(list ls()) library(tidyverse) library(dplyr) library(knitr)#模拟数据 # We will randomly assign the two doses, 80 mg or 150 mg, to the 56 subjects Me…

【星城战记】揭秘成本控制奥秘 如何超越个人开店!

在电玩城行业的竞争中&#xff0c;成本控制和运营管理是决定企业盈利能力和生存空间的关键因素。许多投资者在选择投资项目时&#xff0c;往往忽视了这两个方面的重要性&#xff0c;导致在运营过程中遭遇重重困难。而【星城战记】作为行业内的佼佼者&#xff0c;以其卓越的成本…

ruoyi-vue-pro 前端vue js直接import导入本地文件使用方法

第一步&#xff0c;删除所有依赖&#xff0c;否则配置以后就会启动报错&#xff1a; 第二步配置对应的文件格式&#xff0c;我当前使用的是xml文件 config.module.rule(xml).test(/\.xml$/).use(xml-loader).loader(xml-loader).end();第三步重新安装所有依赖&#xff1a; …

编译 amd gpu 核心态驱动 rocm kmd linux kernel

AMD 开源了专门的 ROCm 的kmd Linux Kernel&#xff0c; 1,下载源代码 git clone --recursive https://github.com/ROCm/ROCK-Kernel-Driver.gitcd ROCK-Kernel-Driver/git checkout rocm-6.0.22,配置kernel cp -v /boot/config-$(uname -r) .config make menuconfig Graph…

Windows下Docker安装Kafka3+集群

编写 docker-compose.yaml 主要参照&#xff1a;https://www.cnblogs.com/wangguishe/p/17563274.html version: "3"services:kafka1:image: bitnami/kafka:3.4.1container_name: kafka1environment:- KAFKA_HEAP_OPTS-Xmx1024m -Xms1024m- KAFKA_ENABLE_KRAFTyes- K…

Java编程使用CGLIB动态代理介绍与实战演示

文章目录 前言技术积累核心概念主要功能适用场景与JDK动态代理的对比 实战演示定义待代理的目标类实现MethodInterceptor接口使用代理对象 测试结果写在最后 前言 在Java编程中&#xff0c;CGLIB (Code Generation Library) 是一个强大的高性能代码生成库&#xff0c;它通过生…

Python网络爬虫(三):Selenium--以携程酒店为例

1 Selenium简介 Selenium是一个用于网站应用程序自动化的工具&#xff0c;它可以直接运行在浏览器中&#xff0c;就像真正的用户在操作一样。它相当于一个机器人&#xff0c;可以模拟人类在浏览器上的一些行为&#xff0c;比如输入文本、点击、回车等。Selenium支持多种浏览器&…

数据分析之POWER BI Desktop可视化应用案列

在power bi中导入数据 导入前期建好的模型 简单介绍&#xff08;power bi desktop&#xff09; 将右边字段全部展开 各类数据 所作的模型 在excel中是单向的&#xff0c;power bi 中可以是双向的 右键单击----点击属性 选择两个---在两个方向上应用安全筛选器 变为双向的…

wireshark解析grpc/protobuf的方法

1&#xff0c;wireshark需要安装3.20以上 下载地址&#xff1a;https://www.wireshark.org/ 2&#xff0c;如果版本不对&#xff0c;需要卸载&#xff0c;卸载方法&#xff1a; sudo rm -rf /Applications/Wireshark.app sudo rm -rf $HOME/.config/wireshark sudo rm -rf /…

c++|vector使用及模拟实现

目录 一、vector的介绍 二、vector的使用(常用接口) 2.1string类的成员函数 2.1.1构造函数 2.1.2析构函数 2.1.3“”运算符重载函数 2.2 迭代器(iterator) 及 对象的遍历访问 2.2.1iterator 2.2.2 operator[] && at() 2.2.4 back() && front() 2.2…