Rockchip · AI & Linux Hub

硬件接口

Rockchip FLEXBUS FSPI 完整指南:SPI NOR Flash、内核与 DTS

Rockchip FLEXBUS FSPI 完整指南:SPI NOR Flash、内核与 DTS:保留完整技术章节、代码、参数及原文疑点。

· ArmSoM Editorial · Rockchip source documentation · 2 分钟阅读

本文完整整理原厂技术正文,作为 ArmSoM 平台参考。原文适用范围:原文称支持 FLEXBUS 的 SoC;具体板卡待核对,Linux kernel 6.1。使用前须核对实际板卡、SoC、SDK/BSP 分支、引脚与外设配置;未做板级硬件验证,不代表所有 ArmSoM 板卡均支持。文中输出和数值为原文示例,不是 ArmSoM 实测。

中文保留中文原稿正文,英文保留英文原稿,俄文完整翻译英文正文;代码、注释和命令输出保留源语言。 原稿技术正文没有独立技术配图或表格,没有补造配图。

中英文原稿版本均为 V1.0.0。

操作注意:预留内存、DMA、引脚复用和设备写操作会影响实际硬件。所有命令仅供阅读,未执行硬件读写;先核对原理图、供电、时序和实际设备。DTS 中 xxx 和省略号是原文占位示例,不能直接当作完整配置。

来源与修复详见 EDITORIAL-NOTES。官方参考:ArmSoM, Rockchip Linux.

原文产品版本表(PDF p.2;仅表示原稿范围,非板级验证结论):

芯片名称 内核版本
所有支持 FLEXBUS 模块的芯片 6.1

1. FLEXBUS FSPI 模式

1.1 概述

FLEXBUS FSPI 模式指的是通过 FLEXBUS 模拟 RK FSPI(Flexible Serial Peripheral Interface)来实现相应功能,例如:

single line output/quad line input,满足 Linux MTD Quad SPI Flash 驱动的典型配置

关键特性:

时钟频率最高 100MHz

1.2 配置

1.2.1 内核配置

FLEXBUS FSPI mode 为标准 SPI 框架驱动实现,且仅实现 spi-mem 结构,支持外接 SPI Flash 或支持

spi-mem 协议的外设:

CONFIG_SPI=y
CONFIG_SPI_ROCKCHIP_FLEXBUS_FSPI=y

1.2.2 dts 配置

以外接 SPI Nor flash 子设备为例:

&flexbus {
    rockchip,flexbus0-opmode = <ROCKCHIP_FLEXBUS0_OPMODE_SPI>;
    rockchip,flexbus1-opmode = <ROCKCHIP_FLEXBUS1_OPMODE_NULL>;
    status = "okay";
};
&flexbus_fspi {
    pinctrl-names = "default";
    pinctrl-0 = <&flexbus0m1_pins &flexbus0_clk_pins
                 &flexbus0_d0_pins &flexbus0_d1_pins
                 &flexbus0_d2_pins &flexbus0_d3_pins>;
    status = "okay";
    flash@0 {
        compatible = "jedec,spi-nor";
        reg = <0>;
        spi-max-frequency = <100000000>;
        spi-rx-bus-width = <4>;
        spi-tx-bus-width = <1>;
    };
};

说明:

mode_bits 为 SPI_RX_QUAD:

支持配置 spi-rx-bus-width 为 4

默认配置为 SPI mode 0,MSB mode,相关参数 dts 不可调,请自行参考控制器手册做进一步开发

1.2.3 驱动文件

驱动文件为 drivers/spi/spi-rockchip-flexbus-fspi.c 。

浏览此主题 → · 入门路线 →