打印
[技术支持]

CH32V307单片机,SRAM最快写入的周期是多少?

[复制链接]
2661|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
怀揣少年梦|  楼主 | 2025-6-22 22:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 怀揣少年梦 于 2025-6-23 16:06 编辑

背景:在进行GPIO测试时,发现GPIO的翻转极限是24Mhz,应该是受限于SRAM周期问题:想了解一下SRAM最快写入的周期是多少?有什么办法可以提升吗?
汇编如下:
.section .text
.global GPIO_Toggle_Asm

GPIO_Toggle_Asm :
    # 高速模式(约48MHz)
    li t1, 0x40011410   # GPIOD_BSHR地址
    li t2, 0x40011414   # GPIOD_BCR地址
    li a5, 0x0001     # PD0置位值
    loop:

    sw a5, 0(t1)      # 输出高电平
    sw a5, 0(t2)      # 输出低电平
    j loop


使用特权

评论回复
沙发
丙丁先生| | 2025-6-23 06:07 | 只看该作者
https://bbs.21ic.com/icview-3463840-1-1.html

使用特权

评论回复
板凳
dffzh| | 2025-6-23 11:10 | 只看该作者
阁下是怎么测试的呢?详细说说,包括代码。

使用特权

评论回复
评论
怀揣少年梦 2025-6-23 16:06 回复TA
大佬,已经添加代码 
地板
xch| | 2025-6-23 11:25 | 只看该作者
看起来没啥问题。
主频144,每6个周期执行一次翻转。
应该指令都在CACHE之中,与SRAM无关。CACHE是和内核时钟同步的。
分支跳转指令2,读操作数1,读GPIO寄存器1,异或计算1,写GPIO寄存器 1. 正好六个周期。优化一下可以到5个周期。把读操作数改到循环外。

使用特权

评论回复
评论
dffzh 2025-6-23 16:17 回复TA
@怀揣少年梦 :你用MCU以24M(差不多是42纳秒)的频率翻转IO口,这么快的,做什么应用?真需要这么快,不得用FPGA。 
怀揣少年梦 2025-6-23 16:08 回复TA
大佬我是使用汇编指令进行GPIO翻转的 
5
xch| | 2025-6-23 11:31 | 只看该作者
用DMA 循环模式应该可以更快些。让DMA 不停地轮流传输两个数据到GPIO。MCU 休眠,免得抢总线。

使用特权

评论回复
评论
怀揣少年梦 2025-6-24 08:39 回复TA
@xch :到时候得空测一下 
xch 2025-6-23 16:57 回复TA
@怀揣少年梦 :一般是 DMA 快。操作GPIO 不用跑指令,MCU是空闲的。 
怀揣少年梦 2025-6-23 16:09 回复TA
直接使用汇编应该会比DMA快一些吧 
6
cooldog123pp| | 2025-6-24 15:34 | 只看该作者
你可以擦写个1000次然后算个总时间,就可以得出平均时间了

使用特权

评论回复
7
飞思啦| | 2025-6-25 13:48 | 只看该作者
把代码放在sram内部运行试试,我觉得应该是读flash导致的瓶颈

使用特权

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

本版积分规则

45

主题

473

帖子

3

粉丝