硬體原理圖

一、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
中:
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
中:
usbphyc節點就是STM32MP1的USB PHY,有兩個端口,相容性是"st,stm32mp1-usbphyc"。在闆級配置檔案中,有如下節點,用來配置USB PHY:
綁定文檔為:
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";
};
至此,裝置樹修改完成,檢視核心啟動日志: