基于STM32G0的USB PD协议学习(3)
0、前言
STM32这个平台资源确实很不错,但是里面的PD代码是一个lib库文件,没有开源。可以做来玩玩,但是如果要满足USB-IF认证需求的话,谨慎!!!
这段时间较为繁忙,断更有点严重...
1、原理图
之前想做的功能挺多的,很多都没做,先放一张总图。
下面就展示其中重要的部分:
1.1 STM32G071CBU3
核心芯片选用的是STM32G071系列,该系列有两个PD端口,本文只使用了其中的一个。
使用的外设有:
I2C1: OLED显示
I2C2: Charge IC控制,电池的充放电管理
ADC:务必打开!!!用于检测vbus上的电压,PD协议需要,外部需要单独设计电路
UART3: Debug调试
重点就这个几个,其他的可以不管.....
另外一点我比较好奇的是,PD协议中VCON是5V输出,但是这个芯片的供电是3.3V。所以这个stm32芯片是否支持Vcon swap呢?
1.2 充电管理IC
充电管理IC使用的是Ti的BQ25703芯片,该芯片支持I2C配置其工作模式,使其具有充电和放电的功能。之前选用BQ25703只是为了做简单的PD验证,在优信上也好买,便宜!
该芯片的放电功能满足简单的PD协议需求,但无法满足PPS这个功能。
因此我推荐使用BQ25713这个芯片,其具有更高的电压分辨率,满足PPS的协议需求。
2、STM32代码
外设驱动(包含:I2C、串口、PD、ADC)是用CubeMx生成的。PD需要再额外配置一下,选择需要的功能,生成后PD会出现一个lib文件。所有就打算放弃深入开发该芯片了。。。
代码写的时间有点久了,有些地方可能会有疏漏,欢迎指出。
2.1 CubeMx
外设的大概配置,选择性勾选。
其中 I2C1、I2C2、ADC是必须的
PD配置:
PDO General Def
User Port 0 Parameters
User Constants
Parameter Setting
DPM Core
Stack Port 0 Parameters
2.2 Keil工程设置
2.1小节配置完成后,需要添加额外代码,PD才能正常工作。
我直接放代码慢慢看吧,时间太久,有点忘记了。。。
https://download.csdn.net/download/qq_41121877/89931059
总结
目前PD协议已经更新3.2.1.0,不知STM32这个芯片还能否胜任。另外该文章是STM32 PD系列的最后一章节,后续不再有更新,待找到新的PD芯片后再更新......
本人只是刚入门PD的小白,如有大佬有推荐的其他PD芯片欢迎告知,一起研究研究!!!