怀揣少年梦 发表于 2025-6-22 22:52

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

本帖最后由 怀揣少年梦 于 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

dffzh 发表于 2025-6-23 11:10

阁下是怎么测试的呢?详细说说,包括代码。

xch 发表于 2025-6-23 11:25

看起来没啥问题。
主频144,每6个周期执行一次翻转。
应该指令都在CACHE之中,与SRAM无关。CACHE是和内核时钟同步的。
分支跳转指令2,读操作数1,读GPIO寄存器1,异或计算1,写GPIO寄存器 1. 正好六个周期。优化一下可以到5个周期。把读操作数改到循环外。

xch 发表于 2025-6-23 11:31

用DMA 循环模式应该可以更快些。让DMA 不停地轮流传输两个数据到GPIO。MCU 休眠,免得抢总线。

cooldog123pp 发表于 2025-6-24 15:34

你可以擦写个1000次然后算个总时间,就可以得出平均时间了

飞思啦 发表于 2025-6-25 13:48

把代码放在sram内部运行试试,我觉得应该是读flash导致的瓶颈
页: [1]
查看完整版本: CH32V307单片机,SRAM最快写入的周期是多少?