6配置屏蔽的跳线
如图所示,将跳线放在 X-NUCLEO-SNK1M1 屏蔽上。
如果您改用 X-NUCLEO-USBPDM1 扩展板,请遵循以下配置:
7编译并运行应用程序
编译必须在没有错误或警告的情况下执行。
通过单击
按钮(或选择Project/Build Project)来构建应用程序。
通过单击
按钮运行应用程序(或选择运行/运行)
8建立第一个显性契约
在电路板上运行您的应用程序后,启动 STM32CubeMonitor-UCPD 应用程序。点击“Refresh list of connected boards”时,用户的板子必须出现在列表中,所以双击相应的行(或单击“NEXT”)。
注意:ComPort 可能不同。这取决于计算机上安装的板卡数量。 然后双击所需的 UCPD 端口,此处为端口 0,或选择它并单击“下一步”。
单击右下角的TRACES按钮以获取协议跟踪。然后,您可以将供电电源插入 X-NUCLEO-SKN1M1 防护罩的 USB Type-C® 插座。屏幕可能如下所示:
上图显示了 STM32G0 与右侧面板上的供电电源之间的通信。可以验证正确的顺序以达成明确的合同:
功能由源发送(IN 绿色消息)。
请求由STM32G0发送(OUT橙色信息)。
ACCEPT和PS_RDY由源发送(IN 绿色消息)。
合同协商以POWER_EXPLICIT_CONTRACT通知(蓝色消息)结束。
有关如何使用此工具的更多详细信息,请参阅UM2468。有关协议的更多详细信息,请参阅UM2552。请注意,此跟踪对于调试和应用程序开发非常有帮助。
9 [可选] 高级 USB-PD 应用程序
警告
此部分是可选的,针对想要从源中选择特定 PDO 的用户。在参考本节之前,需要先完成 wiki 的第一部分。
从这一点开始,您构建了最简单的接收器,它不处理接收器和源 PDO 的匹配。这必须通过用户代码来完成。这是在 USBPD_DPM_SNK_EvaluateCapabilities 函数中完成的。目前,这个函数只是请求第一个可用的源 PDO,即 5V。
要选择特定的 PDO(例如 9V),您必须选择相应的源 PDO 编号。这可以通过与先前在 STM32CubeMX 中定义的接收器 PDO 以及相应的可用源 PDO 相匹配的用户代码来完成。
本节提供了该系统可能实现的代码。
你需要:
在STM32CubeMX中添加所有你想支持的sink PDO
在您的应用程序中添加下面提供的用户代码
9.1添加支持的sink PDO ↑
重新打开 STM32CubeMX 视图。在Middleware部分,对于USBPD中间件,在PDO General Definitions选项卡下,添加您希望接收器支持的 PDO 数量。对于此示例,我们定义了 3PDO,对应于 5V/1.5A、9V/1.5A 和 15V/1.5A 的简单灌电流配置。这是通过将 PDO 设置为:
0x00019096(固定 PDO:5V 1.5A)
0x0002D096(固定 PDO:9V 1.5A)
0x0004B096(固定 PDO:15V 1.5A)
9.2在GitHub上获取usbpd_user_services.c/h文件↑
通过访问以下链接在 GitHub 上获取 usbpd_user_services.c/h 文件:
- usbpd_user_services.c
- usbpd_user_services.h
将 usbpd_user_services.c/h 文件复制到您的应用程序 USBPD 文件夹中。
然后,为了告诉 STM32CubeMX 在代码生成时包含这些文件,在项目的根文件夹中创建一个名为“.extSettings”的文件(请注意文件名中的点字符)并用以下代码填充它:
[项目文件] 标头路径= [其他] 定义= 哈尔模块= [团体] USBPD=USBPD/usbpd_user_services.c
9.3 usbpd_dpm_user.c中修改↑
在/* USER CODE BEGIN-END Includes */标签之间添加以下代码:
/* 用户代码开始包括 */ #include “usbpd_user_services.h” /* 用户代码结束包括 */
在开关中的/* USER CODE BEGIN-END USBPD_DPM_SetDataInfo */标签 之间添加以下代码:
/* Case Received Source PDO values 数据信息 : */ case USBPD_CORE_DATATYPE_RCV_SRC_PDO : /*!《 Storage of Received Source PDO values */ USBPD_USER_SERV_StoreSRCPDO ( PortNum , Ptr , Size ); 打破;
在/* USER CODE BEGIN-END USBPD_DPM_SNK_EvaluateCapabilities */标签之间添加以下代码(替换之前添加的代码):
/* 用户代码开始 USBPD_DPM_SNK_EvaluateCapabilities */ USBPD_USER_SERV_EvaluateCapa ( PortNum , PtrRequestData , PtrPowerObjectType ); /* 用户代码结束 USBPD_DPM_SNK_EvaluateCapabilities */
您现在可以重新生成代码,构建并运行它。您的应用要求匹配 PDO 的最高电压(源和吸收支持的电压/电流)。
您可以进一步修改此用户代码,例如选择最高功率的 PDO 而不是最高电压。
全部0条评论
快来发表一下你的评论吧 !