“SPI device tree configuration”的版本间的差异
Zhouyuebiao(讨论 | 贡献) |
|||
(未显示同一用户的6个中间版本) | |||
第1行: | 第1行: | ||
== Article purpose == | == Article purpose == | ||
− | + | 本文介绍了如何配置“SPI内部外设”<ref name="SPI internal peripheral"> [[SPI internal peripheral]] </ref> ''' 将外围设备分配给<sup>®</sup> 操作系统时''', 特别是: | |
− | * | + | * 如何配置STM32 SPI外设 |
− | * | + | * 如何配置板上或硬件扩展上存在的STM32外部SPI器件。 |
− | + | 使用 '''设备树机制'''执行配置<ref> [[Device tree]]</ref>. | |
− | + | 它由''STM32 SPI Linux<sup>®</sup> 驱动程序''使用,该驱动程序在[[SPI overview|SPI]] 框架中注册相关信息。 | |
− | + | 如果将外围设备分配给另一个执行上下文,请参阅[ [[How to assign an internal peripheral to a runtime context]] 文章,以获取有关外围设备分配和配置的准则。 | |
== DT bindings documentation == | == DT bindings documentation == | ||
− | + | SPI总线及其关联的设备表示为: | |
− | * | + | * ''SPI总线的通用设备树绑定''<ref name="spi-bus.txt">{{CodeSource | Linux kernel | Documentation/devicetree/bindings/spi/spi-bus.txt}}, SPI总线的通用设备树绑定</ref> |
− | * | + | * ''STM32 SPI控制器设备树绑定''<ref name="spi-stm32.txt ">{{CodeSource |Linux kernel | Documentation/devicetree/bindings/spi/spi-stm32.txt}}</ref> |
== DT configuration == | == DT configuration == | ||
− | + | 该硬件描述是'''STM32微处理器'''设备树文件(扩展名为.dtsi)和'''板子'''设备树文件(扩展名为.dts)的组合。有关设备树文件分割的说明,请参见[[Device tree]]。 | |
− | + | '''STM32CubeMX'''可用于生成板卡设备树。有关更多详细信息,请参考[[#How_to_configure_the_DT_using_STM32CubeMX|How to configure the DT using STM32CubeMX]]。 | |
− | '''STM32CubeMX''' | ||
===DT configuration (STM32 level) === | ===DT configuration (STM32 level) === | ||
− | + | 在设备级别,每个SPI控制器的声明如下: | |
<pre> | <pre> | ||
spi1: spi@44004000 { | spi1: spi@44004000 { | ||
第39行: | 第38行: | ||
}; | }; | ||
</pre> | </pre> | ||
− | {{Warning| | + | {{Warning|该设备树部分与STM32微处理器有关。 它必须保持原样,而不能由最终用户修改。}} |
− | + | 请参阅DTS文件:stm32mp157c.dtsi<ref name=DTS>{{CodeSource | Linux kernel | arch/arm/boot/dts/stm32mp157c.dtsi}}</ref> | |
=== DT configuration (board level) === | === DT configuration (board level) === | ||
− | + | ||
<pre> | <pre> | ||
&spi1 { | &spi1 { | ||
第64行: | 第63行: | ||
</pre> | </pre> | ||
− | + | 有两个级别的配置: | |
− | * | + | * SPI总线属性的配置: |
− | ** '''{{highlight|pinctrl-0&1}}''' | + | ** '''{{highlight|pinctrl-0&1}}''' 配置取决于硬件板配置以及SPI设备如何连接至MOSI,MISO和Clk引脚。<br/>有关引脚配置的更多详细信息,请参见:[[Pinctrl device tree configuration]] |
− | ** '''{{highlight|cs-gpios}}''' | + | ** '''{{highlight|cs-gpios}}''' 代表用作芯片选择的GPIO列表。STM32MP1 SPI驱动程序不支持由NULL值定义的本机控制器芯片选择。<br/>此处提供有关GPIO配置的更多详细信息:[[GPIO device tree configuration]] |
− | ** '''{{highlight|dmas}}''': | + | ** '''{{highlight|dmas}}''':默认情况下,为所有SPI实例指定DMA。 如果不需要,则由用户决定“删除”。 ''{{highlight|/delete-property/}}''用于删除SPI的DMA使用。 必须插入 '''{{highlight|/delete-property/dma-names}}'''和 '''{{highlight|/delete-property/dma}}''' 来摆脱DMA。 |
− | * | + | * 总线上连接的SPI设备的属性的配置: |
− | ** '''{{highlight|compatible }}''' | + | ** '''{{highlight|compatible }}''' 表示SPI设备驱动程序的名称。 |
− | ** '''{{highlight|reg}}''' | + | ** '''{{highlight|reg}}''' 表示与此SPI设备关联的GPIO芯片选择的索引。 |
− | ** '''{{highlight|spi-max-frequency}}''' | + | ** '''{{highlight|spi-max-frequency}}''' 表示设备的最大SPI时钟速度(以Hz为单位)。 |
− | + | 有关SPI总线和SPI设备绑定的更多信息,请参考spi-bus.txt。<ref name="spi-bus.txt"/> | |
=== DT configuration example === | === DT configuration example === | ||
− | ''' | + | '''示例:'''外部TPM设备: |
&spi1 { | &spi1 { | ||
pinctrl-names = "default", "sleep"; | pinctrl-names = "default", "sleep"; | ||
第95行: | 第94行: | ||
}; | }; | ||
− | + | 上面的示例在spi1总线上注册了TPM设备,该设备由芯片选择0(也称为GPIO-Z3)选择。 该实例与使用相同的兼容属性(st,st33htpm-spi)注册的驱动程序兼容。<br/> | |
==How to configure the DT using STM32CubeMX== | ==How to configure the DT using STM32CubeMX== | ||
− | + | [[STM32CubeMX]]工具可用于配置STM32MPU设备并获取相应的[[Device_tree#STM32|platform configuration device tree]] 文件。<br /> | |
− | + | STM32CubeMX可能不支持以上 [[#DT bindings documentation|DT bindings documentation]]段中描述的所有属性。 如果是这样,该工具会在生成的设备树中插入'''用户部分''' 。然后可以编辑这些部分以添加一些属性,并将它们一代一代地保留下来。 有关更多信息,请参见[[STM32CubeMX]]用户手册。 | |
==References== | ==References== | ||
− | + | 请参考以下链接以获取更多信息: | |
<references /> | <references /> | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− |
2020年11月8日 (日) 15:27的最新版本
目录
Article purpose
本文介绍了如何配置“SPI内部外设”[1] 将外围设备分配给® 操作系统时, 特别是:
- 如何配置STM32 SPI外设
- 如何配置板上或硬件扩展上存在的STM32外部SPI器件。
使用 设备树机制执行配置[2].
它由STM32 SPI Linux® 驱动程序使用,该驱动程序在SPI 框架中注册相关信息。
如果将外围设备分配给另一个执行上下文,请参阅[ How to assign an internal peripheral to a runtime context 文章,以获取有关外围设备分配和配置的准则。
DT configuration
该硬件描述是STM32微处理器设备树文件(扩展名为.dtsi)和板子设备树文件(扩展名为.dts)的组合。有关设备树文件分割的说明,请参见Device tree。 STM32CubeMX可用于生成板卡设备树。有关更多详细信息,请参考How to configure the DT using STM32CubeMX。
DT configuration (STM32 level)
在设备级别,每个SPI控制器的声明如下:
spi1: spi@44004000 { #address-cells = <1>; #size-cells = <0>; compatible = "st,stm32h7-spi"; reg = <0x44004000 0x400>; interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>; clocks = <&rcc SPI1_K>; resets = <&rcc SPI1_R>; dmas = <&dmamux1 37 0x400 0x05>, <&dmamux1 38 0x400 0x05>; dma-names = "rx", "tx"; power-domains = <&pd_core>; status = "disabled"; };
该设备树部分与STM32微处理器有关。 它必须保持原样,而不能由最终用户修改。 |
请参阅DTS文件:stm32mp157c.dtsi[5]
DT configuration (board level)
&spi1 { pinctrl-names = "default", "sleep"; pinctrl-0 = <&spi1_pins_a>; pinctrl-1 = <&spi1_sleep_pins_a>; cs-gpios = <&gpioz 3 0>; status = "okay"; foo@0 { compatible = "spi-foo"; #address-cells = <1>; #size-cells = <0>; reg = <0>; /* CS #0 */ spi-max-frequency = <10000000>; }; };
有两个级别的配置:
- SPI总线属性的配置:
-
pinctrl-0&1 配置取决于硬件板配置以及SPI设备如何连接至MOSI,MISO和Clk引脚。
有关引脚配置的更多详细信息,请参见:Pinctrl device tree configuration -
cs-gpios 代表用作芯片选择的GPIO列表。STM32MP1 SPI驱动程序不支持由NULL值定义的本机控制器芯片选择。
此处提供有关GPIO配置的更多详细信息:GPIO device tree configuration - dmas:默认情况下,为所有SPI实例指定DMA。 如果不需要,则由用户决定“删除”。 /delete-property/用于删除SPI的DMA使用。 必须插入 /delete-property/dma-names和 /delete-property/dma 来摆脱DMA。
-
pinctrl-0&1 配置取决于硬件板配置以及SPI设备如何连接至MOSI,MISO和Clk引脚。
- 总线上连接的SPI设备的属性的配置:
- compatible 表示SPI设备驱动程序的名称。
- reg 表示与此SPI设备关联的GPIO芯片选择的索引。
- spi-max-frequency 表示设备的最大SPI时钟速度(以Hz为单位)。
有关SPI总线和SPI设备绑定的更多信息,请参考spi-bus.txt。[3]
DT configuration example
示例:外部TPM设备:
&spi1 { pinctrl-names = "default", "sleep"; pinctrl-0 = <&spi1_pins_a>; pinctrl-1 = <&spi1_sleep_pins_a>; cs-gpios = <&gpioz 3 0>; status = "okay"; st33zp24@0 { compatible = "st,st33htpm-spi"; #address-cells = <1>; #size-cells = <0>; reg = <0>; /* CS #0 */ spi-max-frequency = <10000000>; }; };
上面的示例在spi1总线上注册了TPM设备,该设备由芯片选择0(也称为GPIO-Z3)选择。 该实例与使用相同的兼容属性(st,st33htpm-spi)注册的驱动程序兼容。
How to configure the DT using STM32CubeMX
STM32CubeMX工具可用于配置STM32MPU设备并获取相应的platform configuration device tree 文件。
STM32CubeMX可能不支持以上 DT bindings documentation段中描述的所有属性。 如果是这样,该工具会在生成的设备树中插入用户部分 。然后可以编辑这些部分以添加一些属性,并将它们一代一代地保留下来。 有关更多信息,请参见STM32CubeMX用户手册。
References
请参考以下链接以获取更多信息:
- ↑ SPI internal peripheral
- ↑ Device tree
- ↑ 3.03.1 Documentation/devicetree/bindings/spi/spi-bus.txt| |}} Documentation/devicetree/bindings/spi/spi-bus.txt , SPI总线的通用设备树绑定
- ↑ Documentation/devicetree/bindings/spi/spi-stm32.txt| |}} Documentation/devicetree/bindings/spi/spi-stm32.txt
- ↑ arch/arm/boot/dts/stm32mp157c.dtsi| |}} arch/arm/boot/dts/stm32mp157c.dtsi