|
市售无线充电商品多以无线充电联盟(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
152.69 KB, 下载次数: 172, 下载积分: 黑币 -5
-
-
AD_PCB文件.rar
74 Bytes, 下载次数: 95, 下载积分: 黑币 -5
-
-
原理图.rar
27.68 KB, 下载次数: 171, 下载积分: 黑币 -5
-
-
PCB Layout-C20003-A.pdf
481.58 KB, 下载次数: 104, 下载积分: 黑币 -5
-
-
中文文档_Holtek__CN.pdf
716.23 KB, 下载次数: 139, 下载积分: 黑币 -5
|