Rockchip · AI & Linux Hub

Аппаратные интерфейсы

Руководство Rockchip FLEXBUS FSPI: SPI NOR Flash, ядро и DTS

Руководство Rockchip FLEXBUS FSPI: SPI NOR Flash, ядро и DTS с полными техническими разделами, кодом, параметрами и замечаниями к исходнику.

· ArmSoM Editorial · Rockchip source documentation · 3 мин чтения

Это полный технический материал на основе исходника, справочник по платформе для ArmSoM. Область исходника: SoC с FLEXBUS согласно исходнику; поддержка конкретной платы требует проверки, Linux kernel 6.1. Перед применением проверьте плату, SoC, ветку SDK/BSP, выводы и периферию. Аппаратная проверка не проводилась; поддержка всеми платами ArmSoM не подразумевается. Вывод и числовые результаты — примеры исходника, а не испытания ArmSoM.

Китайская статья следует китайскому исходнику, английская — английскому; русская полностью переводит английский технический текст. Код, комментарии и вывод команд сохраняют язык источника. В технической части исходника нет отдельных технических рисунков или таблиц; вымышленные иллюстрации не добавлялись.

Оба исходника имеют версию V1.0.0.

Осторожно: резервирование памяти, DMA, мультиплексирование выводов и запись в устройства влияют на оборудование. Команды приведены для изучения; аппаратные операции не выполнялись. Проверьте схему, питание, тайминги и устройство. xxx и многоточия в DTS — заполнители исходника, а не готовая конфигурация.

Источники и исправления: EDITORIAL-NOTES。Официальные материалы: ArmSoM, Rockchip Linux.

Таблица версий продукта из исходника (PDF p.2; область исходника, не результат проверки платы):

SoC Версия ядра
Все SoC с поддержкой FLEXBUS 6.1

1. Режим FLEXBUS FSPI

1.1 Обзор

Режим FLEXBUS FSPI реализует соответствующие функции путём эмуляции RK FSPI (Flexible Serial Peripheral Interface) средствами FLEXBUS, например:

Передача по одной линии и приём по четырём линиям — типичная конфигурация драйвера Linux MTD Quad SPI Flash.

Основная характеристика:

Тактовая частота до 100MHz

1.2 Настройка

1.2.1 Настройка ядра

Режим FLEXBUS FSPI реализован драйвером стандартной подсистемы 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.

Другие статьи по теме → · Учебные маршруты →