自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

大师匈的博客

超级快充

  • 博客(52)
  • 资源 (1)
  • 收藏
  • 关注

原创 PD3.1详解 第三章(EPR)扩展消息详解

PD3.1详解 第三章(EPR)扩展消息详解

2022-11-09 23:29:01 2201 1

原创 PD3.1详解 第二章(EPR)

PD3.1 EPR

2022-11-07 23:00:55 2625

原创 PD3.1详解 第一章EPR

USB_PD_3.1

2022-11-07 21:32:58 2596

原创 PD快充DRP-TypeC连接状态机详解

TypeC连接状态机详解之前的文章已经铺垫了我们需要了解得一些基本得TypeC接口规范内容,并附图TypeC整个连接过程,状态得变化和定义;今天详细说明TypeC在DRP的情况下,是如果实现连接,或者说在软件角度,这个连接过程到底是什么样子的,这将会为学习PD,以及TypeC其他功能作为一个基础;我们首先还是看一个图:上图是在typec规范内DRP情况下,并try source的一个连接状态图;主要有上面标好的7个状态变化,1、未连接态,sink角色,(前面是状态,后面是角色);2、未连接态,

2021-09-27 10:38:54 5617 3

原创 TypeC规范--CC连接

上次在TypeC与PD快充文章内我们在后面放了几张图;如下图:上图位于TypeC规范章节4.5.1.3.3我们以这个图为例介绍一下,我们可以看到在VBus上会有MOS去切换source和sink的通路,这个是DRP在VBUS上的特点;我们主要去看CC通路,俩个CC,CC1/2完全一样的, 符合typeC正反插都能正常工作的特性;另外CC可以通过开关切换上拉Rp作为Source,也可以切换下拉Rd作为Sink;至于Vconn,则通常是source端供电,俩边CC同时上拉,一边是Rd连接Sink,

2021-09-20 09:55:02 10296

转载 苹果13 再次环保了充电头

北京时间2021年9月15日凌晨1点,苹果召开2021年秋季新品发布会,发布了iPhone 13系列手机,包含了iPhone 13 mini、iPhone 13、iPhone 13 Pro、iPhone 13 Pro Max四款机型。iPhone 13全系支持PD快充iPhone 13系列外观ID与iPhone 12系列接近,均为垂直边框平面屏幕设计,采用了超瓷晶屏幕面板,顶部刘海缩小20%,支持IP68防护等级。性能上采用了最新一代A15仿生处理器,内部结构优化搭载更大容量的电池,续航性能都有了一定提

2021-09-15 22:31:58 249

原创 高通QC2.0/3.0快充

高通QC快充是基于BC1.2快充协议基础之上的协议,适配器端通过检测手机端或者其他设备的DP、DM的电压值,和变化来识别设备端需要供给多大的电压电流;QC2.0是5V,9V,12V,20V;QC3.0主要是增加了步进的方式供电,200mv一个step;我们看一下QC2.0的DPDM电压对应适配器的输出电压,如下图:顺便看一下QC2.0波形图:以上就是沟通QC2.0的过程了,非常清晰;QC3.0就是一个步进式的协议,如增加200mv的输出电压,就是DM3.3V,DP发送0.6~3.3V的方波,一个

2021-09-15 20:42:39 7711 1

原创 最新USBPD3.1 快充协议

最近发布了最新的PD3.1版本的协议;简单写一下几个点;1、增加了EPR extended power rang 就是扩展功率范围,把原来的100W表示为SPR standard power rang标准功率范围;2、线缆的要求:如果支持EPR,那么线缆要报告支持50V,5A,线缆耐压要到53.65V,Vbus旁路电容耐压要到63V;3、协议来看控制消息增加了俩项,Get_Source_Info还有Get_Revision,获取版本就不说了;获取source端的信息这条message说一下:先看

2021-06-19 16:02:19 4609 6

原创 苹果2.4协议

找了一个图,可以看一下苹果2.4的电平匹配。不过现在都苹果开始用PD快充协议了,这个图可以了解一下;

2021-06-19 14:50:19 3215

转载 BC1.2快充协议介绍

BC1.2定义BC1.2 (Battery Charging v1.2)是USB-IF下属的BC(Battery Charging)小组制定的协议,主要用于规范电池充电的需求,该协议最早基于USB2.0协议来实现。BC1.2充电端口USB2.0协议规定外设从USB充电器抽取电流的最大值为500mA,500mA的电流限制无法满足日益增长的快充需求。因此,BC1.2引入了充电端口识别机制,主要包括以下几个USB端口类型:1.标准下行端口(SDP)SDP端口支持USB协议,最大电流500mA,可以认为S

2021-06-18 15:50:56 10859

原创 PD3.0 PPS恒功率模式Constant power Mode和sink的安全要求

PD3.0 PPS恒功率模式(CW Mode)Constant power Mode大师匈上次分享了PPS的限流模式,今天分享一下PPS的恒功率模式。今天的内容比较简单:先介绍一下官方是怎么说的,上图了:就这几句话,下面还有一张图,我先解释一下我个人的理解。官方说的是在恒功率模式下,也就是在PPS 的limited bit置1,这个bit是在广播的source cap的pps挡位里面,我特意截图给大家看一下在这个bit设置后,在恒功率模式下,source应该限制输出电流,使得输出功率不超过

2021-03-28 23:02:57 3458 7

原创 PD3.0协议分析仪

前几天介绍了一下协议分析仪,有一个点说错了,不好意思。现在说明一下:老版本的固件和上位机确实会出现不兼容PD3.0的问题,但已经做了升级,我这边刚得到消息该产品做了固件和上位机升级,可以全面兼容PD2.0/3.0/PPS;新增功能:1、物理层数据2、CC,VBUS波形,3、更详细的协议数据分析具体如下图:上一篇文章我也做出了修改,请大家海涵,谢谢。如果有之前购买的朋友,可以找你们的供应商要这个东西。...

2021-03-23 10:16:54 1633 1

原创 PD3.0协议开发经验

PD3.0协议开发经验圈内还是不少人在做PD的协议开发,有的是做各种功能的终端产品,测试仪器,有的是芯片原厂。大师匈厚着脸皮分享一下经验:一、知识的储备1、首先我们要清楚的了解TypeC连接的过程,双角色,还是单角色,(这里指的是Power部分哈,虽然数据部分也是一样的道理),这些连接过程有什么区别,物理连接到底是怎么样,try source,try sink都是什么样子的,以及他们的去抖时间,原理等等,2、第二个就是我们的PD3.0协议了,我们要知道PD3.0协议的组成部分,运行机制,而且必须精

2021-03-14 22:31:44 5189 1

原创 PD3.0 PPS限流

PPS限流工作在PPS下,在sink端抽取比工作点的电流更多的电流时,source会根据协议沟通的工作点电流值进行限流。3A以下工作电流调节精度是±150ma,3A以上为5%的调节精度。最小限到1A。source应该支持将电流限在1A~协商的电流之间。PPS限流纵轴是电压,横轴为电流;vppsNew:沟通pps电压正负5%;ippsCLNew:大于3A为沟通电流的正负%5,1A~3A为正负150ma;iPpsCLOperating:限流模式下允许改变操作电流的范围 -25ms ~ +100m

2021-03-14 21:42:52 2849 2

原创 PD3.0详解 Source Fixed与PPS电压跃迁

Source Requirements源端需求source的电容这里大师匈理解的是分单口和多口,多口的时候是120uf,单口的时候最小是10uf,这里表示的是根据PCB布局整体的容值,所以和PCB是相关的。具体电容的位置如下图:source端电源类型:Fixed:至少有一个5v档,相对误差为5%,绝对范围在±0.5V。绝对范围指协商完过渡后的电压值。PPS:相对误差也是5%,绝对范围是±0.1V。电源电压跃迁Fixed电压应该在tsettle 275ms内到达协商电压的±5%范围内。具体

2021-01-24 22:22:48 3292 6

原创 FUSB302 PD物理层开发

FUSB302这颗芯片是安森美的PD物理层芯片,不支持PD3.0,只能是PD2.0,因为PD是向下兼容的,所以用在一般的场景下还是可以的。芯片的作用,设计的目的:这颗芯片继承了PD物理层,还有BMC,4B5B编码什么的,关于PD物理层的东西,而且能够自动回复GoodCRC,但是没有内置BUCK或者buckboost,需要额外去配置一颗buck或者buckboost芯片(在当作source的情况下),另外这颗芯片只能是PD,并没有管DPDM,所以也只能实现PD协议,不能当作其他使用实现DPDM。另外这

2021-01-09 12:59:22 9364 11

原创 C语言基础算法 二进制求和leecode

题目:二进制求和给你两个二进制字符串,返回它们的和(用二进制表示)。输入为 非空 字符串且只包含数字 1 和 0。示例 1:输入: a = “11”, b = “1”输出: “100”示例 2:输入: a = “1010”, b = “1011”输出: “10101”提示:每个字符串仅由字符 ‘0’ 或 ‘1’ 组成。1 <= a.length, b.length <= 10^4字符串如果不是 “0” ,就都不含前导零。可能很多人想在转换成10进制这样去计算,但是这样

2020-12-24 22:53:28 2454 1

原创 PD3.0详解 电源规则,全解!!!全解!!!

电源规则大师匈今天谈一下PD3.0的电源规则,PD3.0标准标定的规则。USB协议声称,为了世界和平世界环境,让大家用上统一标准的充电器,不用再为每一个用电设备都配一个专门的充电器,这些充电器各种各样的都有,所以有时候大师匈也很烦!!!那么为了维护世界和平,USB协议呢就制订了这个PD快充协议,还有它的规则,只要全世界都用PD,就解决了这个大问题。在这里先了解一个关键字,PDP: Power Delivery Power PD电源的功率。每个PD充电产品的功率要以0.5W的精度上报,比如大师匈做的P

2020-12-19 23:53:12 16018 6

原创 PD3.0详解 协议的时序timer和counter计数

前面介绍了关于PD协议的交互,还有协议层数据各个字段的含义,但是一直没有系统的说关于协议的时序,还有部分counter,就是协议允许发送的次数,或者一些其他计数。大师匈今天说一下关于这方面的东西,这些东西都是非常关键的东西,但是相对来说PD标准内对时序的要求还是比较宽泛,非常容易能够实现这样的要求。Timer1、CRCReceiveTimer 0.9~1.1ms表示每次通信收到goodcrc的时间,必须在这个时间内收到goodcrc,我们要注意不是在0.9~1.1ms内,而是第三方可以在这个范

2020-12-17 23:29:00 4064 2

原创 C语言 链表基础--整表创建

指针是链表的基础,链表是一个C语言的重难点,是学习操作系统还有数据结构算法的基础。大师兄简单做一个链表的整表创建程序,俩种方法,头插法还有尾插法。基础的同学可以仔细品味一下,#include <iostream>typedef struct node{ int data; struct node* next;}node;typedef struct node* linklist;void CreatHeadInsetList(linklist* L, int n)

2020-12-13 14:54:00 250

原创 PD3.0详解 协议层数据类型(补充篇)

补充一下关于PD3.0协议层所有的数据类型,之前提到过分为三类控制消息,数据消息,扩展消息,那么在这三类消息下还有子分类,如下图所示,都列出来了,还有就是在Vendor Defined——>Discover ID 下面还有一部分数据,是关于线缆的一些电器规范,线缆功能等,这里没有列了。从上图看到PD的消息类型确实非常多,但是大师匈在之前的章节有介绍到一些重要的数据类型,就是围绕电源传输方案沟通的那几条,一定要非常清楚协议数据的内容。以上就是要说明的整个协议层的架构图,了解结构后,快速定位并找到需

2020-12-12 11:44:32 4562 2

原创 C语言基础 整数反转算法(leecode)

题目给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0思路看到这个题目,它的目的就是翻转过来,尾巴的放在首位。那么首先是把每一位取出来,刚开始就会陷入取出每一位,然后计算它的位数,然后乘10的

2020-12-11 23:01:28 1866 1

原创 PD详解 扩展消息——Source_Capabilities_Extended Message

PD的协议层分为控制消息,数据消息还有扩展消息,今天大师匈讲一下扩展消息中的source_cap_extended。这个消息在扩展消息中算是比较关键的东西。扩展消息中的source_cap_extended大师匈先上图,然后逐一解释;上面的图表说了source_cap_ext中包含了哪些内容。我们注意到在source_cap扩展消息中是以字节为单位的,并不是像source_cap中以一个object为单位,当然有注意到PD标准spec中说明的扩展消息的话,那里有说明,在header之后的字节

2020-12-05 12:26:46 2774 2

原创 C语言基础--输出99乘法表

非常简单的一个基础练习题输出99乘法表#include"stdio.h"int main(){ for(int i=1;i<10;i++) { for(int j=1;j<=i;j++) { printf("%d*%d=%d ",i,j,i*j); } printf("\n"); }} 结果如下:

2020-12-02 13:52:44 1296 7

原创 C语言基础练习题--二分查找

题目在排序数组中查找元素的第一个和最后一个位置给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1, -1]。示例 1:输入:nums = [5,7,7,8,8,10], target = 8输出:[3,4]示例 2:输入:nums = [5,7,7,8,8,10], target = 6输出:[-1,-1]示例 3:输入:nums = [], target = 0输出:[

2020-12-01 23:39:03 526 1

原创 链表练习题1

题目给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 + 465 = 807/**/** * Definition for singly

2020-12-01 00:01:56 163

原创 PD3.0详解 PD2.0与PD3.0的区别

碰到不少小伙伴问道PD2.0和PD3.0的区别,这里简单介绍一下。其实在标准文件内有简单介绍。给大家看一下标准文件内是怎么说的?新增项:1、电源规则还是延续了2.0的,就是没有更改2、增加了避免冲突和简单通信的机制3、支持包括扩展供电能力和状态,指的应该是source_cap扩展消息和状态4、电池能力和状态5、支持快速电源角色交换6、支持typec鉴定和固件更新7、增加了PPS弃用项:1、BFSK2、很明显就是不知道A/B口了3、A/B口的死电池4、配置(被PD功率规则替换)

2020-11-26 22:49:03 18460

原创 有效的字母异位词 qsort函数

有效的字母异位词给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。示例 1:输入: s = “anagram”, t = “nagaram”输出: true示例 2:输入: s = “rat”, t = “car”输出: false说明:你可以假设字符串只包含小写字母。int compare(const void* a,const void* b){ char c=*(char*)a; char d=*(char*)b; retur

2020-11-22 23:45:49 98 1

原创 双指针移动0

俩种方法void swap(int *a, int *b) { int t = *a; *a = *b, *b = t;}void moveZeroes(int* nums, int numsSize){ // int i = 0; // int k = 0; // while(i<numsSize) // { // if(nums[i] == 0) // { // for(k=i;k<

2020-11-22 23:34:28 162

原创 C语言解决 加油站问题

加油站在一条环路上有 N 个加油站,其中第 i 个加油站有汽油 gas[i] 升。你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。如果你可以绕环路行驶一周,则返回出发时加油站的编号,否则返回 -1。说明:如果题目有解,该答案即为唯一答案。输入数组均为非空数组,且长度相同。输入数组中的元素均为非负数。示例 1:输入:gas = [1,2,3,4,5]cost = [3,4,5,1,2]

2020-11-18 23:51:28 1076 1

原创 数组查找 2分查找

给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 1:输入: [1,3,5,6], 5输出: 2示例 2:输入: [1,3,5,6], 2输出: 1示例 3:输入: [1,3,5,6], 7输出: 4示例 4:输入: [1,3,5,6], 0输出: 0int searchInsert(int* nums, int numsSize, int target){ int i

2020-11-17 23:54:20 192

原创 合并两个升序链表+原地移除数组中某一值

合并两个升序链表/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */struct ListNode* mergeTwoLists(struct ListNode* l1, struct ListNode* l2){ struct ListNode* temp; struct ListNode *resu

2020-11-16 23:19:58 87

原创 C语言 基础 字符串查找 删除排序链表中的重复元素

字符串查找判断字符串s是不是t的子序列bool isSubsequence(char * s, char * t){ char *a = s; char *b = t; while( *b && *a) { if(*b == *a) { a++; } b++; } if(*a == '\0') return true; else

2020-11-12 23:19:07 575

原创 C语言重温基础排序算法

自从学习C语言开始,就知道个举世闻名的十大排序算法,今天大师匈重温了一下最简单的,一种是最蠢的,一种是冒泡;后续继续写出来其他的排序算法。。。。上代码:最蠢排序+冒泡排序int main(){ int bytes_num = 0,i = 0,j = 0 , temp = 0; int array[20]; printf("输入要排序的数量 :"); scanf("%d",&bytes_num); printf("bytes_num = %d\n",bytes_num); prin

2020-11-10 23:26:47 177

原创 C语言 基础的数学思维题

大师匈觉得C语言博大精深,一个合格的程序员不仅要有严密的逻辑思维,精通MCU啊,操作系统啊,各种行业相关的听起来很高大上的东西,而且要有数学思维,敏锐的嗅觉出色的debug能力,混迹几年,发现一些很基础的数学思维竟然也开始僵化了;如不等式,如排列组合的各种灵活应用,可能平时用的少,但是有一些空闲,多练习一些,让自己多思考一下,不至于让自己的脑子逐渐僵化。第一题:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?先不用程序实现,直接去算,有多少种,如果你还记得高中的排列组合,那么

2020-11-09 22:57:37 9203 28

原创 PD3.0详解 第十二章总结

前面的章节分开介绍了协议层和策略层的俩个重要策略!今天想总结一下,并做一些补充。如果有一些内容没有介绍到,可能后续会补充,同学们可以关注一下大师匈。补充点一、读Emark大家都知道PD是标定了100W的功率,也就是20V5A的最大电压电流。那么普通的线走5A电流是不合电气标准的,那么就需要一跟Emark线。圈里人都知道的哈。。。前面讲到的Vconn就是给这个线供电的。一般是上电识别到这个线就会用 SOP‘ 类型的数据去读他的一些具体信息,识别它就是靠CC线的Ra(0.8K~1KΩ),这个Ra电阻是这个

2020-11-04 22:05:33 3588

原创 MCU C语言存储的一些理解

初学MCU,C语言等知识的时候,对总线地址,ROM、RAM,flash,特殊寄存器等等都只是表面理解。突然想总结一下这几年的理解。RAM:首先RAM是我们常人理解的运行内存。存储在这里面的内容断电以后就没了,再次上点以后就要重新开始了。那么我们思考再写单片机程序的时候,哪些东西是掉电以后就没了呢。自然是我们的变量,但要只是是可以读写的变量哦,如果是只读变量也就是常量是存储在RAM空间的。那我们再分一下可以读写的变量包含哪些;不同的关键字修饰它可能就会不太一样。常用的static变量,全局变量,

2020-10-31 10:29:58 981 2

原创 STM32读写flash

写FLASH的流程1、解锁FLASH_Unlock();2、擦除你要写的扇区或者页;FLASH_Status FLASH_ErasePage(uint32_t Page_Address);FLASH_Status FLASH_EraseAllPages(void);FLASH_Status FLASH_EraseOptionBytes(void);3、向该地址写入你要写的数据32bit数据类型/16bit数据类型/8bit数据类型;FLASH_Status FLASH_ProgramWord(

2020-10-29 22:47:56 1202

原创 PD3.0详解 第十一章 策略层 电源协商(三)(sink端)

前面大师匈介绍了Source端的内容,今天再看一下sink端的内容。大师匈还是想把标准文件的状态机拿出来说一下。大师匈把一张图分成俩部分,大家凑合看一下,一张图实在看不清内容。Sink 端电源协商状态机。基于sink端哦!!!上图先!!!上面俩张图就是整个SINK端口的状态机了。。。介绍一下这个流程:1、收到hardreset或者刚上电的进入PE_SNK_Startup开始状态。2、在PE_SNK_Startup阶段后进入PE_SNK_Discovery,并等待Vbus的到来。3、当Vbus

2020-10-24 22:32:00 3292 1

原创 适配器快充方案——智融SW351X

关于智融关注消费类电源或者快充领域的同学们大家应该都对智融耳熟闻详了,如果你不知道,只能说你******了。都懂哦,在快充领域SW351X的兼容性,效率,稳定性,尺寸大小,等方面处于业内顶端,而且支持多口,多口,多口,受到了非常多客户的青睐,而且是国产芯片,支持国产,不多BB,大师匈说正事。(有不同意见可以在评论区发言反驳)大师匈去官网找到了数据手册,给大家看一下。首先看一下智融官方的规格说明:都来瞅一瞅,兼容的协议是不是有很多可能你都不太知道,嘿嘿,资深的同学可能都了解哈。不了解的就去百度一

2020-10-20 21:45:59 1433 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除