基于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.rhkb.cn/news/458946.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

植物健康,Spring Boot来保障

5系统详细实现 5.1 系统首页 植物健康系统需要登录才可以看到首页。具体界面的展示如图5.1所示。 图5.1 系统首页界面 5.2 咨询专家 可以在咨询专家栏目发布消息。具体界面如图5.2所示。 图5.2 咨询专家界面 5.3 普通植物检查登记 普通员工可以对普通植物检查登记信息进行添…

Linux之权限(2)

权限(2) 操作:有VS没有 只有文件的拥有者或者root,能修改自己的权限 Linux下能执行真的是一个可执行文件可执行权限 user,group,other和我自己进行身份对比,依次只对比一次 8进制数值表示方法 chmod ax /home/abc.…

基于vue、VantUI、django的程序设计

首先构建vue项目,构建项目点这里 安装 npm install axios axios简介 Axios 是一个基于 promise 的 HTTP 库,用于发起请求和接收响应,实现异步操作 基本使用 axios对象 请求响应拦截 在utils文件夹里新建ajax.js 创建一个axios对象并…

云智慧完成华为原生鸿蒙系统的适配, 透视宝 APM 为用户体验保驾护航

2024 年 10 月 22 日,首个国产移动操作系统 —— 华为原生鸿蒙操作系统 HarmonyOS NEXT 正式面世,成为继 iOS 和 Android 后的全球第三大移动操作系统。HarmonyOS NEXT,从系统内核、数据库根基,到编程语言创新、AI(人工…

【WebGis开发 - Cesium】三维可视化项目教程---图层管理拓展图层透明度控制

目录 引言一、为什么要开发图层透明度控制功能二、开发思路整理1. cesium图层api查询1.1 imageryLayer 透明度1.2 primitive 透明度 三、代码编写1. 修改原有图层管理代码2. 新增页面结构3. 编写图层透明度控制方法 四、总结 引言 本教程主要是围绕Cesium这一开源三维框架开展的…

如何通过sip信令以及抓包文件分析媒体发到哪个地方

前言 问题描述:A的媒体没转发到B,B只能听到回铃音,没有A的说话声音,并且fs这边按正常的信令发送了. 分析流程 分析早期媒体发送到哪一个IP 10.19.0.1发送了一个请求给10.19.0.157这个IP,然而这里的SDP媒体地址&am…

react 总结+复习+应用加深

文章目录 一、React生命周期1. 挂载阶段(Mounting)补充2. 更新阶段(Updating)补充 static getDerivedStateFromProps 更新阶段应用补充 getSnapshotBeforeUpdate3. 卸载阶段(Unmounting) 二、React组件间的…

搭建 mongodb 副本集,很详细

搭建 mongodb 副本集,很详细 一、前言二、创建用户1、创建 root 用户2、创建测试用户3、修改用户密码 三、修改配置文件(主节点)1、开启登录认证2、加上副本集3、最终配置文件 四、副本节点1、创建副本节点目录2、编辑配置文件3、启动副本节点…

2024年四川省大学生程序设计竞赛 补题记录

文章目录 Problem A. 逆序对染色(思维树状数组)Problem B. 连接召唤(贪心)Problem E. L 型覆盖检查器(模拟)Problem F. 小球进洞:平面版(几何)Problem G. 函数查询Proble…

关于传输线电感

要理解自感、互感、回路电感,PCB表层单位长度电感约为7.5纳亨每英寸,内层约为9纳亨每英寸 磁力线 电流周围会产生磁场,可以认为磁场是由许多“力线”构成。 电流穿过与其垂直的某一平面时,在该平面内激起一个“磁漩涡” 形成许多…

JavaSet集合

无序(指的是添加顺序和获取出的数据顺序不一致,不重复,无索引 既然Set没有索引,因此功能同上一篇Connection的功能,几乎没有额外的功能 HashSet的原理 为什么是无序(要构建红黑树)&#xff0…

【Linux学习】(9)调试器gdb

前言 Linux基础工具:安装软件我们用的是yum,写代码用的是vim,编译代码用gcc/g,调试代码用gdb,自动化构建用make/Makefile,多人协作上传代码到远端用的是git。 在前面我们把yum、vim、gcc、make、git都已经学…

逆向工程基本概念

引言 逆向工程(Reverse Engineering)是指从已经存在的产品或系统中提取信息,并理解其设计原理的过程。在软件开发中,逆向工程通常用于理解一个已有软件系统的内部工作原理,可能是为了兼容性、安全分析、修复或者改进等…

Pyhton自动化测试持续集成和Jenkins

持续集成 官方术语: 持续集成(Continuous Integration),也就是我们经常说的 CI 持续集成(CI)是一种实践,可以让团队在持续的基础上收到反馈并进行改进,不必等到开发周期后期才寻找…

二十四、Python基础语法(变量进阶)

一、引用 在定义变量的时候, 解释器会给变量和数据分别在内存中分配内存,变量中保存的是数据的地址, 称为引用,Python 中数据的传递,传递的都是引用,可以使用 id(变量) 函数,获取变量中引用地址。 # 将数字1在内存中的地址储存到变量a中 a …

人工智能岗位英语面试 - 如何确保模型的可靠性和性能

确保模型的可靠性和性能 1. Precision Precision is a metric that measures how accurate the model’s positive predictions are. It calculates the ratio of true positives (correctly predicted positive cases) to the total number of predicted positives (both tr…

时间比较日期

现在需要一个获取当前时间然后对比一个月后的时间的java方法,比如:当前时间获取到是2024-10-28,然后我写定一个时间2024-10-29,这两个比大小,获取的当前时间要小于我写定的时间返回true否则返回false import java.time…

从头学PHP之数组输出基本函数

上期我们讲到了数组,数组是个特殊的变量,在程序中的重要程度很高,大部分数据处理的时候会用到这种特殊的变量,那么现在让我们继续深入一下吧。 上期我们打印出了数组的值,用print_r()或者var_dump()这俩函数&#xff0…

paddleocr使用FastDeploy 部署工具部署 rknn 模型

在 PC 端转换 pdmodel 模型为 rknn 模型和在板端使用百度飞浆开发的 FastDeploy 部署工具部署 rknn 模型 以下内容是在 PC 端系统为 Ubuntu20.04,板端系统为ubuntu20.04 的环境下实现的 描述: 官网地址 rknn_zoo RKNPU2_SDK …

【Linux】进程调度 | 进程切换上下文数据

🪐🪐🪐欢迎来到程序员餐厅💫💫💫 主厨:邪王真眼 主厨的主页:Chef‘s blog 所属专栏:青果大战linux 总有光环在陨落,总有新星在闪烁 小感慨: …