发作品签到
专业版

CH552软件模拟USB PD诱骗器

工程标签

1.7k
0
0
21

简介

该工程使用不带PD PHY的通用单片机CH552来收发PD信号。单片机外设仅使用模拟比较器,转换器和定时器。其他信号处理全部由软件和外置电阻,二极管实现。该方法也可适用于其他通用单片机。

简介:该工程使用不带PD PHY的通用单片机CH552来收发PD信号。单片机外设仅使用模拟比较器,转换器和定时器。其他信号处理全部由软件和外置电阻,二极管实现。该方法也可适用于其他通用单片机。

开源协议

GPL 3.0

创建时间:2023-07-30 01:02:13更新时间:2024-01-02 10:04:01

描述

更多信息可参考 ch55xduino里的例程

##介绍

该项目使用通用微控制器(CH552)通过 CC 线接收和发送 USB PD 信号,无需任何外设。只用一个模拟比较器和一个定时器接收信号。带有箝位二极管的 GPIO 发送信号。示例代码使 CH552 充当 USB PD SINK控制器,并请求 PD/PPS 充电器提供可编程的电压。

这种方法也可以移植到任何带有比较器、ADC 和数字输出的通用单片机上。

如果需要更简单的电路,也可以使用 CH549。一样的代码将利用内部电压基准和低压输出能力大幅简化外围电路。

##工作原理

pd_bmc_signal.jpg

USB PD 通过 USB Type-C 连接器中的 CC 线使用 BMC(Biphase Mark Code)在Source设备和Sink设备之间交换数据。但是,通信的最大电压约为 1~1.2V,因此不能直接与单片机的IO口互联。

CH552_typeC_Power_Delivery.png

在输入方面,模拟比较器将信号与 0.6V 基准电压进行比较,从而将信号转换为数字信号。软件使用定时器测量跳变之间的时间差,并将BMC解码为二进制。

在输出方面,输出电压通过一个 1K 电阻、一个普通二极管和两个肖特基二极管箝位到 1V。串联二极管的阴极连接到另一路 GPIO,使箝位可控。因此,任何数字输出都将被箝位为 0~1V 输出。

pd_rx_tx.jpg

信号从 BMC 解码后,软件将寻找 1、0 交替出现的前导码。一旦前导信号结束,软件将以 5 位为一组记录二进制。信号结束后,我们将检查 SOP、进行 5b4b 解码并检查 CRC。如果一切正常,我们将使用 USB PD 协议解析数据包。

发回数据的过程与此类似,我们生成 CRC,用 4b5b 对数据进行编码,添加 SOP 和 EOP,然后用 BMC 编码发回数据。

设计图

未生成预览图,请在编辑器重新保存一次

BOM

暂无BOM

附件

序号文件名称下载次数
1
PowerDelivery.zip
98
2
CH552_typeC_Power_Delivery.sch
25
3
CH552_typeC_Power_Delivery.brd
16
4
CH549_typeC_Power_Delivery.sch
20
5
CH549_typeC_Power_Delivery.brd
17
克隆工程
添加到专辑
0
0
分享
侵权投诉

工程成员

评论

全部评论(1)
按时间排序|按热度排序
粉丝0|获赞0
相关工程
暂无相关工程

底部导航