天天看點

STM32MP157A驅動開發 | 03-usb host接口的使用(U盤 )

硬體原理圖

STM32MP157A驅動開發 | 03-usb host接口的使用(U盤 )

一、STM32MP1的USB接口

STM32MP1有兩個USB host控制器,都是USB2.0,帶寬最大480Mbit/s,兩個USB接口都内置了高速PHY。其中USB2接口支援OTG功能。

STM32MP1内部內建了三個和USB相關的控制器:UST HS PHY控制器、USB Host控制器、USB OTG控制器。

1. PHY控制器

PHY控制器主要提供兩個端口,端口1規定配置設定給USB Host控制器、端口2配置設定給USB OTG和USB Host。

2. OTG控制器

3. USBH控制器

主要制器USBH由EHCI和OHCI控制器組成。

OCHI:FS低速模式

ECHI:HS高速模式

二、USB HOST裝置樹描述

1. USBH控制器節點資訊

在stm32mp1晶片級描述檔案​

​arch/arm/boot/dts/stm32mp151.dtsi​

​中:

STM32MP157A驅動開發 | 03-usb host接口的使用(U盤 )

USBH控制器使用USB2.0需要配置usbh_ehci這個節點,使用USB1.1就需要配置usbh_ohci這個節點。

使用的驅動是通用驅動:​

​drivers/usb/host/ohci-platform.c​

​​和​

​drivers/usb/host/ehci-platform.c​

​。

2. PHY控制器

在stm32mp1晶片級描述檔案​

​arch/arm/boot/dts/stm32mp151.dtsi​

​中:

STM32MP157A驅動開發 | 03-usb host接口的使用(U盤 )

usbphyc節點就是STM32MP1的USB PHY,有兩個端口,相容性是"st,stm32mp1-usbphyc"。在闆級配置檔案中,有如下節點,用來配置USB PHY:

STM32MP157A驅動開發 | 03-usb host接口的使用(U盤 )

綁定文檔為:​

​Documentation/devicetree/bindings/phy/phy-stm32-usbphyc.yaml​

​。

對應的驅動檔案為:​

​drivers/phy/st/phy-stm32-usbphyc.c​

​。

在開發闆中描述檔案中,繼續添加對usbphyc的描述,使能usbphyc控制器:

&usbphyc {
  status = "okay";
};

&usbphyc_port0 {
  phy-supply = <&vdd_usb>;
  st,phy-tuning = <&usb_phy_tuning>;
};      

3. 配置usbh_ehci

在usbh節點描述中,指定PHY端口:

&usbh_ehci {
  phys = <&usbphyc_port0>;
  status = "okay";
};      

至此,裝置樹修改完成,檢視核心啟動日志:

三、使能U盤驅動

繼續閱讀