您尚未登录。

楼主 # 2023-09-21 22:08:37

march1993
会员
注册时间: 2023-05-19
已发帖子: 6
积分: 11

V3s u-boot spi 使用 pll_periph0 提速失败

看了这个帖子( https://whycan.com/t_358.html ),提及 spi0 可以使用 pll,于是翻看 v3s 的手册,改了下面两个寄存器

```C
reg = readl(0x01c20000 + 0x28);
reg |= 1<<31;
reg |= 1<<24;
writel(reg, 0x01c20000 + 0x28);
writel(0b10000001000000000000000000000010, 0x01c2000 + 0x00a0);
```

第一个寄存器是 4.3.5.6. PLL_PERIPH0 Control Register,第二个寄存器是 4.3.5.23 SPI0 Clock Register。
根据手册,第一个寄存器 bit31 使能 pll,24bit 使能 pll output,第二个寄存器配置 spi0 使能 clk,使用 pll_periph0,并 3 分频到 200MHz。

但是实际测下来好像并没有什么用。。mtd read 还是贼慢,约等于 1 MiB/s

p.s. 也修改了 SUNXI_INPUT_CLOCK 宏, div = DIV_ROUND_UP(SUNXI_INPUT_CLOCK, priv->freq) 实际 printf 出来确实为 1

离线

楼主 #2 2023-09-21 23:13:33

march1993
会员
注册时间: 2023-05-19
已发帖子: 6
积分: 11

Re: V3s u-boot spi 使用 pll_periph0 提速失败

是我搞错寄存器地址了,经测试,只要在初始化板子的时候执行以下一行就可以了,nand读取速度直接快3倍…
```C
writel(0b00000001000000000000000000000010, 0x01c20000 + 0x00a0);
```

p.s. SUNXI_INPUT_CLOCK 宏和 dts 中 spi0 和 spi_nand 的 spi-max-frequency 共 3 处还是要改的,不然 DIV 会算不对的

最近编辑记录 march1993 (2023-09-21 23:24:45)

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn