当前位置: 首页 > article >正文

基于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

外设的大概配置,选择性勾选。

其中 I2C1I2C2、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芯片欢迎告知,一起研究研究!!!


http://www.kler.cn/a/372120.html

相关文章:

  • 【文心智能体 | AI大师工坊】如何使用智能体插件,完成一款旅游类智能体的开发,来体验一下我的智能体『​​​​​​​背包客』
  • echarts属性之xAxis
  • 股票基础交易规则!最小变动数量规则!最大数量限制规则!
  • 搜索引擎算法更新对网站优化的影响与应对策略
  • 合并排序算法(C语言版)
  • 【Redis】常见基本全局命令
  • 基于微信小程序的图书馆座位预约系统+LW示例参考
  • 数据结构算法学习方法经验总结
  • 经典面试题——抽象类和接口的区别
  • 【Linux】Kafka部署
  • SpringBoot实现的扶贫成效监测平台
  • 保研考研机试攻略:python笔记(2)
  • 【Windows】Redis 部署
  • Unity构建WebGL知识点
  • redis windows 7.0 下载
  • 【BF+4D雷达成像】四维成像汽车MIMO雷达的波束赋形【附MATLAB代码】
  • Python基础10
  • 别玩了!软考初级网络管理员无非就这23页纸!背完稳!
  • 论文学习 | 《锂离子电池健康状态估计及剩余寿命预测研究》
  • riscv uboot 启动流程分析 - SPL启动流程
  • 深入理解Docker,从入门到精通-Part1(基础使用)
  • 如何SSH到Openshift Node上设置相关网口的静态IP
  • LeetCode16:最接近的三数之和
  • 【网页布局技术】项目五 使用CSS设置导航栏
  • HarmonyOS 设备管理
  • 深入浅出梯度下降算法(学习笔记)