打印
[技术相关]

SWM34S的若干疑问

[复制链接]
932|20
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
选择SWM34S的原因自然是想做点HMI的设计。刚接触这款芯片,围绕评估板测试了几天感觉很好。SDK化繁为简很人性化。有几个问题想请教一下:

问题1:主频时钟设置为多少为宜。
若不考虑SFC驱动(片外的nor flash)和SDRAM,自然是150MHz满载使用。但如果考虑norflash和sdram,就不能设置为150M了,norflash最大时钟一般支持133M,sdram好像是140M(有资料说SWM34S最高支持140M)。
对于评估板板载的w25q128,测试过主频120M时的1分频,做虚拟U盘时会失败,所以norflash只能2分频,这样norflash带宽损失不小。sdram还未测试,
这样的话,如果norflash和sdram均采用2分频,cpu主频可以为150M,但norflash和sdram时钟频率就只有75M。而如果为迎合外设时钟而主动降低cpu主频,或许这两个外设的时钟会有所提高,但主频马力又上不去了。
该问题有没有最优解?

问题2:norflash的写速度。norflash本身的写速度就不会太快。移植官方的USB Device和fatfs例程实现norflash虚拟U盘,由PC机直接拷贝图片到norflash。移植很简单,PC机写5MB的150个jpg文件,平均速度只有20-30K,写完时间约为2分30秒 - 3分种,慢的出奇。文件删除时间30s还能接受。
有没有优化可能,写速度再提升一下。

问题3:34S内置的RAM只有64K,RTOS,文件系统,DSP库移植完也就差不多了。不知道内置8MB的SDRAM是否可作为变量存储空间(直接总线映射型的那种读写模式)。大估计是支持的,但又存在一个问题。比如IAR开发环境下,通过Linker文件可以指定变量地址。但这时候34S的内置SDRAM其实是还没有做初始化的。NXP的M7是采用DCD方式,在工程中直接配置好SDRAM相关参数,由BOM函数提前初始化好SDRAM。不知道34S是如何处理的,不会是需要预烧一个初始化app吧,这样的话调试主APP会很麻烦吧。

使用特权

评论回复

相关帖子

沙发
华芯微特FAE| | 2023-8-7 11:07 | 只看该作者
推荐您用我司自主研发的synwit ui creator上位机

使用特权

评论回复
板凳
XIVN1987| | 2023-8-7 14:33 | 只看该作者


问题二:

如下图所示,,W25Q128 擦除一个扇区耗时 30--200ms,,写入一个扇区耗时 11.2--48ms,,
最好的情况:1s可以擦写 1000/(30+11.2) * 4K = 97KB
最差的情况:1s可以擦写 1000/(200+48) * 4K = 16KB

通过将扇区擦改成64KB块擦,,擦除一个64KB块耗时150--1000ms,,写入一个64KB块耗时 179.2--768ms
最好的情况:1s可以擦写 1000/(150+179.2) * 64K = 194KB
最差的情况:1s可以擦写 1000/(1000+768) * 64K = 36KB


因此,,将擦除操作由扇区擦,,改成64KB块擦,,可以将擦写速度提升一倍。。



使用特权

评论回复
地板
guijial511| | 2023-8-7 15:46 | 只看该作者
主频时钟和外设时钟是两回事吧

使用特权

评论回复
5
XIVN1987| | 2023-8-7 16:58 | 只看该作者
问题3:
可以栈、占内存小的变量用片内SRAM,,SDRAM 用作堆存储,,占内存大的 Buffer、数组都在堆上分配。。

使用特权

评论回复
6
tomasyong|  楼主 | 2023-8-7 18:30 | 只看该作者
XIVN1987 发表于 2023-8-7 14:33
问题二:

如下图所示,,W25Q128 擦除一个扇区耗时 30--200ms,,写入一个扇区耗时 11.2--48ms,,

这是结合官方例程改的,将4K改为64K
void FlashDiskFlush(void)
{       
    // Write back the cache if it's dirty
    if(FLASH_Cache_Dirty)
    {
//        SFC_Erase(DATA_FLASH_BASE + Flash_Block_Addr, 1);
        
SFC_EraseEx(DATA_FLASH_BASE + Flash_Block_Addr, SFC_CMD_ERASE_BLOCK64KB,0);         
        
        
               
                for(int i = 0; i < FLASH_BLOCK_SIZE; i += 256)
                        SFC_Write(DATA_FLASH_BASE + Flash_Block_Addr + i, (uint32_t *)&FLASH_Block_Cache, 256/4);
               
        FLASH_Cache_Dirty = 0;
    }

逻辑上没错,但SFC_EraseEx函数似乎有点问题,文件下载不了会一直卡顿。如果用扇区擦除SFC_Erase,响应很快,但会丢文件,因为有些扇区没擦的缘故

使用特权

评论回复
7
XIVN1987| | 2023-8-7 22:17 | 只看该作者
tomasyong 发表于 2023-8-7 18:30
这是结合官方例程改的,将4K改为64K
void FlashDiskFlush(void)
{       


改成64KB没那么简单,,那个block buffer也得改成64KB,,341 RAM总共才64KB,,所以片内RAM放不下,,还得把block buffer放到SDRAM里面去。。

使用特权

评论回复
8
XIVN1987| | 2023-8-7 22:20 | 只看该作者

如果非常在意写入速度,,建议改用 SDNAND,,SDNAND 不需要擦除、直接写,,写入速度至少再加倍。。

SDNAND 也支持普通 SPI 接口,,就是读取速度比 SFC 的 4 线慢。。

使用特权

评论回复
9
tomasyong|  楼主 | 2023-8-8 06:51 | 只看该作者
XIVN1987 发表于 2023-8-7 22:17
改成64KB没那么简单,,那个block buffer也得改成64KB,,341 RAM总共才64KB,,所以片内RAM放不下,, ...

都改了,修改内容在FlashDisk.c和Flashdisk.h
1-#define FLASH_BLOCK_SIZE        (1024 * 32)   
2- FLASH_Block_Cache放在SDRAM(已提前初始化)     
3-FlashDiskFlush()写更新,擦除按32K擦除
没有用                                 

使用特权

评论回复
10
yangxiaor520| | 2023-8-8 08:09 | 只看该作者
外设时钟是主频时钟分频得到

使用特权

评论回复
11
XIVN1987| | 2023-8-8 11:16 | 只看该作者
tomasyong 发表于 2023-8-8 06:51
都改了,修改内容在FlashDisk.c和Flashdisk.h
1-#define FLASH_BLOCK_SIZE        (1024 * 32)   
2- FLASH_Bloc ...



https://gitee.com/synwit-co-ltd/SWM341_Lib 中已添加 64KB 块擦除支持,,实测速度提升1倍,,可对比修改内容看看哪里没改对


使用特权

评论回复
12
tomasyong|  楼主 | 2023-8-8 14:52 | 只看该作者
XIVN1987 发表于 2023-8-8 11:16
https://gitee.com/synwit-co-ltd/SWM341_Lib 中已添加 64KB 块擦除支持,,实测速度提升1倍,,可对比 ...

感谢即时回复。测试了一下,跟自己改的效果一样,降速到不到10KB。奇了怪了

使用特权

评论回复
13
XIVN1987| | 2023-8-8 16:16 | 只看该作者
tomasyong 发表于 2023-8-8 14:52
感谢即时回复。测试了一下,跟自己改的效果一样,降速到不到10KB。奇了怪了 ...


改成 64KB 块擦除,,速度反而降低了??

你用的 SPI Flash 什么型号??你看下它的数据手册,,是不是跟 W25Q128 不一样。。

使用特权

评论回复
14
tomasyong|  楼主 | 2023-8-8 18:13 | 只看该作者
就是开发板上自带的w25q。这个问题就这样吧。
又来了新问题。当FLASH_Block_Cache放在SDRAM,LCD显存也放在SDRAM。正常二者确实能工作。

但频繁点按复位键情况下,通过上位机烧录的文件会消失,具体表现为PC机上能找到这个盘,所占空间没变,但打开后没文件。
烧录文件后,如果禁止写刷新,即FLASH_Cache_Dirty = 0;  不会有此现象。
如果FLASH_Block_Cache放在内部RAM,似乎也没有这种现象。
表象上似乎SDRAM时序有问题。这样的话就会很麻烦,动了根本了

使用特权

评论回复
15
tomasyong|  楼主 | 2023-8-8 18:17 | 只看该作者
补充一下:即便FLASH_Block_Cache放在内部RAM,也会有次现象,能出盘符,所占空间也有,但文件丢失。

使用特权

评论回复
16
tpgf| | 2023-9-1 10:36 | 只看该作者
想要做人机接口的话 需要一定跑系统吗

使用特权

评论回复
17
nawu| | 2023-9-1 11:19 | 只看该作者
这个必须得看实际的使用需求吧  

使用特权

评论回复
18
aoyi| | 2023-9-1 11:59 | 只看该作者
连接可编程序控制器(PLC)、变频器、直流调速器、仪表等工业控制设备,利用显示屏显示,通过输入单元(如触摸屏、键盘、鼠标等)写入工作参数或输入操作命令,实现人与机器信息交互的数字设备,由硬件和软件两部分组成。

使用特权

评论回复
19
zljiu| | 2023-9-1 12:13 | 只看该作者
处理器的性能决定了HMI 产品的性能高低,是HMI的核心单元

使用特权

评论回复
20
gwsan| | 2023-9-1 15:26 | 只看该作者
根据HMI的产品等级不同,处理器可分别选用8位、16位、32位的处理器

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

27

帖子

0

粉丝