|
市售無線充電商品多以無線充電聯盟(WPC)的 Qi 產品為主,其主要核心分為電力、通訊、及系統控制等三個主體。其中系統控制大多以 MCU為控制處理的核心,而舉凡市售有 32-bit ARM-base、8-bit RISC、8051…等微處理器。而 HOLTEK 的 HT66FW2230 為專用 Wireless Charger Flash MCU,并內建 『直驅 Power MOS 互補式 PWM』及『簡化外部解調電路』等功能,符合 WPC Qi 無線充電電力發射器(Transmitter)設計規范的需求。本文將簡述 WPC Qi 無線充電商品的架構,及運用 HT66FW2230 完成 WPC Qi 最新 1.1.2 版無線充電電力發射器(Transmitter)的認證。
電路原理圖如下:
另外,異物偵測已列入為 WPC Qi 最新的 v1.1.2 版本認證之測試項目,其結合過溫保護(OTP),以作為安全保護機制。一般則采用 RX 的 Received Power 信息,以及 TX 所消耗的功率,進行功率計算,當功率大于異物消耗功率的設定值,則判定有異物存在的狀況出現。加上 HT66FW2230 模塊內建有過流保護(OCP)、過壓保護(OVP)、電源輸入電壓量測、指示電路控制…等保護措施及指示功能。
簡而言之, HT66FW2230 所內建的一般/直驅 Power MOS 互補 PWM 輸出、解調 Demodulation 功能、及脈波產生器(CLK Generator)等功能,已達到符合 Qi TX 設計需求,并獲得 Qi 的TX 認證。 WPC Qi 產品的效率約 70% ~ 75%,而 HT66FW2230 模塊同樣達到該水平。HOLTEK 將會提供 HT66FW2230 認證模塊硬件參考設計(Reference Design)與認證句柄(Certification Source Code)方案,以服務客戶。 同時未來將朝規劃開發Qi其他型式的發射端設計規格(如Fig. 8所示)。
單片機源程序如下:
- ;*******************************************************************************************
- ;***** History *****
- ;*******************************************************************************************
- ;V1.0 - WPC Qi Certification Source Code by Edward in HOLTEK Semiconductor Inc. on 2014/12/25
- ;*******************************************************************************************
- ;***** Including File *****
- ;*******************************************************************************************
- #INCLUDE HT66FW2230.inc
- #INCLUDE TxUserDEF2230v302.inc
- ;*******************************************************************************************
- ;***** Function / Parameter Claim *****
- ;*******************************************************************************************
- PUBLIC PID_SenPriCoilCurrWay65Double
- PUBLIC PID_Isen65_SUBIsen
- PUBLIC PID_SenPriCoilCurrWay65
- PUBLIC PID_Isen65AvgTwo
- EXTERN Sensoring10_8 : near
- EXTERN CLRMath : near
- EXTERN PreCarry : near
- EXTERN PostCarry : near
- EXTERN SignedMul_16Bit : near
- EXTERN a_ADRHbuffer : byte
- EXTERN a_ADRLbuffer : byte
- EXTERN a_data0 : byte
- EXTERN a_data1 : byte
- EXTERN a_data4 : byte
- EXTERN a_data5 : byte
- EXTERN a_to0 : byte
- EXTERN a_to1 : byte
- EXTERN a_to2 : byte
- EXTERN a_to3 : byte
- EXTERN a_to6 : byte
- EXTERN a_to7 : byte
- EXTERN a_temp1 : byte
- EXTERN fg_IsenSmall : bit
- EXTERN fg_IsenBig : bit
- EXTERN fg_IsenFirst : bit
- EXTERN a_ExIP0x81_B1 : byte
- EXTERN a_ExIP0x81_B2 : byte
- EXTERN a_Carry : byte
- ;*******************************************************************************************
- ;***** Program Body *****
- ;*******************************************************************************************
- Isen .Section 'code'
- ;========================================================
- ;Function : PID_SenPriCoilCurrWay65Double ( 370 us)
- ;Note : Call Function Type for Sensor Primary Coil Current
- ;========================================================
- PID_SenPriCoilCurrWay65Double:
- CALL PID_SenPriCoilCurrWay65
- CALL PID_SenPriCoilCurrWay65
- RET
- ;========================================================
- ;Function : PID_Isen65_SUBIsen ( us)
- ;Note : Call Function Type for FOD Isen
- ;input :
- ;output :
- ;parameter :
- ;Setting :
- ;========================================================
- PID_Isen65_SUBIsen:
- CALL PreCarry
- MOV A, a_ADRLbuffer ;New Isen_L ; Low Byte
- SUB A, a_to6 ;IsenSmallTh_L
- MOV A, a_ADRHbuffer ;New Isen_H ; High Byte
- SBC A, a_to7 ;IsenSmallTh_H
- CALL PostCarry
- RET
- ;========================================================
- ;Function : PID_SenPriCoilCurrWay65 ( 370 us)
- ;Note : Call Function Type for Sensor Primary Coil Current
- ;Description : sensor 10 to access 8, then avg_ADC = sum_ADC /8 with
- ; checking PLL and precious avg_ADC
- ;input :
- ;output :
- ;parameter :
- ;Setting :
- ;========================================================
- PID_SenPriCoilCurrWay65:
- CLR WDT
- CALL PID_Isen65AvgTwo
- SZ fg_IsenFirst
- RET
-
- CLR fg_IsenSmall
- CLR fg_IsenBig
-
- ;;IsenSmall and IsenBig
- PID_Isen65_IsenCheckSmall:
- MOV A, c_IniIsenSmallTh_H ;IsenSmallTh_H
- MOV a_to7, A
- MOV A, c_IniIsenSmallTh_L ;IsenSmallTh_L
- MOV a_to6, A
- CALL PID_Isen65_SUBIsen
- SZ a_Carry
- JMP PID_Isen65_IsenSmallfg ; <
-
- JMP PID_Isen65_IsenCheckBig ; >=
- PID_Isen65_IsenSmallfg:
- SET fg_IsenSmall
- JMP PID_Isen65END
- PID_Isen65_IsenCheckBig:
- MOV A, c_IniIsenBigTh_H ;IsenBigTh_H
- MOV a_to7, A
- MOV A, c_IniIsenBigTh_L ;IsenBigTh_L
- MOV a_to6, A
- CALL PID_Isen65_SUBIsen
- SZ a_Carry
- JMP PID_Isen65END ; <
- PID_Isen65_IsenBigfg:
- SET fg_IsenBig
- PID_Isen65END:
- CLR WDT
- RET
- ;========================================================
- ;Function : PID_Isen65AvgTwo ( us)
- ;Note : Call Function Type for Isen twice
- ;input :
- ;output :
- ;parameter :
- ;Setting :
- ;========================================================
- PID_Isen65AvgTwo:
- MOV A, 009H ; set ADCR0 = 0000_0001 = 001h
- MOV ADCR0, A ; ADCR0 @SPDM 2AH (POR=0110_0000, WDT Out=0110_0000)
- ;; Output a_temp1(High Byte)+ a_to7(Low Byte)
- CALL Sensoring10_8
- ;;;~~~Save Pre ADC_H/L and Avg_ADC_H/L Convert to Now ADC_H/L~~~
- ;;;~~~ Isen(A)=Isen(v)=(VsenADC/4096)*2.08v ~~~
- ;;;~~~ => Isen(mA)=(VsenADC/4096)*2.08v*1000 (mA) ~~~
- ;;;~~~ => Isen(mA)=VsenADC*130/256=VsenADC*82h/(2^8)~~~
- SZ fg_IsenFirst
- JMP PID_Isen65Isne2
- ;JMP PID_Isen65Isne1
- PID_Isen65Isne1:
- SET fg_IsenFirst
- ;; Save Now Avg_ADC_H/L first
- MOV A, a_temp1 ;;Now Avg_ADC_H
- MOV a_ExIP0x81_B2, A
- MOV A, a_to7 ;;Now Avg_ADC_L
- MOV a_ExIP0x81_B1, A
- RET
- PID_Isen65Isne2:
- CLR fg_IsenFirst
- MOV A, a_ExIP0x81_B1 ;Low Byte
- ADD A, a_to7
- MOV a_to7 , A ;;Saving
- MOV A, a_ExIP0x81_B2 ;High Byte
- ADC A, a_temp1
- MOV a_temp1 , A ;;Saving
- ;; /256=/2^1
- CLR c
- RRC a_temp1
- RRC a_to7
-
- ;; Save Now Avg_ADC_H/L
- MOV A, a_temp1 ;;Now Avg_ADC_H
- MOV a_ADRHbuffer, A
- MOV A, a_to7 ;;Now Avg_ADC_L
- MOV a_ADRLbuffer, A
-
- ;; Now Avg_ADC_H/L Isen(A) convert to Now ADC_H/L Isen(mA)
- PID_Isen65Conversion:
- ;; ADC*82h
- CALL CLRMath
- MOV A, a_ADRHbuffer ;;Now Avg_ADC_H
- MOV a_data1, A
- MOV A, a_ADRLbuffer ;;Now Avg_ADC_L
- MOV a_data0, A
- CLR a_data5
- MOV A, 082h ;; 82h
- MOV a_data4, A
- CALL SignedMul_16Bit
-
- ;; /256=/2^8
- CLR c
- RRC a_to3
- RRC a_to2
- RRC a_to1
- RRC a_to0
-
- CLR c
- RRC a_to3
- RRC a_to2
- RRC a_to1
- RRC a_to0
-
- CLR c
- RRC a_to3
- RRC a_to2
- RRC a_to1
- RRC a_to0
-
- CLR c
- RRC a_to3
- RRC a_to2
- RRC a_to1
- RRC a_to0
-
- CLR c
- RRC a_to3
- RRC a_to2
- RRC a_to1
- RRC a_to0
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
|
-
-
源碼.rar
2019-1-14 17:55 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
152.69 KB, 下載次數: 172, 下載積分: 黑幣 -5
-
-
AD_PCB文件.rar
2019-1-14 17:55 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
74 Bytes, 下載次數: 95, 下載積分: 黑幣 -5
-
-
原理圖.rar
2019-1-14 17:55 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
27.68 KB, 下載次數: 171, 下載積分: 黑幣 -5
-
-
PCB Layout-C20003-A.pdf
2019-1-14 17:57 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
481.58 KB, 下載次數: 104, 下載積分: 黑幣 -5
-
-
中文文檔_Holtek__CN.pdf
2019-1-14 17:58 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
716.23 KB, 下載次數: 139, 下載積分: 黑幣 -5
|