前言
不同品牌終端和適配器之間不能有效識別,只能實現(xiàn)較低功率的充電。一方面,用戶快充體驗受到很大的制約和限制,不兼容問題成為用戶的一大痛點;另一方面,由于充電標準不統(tǒng)一,導(dǎo)致產(chǎn)業(yè)鏈上下游廠商研發(fā)通用快充電源芯片和配件的風(fēng)險和成本相對高昂。技術(shù)制式的不統(tǒng)一也將妨礙終端綠色能源和循環(huán)經(jīng)濟的長期發(fā)展。
目前USB-PD已經(jīng)成為歐洲的標準,所有廠商都表示支持。中國也在2021年提出了UFCS標準,目前正在積極推廣中,基于中國是世界第一大手機市場,更是第一大的電子產(chǎn)品制造國,UFCS應(yīng)該有著巨大的前景!
一、UFCS 與USB-PD的優(yōu)缺點比較
UFCS 的物理層就是UART串口,幾乎所有的MCU都自帶UART串口硬件,這就讓產(chǎn)品開發(fā)起來很簡單了。而USB-PD 采用BMC編碼,簡單說就是用脈沖的寬窄代表1和0,而且信號的高電平才1V左右,這就必須要有硬件比較器,增加了成本。好處當然是抗干擾的能力更強。然而UART經(jīng)過幾十年的發(fā)展,也有許多的工業(yè)應(yīng)用,比如RS232, RS485, LIN, MODBUS…, 足夠應(yīng)付各種場景了吧?!
USB-PD的頻率是300Kbps, 軟件發(fā)送邊沿的跳變就要600KHz, 接收采樣就需要5-10倍的速度,才能有效保證不丟數(shù)據(jù)位,這對于ARM32位的MCU也需要主頻48MHz 才能夠用。對于應(yīng)用量更大的8位MCU,就只能靠硬件來實現(xiàn)物理層了,純軟件處理速度跟不上。用硬件的缺點首先是增加了成本,其次硬件開發(fā)周期長,合并進入芯片,這個過程至少也要半年一年。芯片debug也就是流片的成本,又要幾十萬,上百萬。而在UART基礎(chǔ)上做個UFCS的協(xié)議軟件,也就2-3周時間。
還有一點很重要,USB-PD需要額外的兩條CC線,來傳送數(shù)據(jù),完成通訊。UFCS則是利用USB原有的D+,D-兩條數(shù)據(jù)線來通訊。這和高通,華為等手機大廠的方式一樣,好處又是硬件簡單。而且可以在USB-A/B USB-C 等所有USB 口上實現(xiàn),USB-PD就只支持新的type-C接口了。
基于以上的點看,USB-PD標準發(fā)布至今已經(jīng)10年了,才剛剛開始大面積應(yīng)用,應(yīng)該是跟各種硬件成本和應(yīng)用難度不無關(guān)系,重新開發(fā)硬件,開發(fā)軟件都不是簡單的事情。
當然,UFCS目前功能還比較簡單。USB-PD的以下功能,UFCS暫時還沒有:
- Dual-role, 就是一個口,又能充電也能放電,就是有的手機口還能當充電寶,給其他手機充電。只看手機對手機,感覺比較雞肋。但是,如果發(fā)揮想象力,你的手機,電腦,顯示器,筆電等等電器都用USB線連在一起,只需要一個充電器了。亂七八糟的插座,是不是就不要那么多了?
- Alternative, 就是這個PD口可以代替視頻線,音頻線,HDMI,雷電,等等,你的顯示器,只需要一根線跟主機連接,連電源線也不要了。所有的設(shè)備之間連接只有USB,不管是信號線還是電源線,只有USB一種,簡單了吧?
以上是最近幾個月學(xué)習(xí)USB-PD和UFCS,的一些體會,下面也分享一些有用的東東給大家,希望對UFCS的發(fā)展添磚加瓦。(本文歡迎轉(zhuǎn)發(fā),但請保留作者聯(lián)系信息 i2tv@qq.com)
二、UFCS協(xié)議分析工具
1.PULSEVIEW
PULSEVIEW 是sigrok開源的協(xié)議分析軟件,無數(shù)的協(xié)議分析儀和示波器都用了這家的軟件,上百種協(xié)議的軟件都是開源的,比如UART, IIC, SPI, USB-PD, LIN, CAN呀, 相當贊!我來貢獻UFCS協(xié)議分析包,不知道能否被接受呢。先共享出來給大家用吧。
硬件價格從20元人民幣到幾萬美元的都有,分析UFCS就去某寶或者PDD上買個幾十元的就夠用了。協(xié)議支持都是基于sigrok開源共享的,只是采樣速度和閾值電平的調(diào)節(jié)不同。以上的圖是用muselab家的板子采的,不是最低價,主要表示對開源的支持!
說到開源,我覺得是一種共享知識的模式,能讓軟件硬件迅速發(fā)展和普及,建議UFCS等等協(xié)議也應(yīng)該開源,協(xié)議開放,并且提供參考源代碼,參考硬件設(shè)計,讓開發(fā)者可以拿來就用,這樣發(fā)展就快了。第一步我先把自己寫的UFCS協(xié)議分析包開源提供在這里,或者Gitee, github(訪問太慢了,這是共享軟硬件的資源寶庫,應(yīng)該設(shè)法加速呀?。?。
2.DSview
另外,還要分析USB-PD的話,推薦DSlogic。也是基于sigrok的共享軟件,二次開發(fā)的。
DSlogic主要優(yōu)點是閾值電平可以調(diào)節(jié),也就是識別更低的電平,因為USB-PD的高電平1V左右,普通MCU無法直接識別,必須有硬件比較器的電平轉(zhuǎn)換。
另外一個重要優(yōu)點就是上圖藍色的部分,直接點擊搜索需要的特征值,然后點擊就可以迅速找到數(shù)據(jù)包的位置,這個對于協(xié)議分析的效率很高,pulseview 要左右拉來拉去,用肉眼找數(shù)據(jù),還是很費腦子的;)
個人版300-500元的價格,跟老外的價格比較起來,就是掙個茶水費嘍。
3.UFCS協(xié)議分析軟件插件共享
基于sigrok的協(xié)議分析軟件,都有一個decoders目錄,里面每個子目錄是一個協(xié)議,包括兩個文件__init__.py 和 pd.py。所以看這些python源碼就可以知道上百種協(xié)議的原理了。改到MCU上,用c語言實現(xiàn)也就輕松愉快。
下載鏈接1
https://gitee.com/renxn/ufcs.git
下載鏈接2
https://github.com/392625227/UFCS-protocol-compare-with-USB-PD
只要下載里面的兩個文件,在你的pluseview或者dsview的decoders下面加一個ufcs目錄,再把__init__.py 和pd.py 拷貝到decoders/ufcs目錄下,重新打開pulseview 或者 dsview就可以分析UFCS協(xié)議包了。
主要幾個文件,最重要的最長,放在本文章最后面,直接黏貼都可以不用下載。.sr 文件是pulseview軟件抓取的波形,先選UART,然后再選UFCS,就可以分析UFCS數(shù)據(jù)包。.dsl是DSview軟件抓的UFCS波形,協(xié)議直接選UFCS就行。要學(xué)習(xí)UFCS的協(xié)議包格式,除了看TTAF 083-2022 移動終端融合快速充電技術(shù)規(guī)范.pdf,就是用pulseview 或者dsview直接看圖識字,最簡單不過了。開本文的分享的代碼也很簡單。
只要這里兩個文件,在decoders下面加一個ufcs目錄,再把__init__.py 和pd.py 拷貝到decoders/ufcs目錄下,重新打開pulseview 或者 dsview就可以用分析UFCS協(xié)議包了。文章來源:http://www.zghlxwxcb.cn/news/detail-432985.html
1__init__.py 主要就一句話,為了pulseview, DSview軟件找到這個協(xié)議文章來源地址http://www.zghlxwxcb.cn/news/detail-432985.html
from .pd import Decoder
- pd.py 有點兒長,湊合看吧;)
##
## This file is part of the libsigrokdecode project.
##
## Copyright (C) 2023 edison ren <i2tv@qq.com>
## ref from uart & usb_power_delivery
##
## This program is free software; you can redistribute it and/or modify
## it under the terms of the GNU General Public License as published by
## the Free Software Foundation; either version 2 of the License, or
## (at your option) any later version.
##
## This program is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
## GNU General Public License for more details.
##
## You should have received a copy of the GNU General Public License
## along with this program; if not, see <http://www.gnu.org/licenses/>.
##
import sigrokdecode as srd
# Control Message type
CTRL_TYPES = {
0: 'PING',
1: 'ACK',
2: 'NCK',
3: 'ACCEPT',
4: 'SOFT RESET',
5: 'POWER READY',
6: 'GET OUTPUT CAP',
7: 'GET SOURCE INFO',
8: 'GET SINK INFO',
9: 'GET CABLE INFO',
10: 'GET DEVICE INFO',
11: 'GET ERROR INFO',
12: 'DETECT CABLE INFO',
13: 'START CABLE DETECT',
14: 'END CABLE DETECT',
15: 'EXIT UFCS MODE',
}
# Data message type
DATA_TYPES = {
1: 'OUTPUT CAP',
2: 'REQUEST',
3: 'SOURCE INFO',
4: 'SINK INFO',
5: 'CABLE INFO',
6: 'DEVICE INFO',
7: 'ERROR INFO',
8: 'CONFIG WATCHDOG',
9: 'REFUSE',
10: 'Verify_Request',
11: 'Verify_Response',
255: 'Test Request'
}
class Decoder(srd.Decoder):
api_version = 3
id = 'ufcs'
name = 'UFCS'
longname = 'Universal Fast Charging Specification'
desc = 'Universal fast charging specification for mobile devices. T/TAF 083-2021. Coding by edison ren 2023.1.25 <i2tv@qq.com>'
license = 'gplv2+'
inputs = ['uart']
outputs = []
tags = ['PC/Mobile']
options = (
{
'id': 'fulltext', 'desc': 'Full text decoding of packets',
'default': 'no', 'values': ('yes', 'no')},
)
annotations = (
('type', 'Packet Type'),
('training', 'Training'),
('header', 'Header'),
('data', 'Data'),
('crc', 'Checksum'),
('warnings', 'Warnings'),
('src', 'Source Message'),
('snk', 'Sink Message'),
('payload', 'Payload'),
('text', 'Plain text'),
('cable', 'Cable Message'),
('reserved', 'Reserved'),
)
annotation_rows = (
('phase', 'Parts', (1, 2, 3, 4,)),
('payload', 'Payload', (8,)),
('type', 'Type', (0, 6, 7, 10, 11)),
('warnings', 'Warnings', (5,)),
('text', 'Full text', (9,)),
)
def __init__(self):
self.reset()
def reset(self)
到了這里,關(guān)于UFCS中國的快充統(tǒng)一標準,共享PULSEVIEW 和 DSview協(xié)議分析軟件的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!