找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 10123|回复: 15
打印 上一主题 下一主题
收起左侧

采用合泰单片机的QI无线充电原理图&PCB和源码

  [复制链接]
跳转到指定楼层
楼主
ID:31187 发表于 2019-1-14 17:56 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
   市售无线充电商品多以无线充电联盟(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所示)。



单片机源程序如下:
  1. ;*******************************************************************************************
  2. ;*****                                       History                                               *****
  3. ;*******************************************************************************************
  4. ;V1.0 - WPC Qi Certification Source Code by Edward in HOLTEK Semiconductor Inc. on 2014/12/25



  5. ;*******************************************************************************************
  6. ;*****                                   Including File                                       *****
  7. ;*******************************************************************************************
  8. #INCLUDE         HT66FW2230.inc
  9. #INCLUDE        TxUserDEF2230v302.inc


  10. ;*******************************************************************************************
  11. ;*****                                Function / Parameter Claim                               *****
  12. ;*******************************************************************************************
  13. PUBLIC                PID_SenPriCoilCurrWay65Double
  14. PUBLIC                PID_Isen65_SUBIsen
  15. PUBLIC                PID_SenPriCoilCurrWay65
  16. PUBLIC                PID_Isen65AvgTwo

  17. EXTERN                Sensoring10_8                                        :        near
  18. EXTERN                CLRMath                                                :        near
  19. EXTERN                PreCarry                                        :        near
  20. EXTERN                PostCarry                                        :        near
  21. EXTERN                SignedMul_16Bit                                        :        near

  22. EXTERN                a_ADRHbuffer                                        :        byte
  23. EXTERN                a_ADRLbuffer                                        :        byte
  24. EXTERN                a_data0                                                :        byte
  25. EXTERN                a_data1                                                :        byte
  26. EXTERN                a_data4                                                :        byte
  27. EXTERN                a_data5                                                :        byte
  28. EXTERN                a_to0                                                :        byte
  29. EXTERN                a_to1                                                :        byte
  30. EXTERN                a_to2                                           :        byte
  31. EXTERN                a_to3                                           :        byte
  32. EXTERN                a_to6                                           :        byte
  33. EXTERN                a_to7                                           :        byte
  34. EXTERN                a_temp1                                         :        byte
  35. EXTERN                fg_IsenSmall                                        :        bit
  36. EXTERN                fg_IsenBig                                        :        bit
  37. EXTERN                fg_IsenFirst                                        :        bit
  38. EXTERN                a_ExIP0x81_B1                                        :        byte
  39. EXTERN                a_ExIP0x81_B2                                   :        byte
  40. EXTERN                a_Carry                                                :        byte


  41. ;*******************************************************************************************
  42. ;*****                                    Program Body                                       *****
  43. ;*******************************************************************************************
  44. Isen                .Section         'code'
  45. ;========================================================
  46. ;Function         : PID_SenPriCoilCurrWay65Double  ( 370 us)
  47. ;Note             : Call Function Type for Sensor Primary Coil Current
  48. ;========================================================
  49. PID_SenPriCoilCurrWay65Double:
  50.                         CALL        PID_SenPriCoilCurrWay65
  51.                         CALL        PID_SenPriCoilCurrWay65
  52.                         RET


  53. ;========================================================
  54. ;Function         : PID_Isen65_SUBIsen  (  us)
  55. ;Note             : Call Function Type for FOD Isen
  56. ;input          :        
  57. ;output         :        
  58. ;parameter        :        
  59. ;Setting        :
  60. ;========================================================
  61.         PID_Isen65_SUBIsen:
  62.                         CALL        PreCarry
  63.                         MOV        A, a_ADRLbuffer                                ;New Isen_L        ; Low Byte
  64.                         SUB        A, a_to6                                ;IsenSmallTh_L
  65.                         MOV        A, a_ADRHbuffer                                ;New Isen_H        ; High Byte
  66.                         SBC        A, a_to7                                ;IsenSmallTh_H
  67.                         CALL        PostCarry
  68.                         RET

  69. ;========================================================
  70. ;Function         : PID_SenPriCoilCurrWay65  ( 370 us)
  71. ;Note             : Call Function Type for Sensor Primary Coil Current
  72. ;Description    : sensor 10 to access 8, then avg_ADC = sum_ADC /8 with
  73. ;                  checking PLL and precious avg_ADC
  74. ;input          :        
  75. ;output         :        
  76. ;parameter        :
  77. ;Setting        :
  78. ;========================================================
  79.         PID_SenPriCoilCurrWay65:
  80.                         CLR         WDT
  81.                         CALL        PID_Isen65AvgTwo
  82.                         SZ        fg_IsenFirst
  83.                         RET
  84.                        
  85.                         CLR        fg_IsenSmall
  86.                         CLR        fg_IsenBig
  87.    
  88.            ;;IsenSmall and IsenBig
  89.           PID_Isen65_IsenCheckSmall:
  90.                         MOV        A, c_IniIsenSmallTh_H                        ;IsenSmallTh_H
  91.                         MOV        a_to7, A                               
  92.                         MOV        A, c_IniIsenSmallTh_L                        ;IsenSmallTh_L
  93.                         MOV        a_to6, A                               
  94.                         CALL        PID_Isen65_SUBIsen                     
  95.                         SZ        a_Carry                                
  96.                         JMP        PID_Isen65_IsenSmallfg                        ; <
  97.                                                                        
  98.                         JMP        PID_Isen65_IsenCheckBig                        ; >=
  99.         PID_Isen65_IsenSmallfg:                                        
  100.                         SET        fg_IsenSmall                           
  101.                         JMP        PID_Isen65END                          
  102.         PID_Isen65_IsenCheckBig:                                       
  103.                         MOV        A, c_IniIsenBigTh_H                        ;IsenBigTh_H
  104.                         MOV        a_to7, A                               
  105.                         MOV        A, c_IniIsenBigTh_L                        ;IsenBigTh_L
  106.                         MOV        a_to6, A                               
  107.                         CALL        PID_Isen65_SUBIsen                     
  108.                         SZ        a_Carry                                
  109.                         JMP        PID_Isen65END                                ; <
  110.         PID_Isen65_IsenBigfg:
  111.                         SET        fg_IsenBig
  112.         PID_Isen65END:
  113.                         CLR         WDT
  114.                         RET       


  115. ;========================================================
  116. ;Function         : PID_Isen65AvgTwo  (  us)
  117. ;Note             : Call Function Type for Isen twice
  118. ;input          :        
  119. ;output         :        
  120. ;parameter        :        
  121. ;Setting        :
  122. ;========================================================
  123.         PID_Isen65AvgTwo:
  124.                         MOV        A, 009H                                        ; set ADCR0 = 0000_0001 = 001h
  125.                         MOV        ADCR0, A                                ; ADCR0 @SPDM 2AH (POR=0110_0000, WDT Out=0110_0000)
  126.                         ;; Output a_temp1(High Byte)+ a_to7(Low Byte)
  127.                         CALL        Sensoring10_8
  128.                         ;;;~~~Save Pre ADC_H/L and Avg_ADC_H/L Convert to Now ADC_H/L~~~
  129.                         ;;;~~~        Isen(A)=Isen(v)=(VsenADC/4096)*2.08v ~~~
  130.                         ;;;~~~ => Isen(mA)=(VsenADC/4096)*2.08v*1000 (mA) ~~~
  131.                         ;;;~~~ => Isen(mA)=VsenADC*130/256=VsenADC*82h/(2^8)~~~
  132.                         SZ        fg_IsenFirst
  133.                         JMP        PID_Isen65Isne2
  134.                         ;JMP        PID_Isen65Isne1
  135.         PID_Isen65Isne1:       
  136.                         SET        fg_IsenFirst
  137.                         ;; Save Now Avg_ADC_H/L first
  138.                         MOV        A, a_temp1                                ;;Now Avg_ADC_H
  139.                         MOV        a_ExIP0x81_B2, A
  140.                         MOV        A, a_to7                                ;;Now Avg_ADC_L
  141.                         MOV        a_ExIP0x81_B1, A
  142.                         RET
  143.         PID_Isen65Isne2:
  144.                         CLR        fg_IsenFirst
  145.                         MOV        A, a_ExIP0x81_B1                        ;Low Byte
  146.                         ADD        A, a_to7
  147.                         MOV        a_to7        , A  ;;Saving
  148.                         MOV        A, a_ExIP0x81_B2                        ;High Byte
  149.                         ADC        A, a_temp1
  150.                         MOV        a_temp1        , A  ;;Saving

  151.                         ;; /256=/2^1
  152.                         CLR        c
  153.                         RRC        a_temp1
  154.                         RRC        a_to7
  155.        
  156.                         ;; Save Now Avg_ADC_H/L
  157.                         MOV        A, a_temp1                                ;;Now Avg_ADC_H
  158.                         MOV        a_ADRHbuffer, A
  159.                         MOV        A, a_to7                                ;;Now Avg_ADC_L
  160.                         MOV        a_ADRLbuffer, A
  161.                        
  162.         ;; Now Avg_ADC_H/L Isen(A) convert to Now ADC_H/L Isen(mA)
  163.         PID_Isen65Conversion:
  164.                         ;; ADC*82h
  165.                         CALL        CLRMath
  166.                         MOV        A, a_ADRHbuffer                                ;;Now Avg_ADC_H
  167.                         MOV        a_data1, A                             
  168.                         MOV        A, a_ADRLbuffer                                ;;Now Avg_ADC_L
  169.                         MOV        a_data0, A                             
  170.                         CLR        a_data5                                
  171.                         MOV        A, 082h                                        ;; 82h
  172.                         MOV        a_data4, A
  173.                         CALL        SignedMul_16Bit
  174.                        
  175.                         ;; /256=/2^8
  176.                         CLR                c
  177.                         RRC                a_to3
  178.                         RRC                a_to2
  179.                         RRC                a_to1
  180.                         RRC                a_to0
  181.                                
  182.                         CLR                c
  183.                         RRC                a_to3
  184.                         RRC                a_to2
  185.                         RRC                a_to1
  186.                         RRC                a_to0
  187.                
  188.                         CLR                c
  189.                         RRC                a_to3
  190.                         RRC                a_to2
  191.                         RRC                a_to1
  192.                         RRC                a_to0
  193.                
  194.                         CLR                c
  195.                         RRC                a_to3
  196.                         RRC                a_to2
  197.                         RRC                a_to1
  198.                         RRC                a_to0
  199.                
  200.                         CLR                c
  201.                         RRC                a_to3
  202.                         RRC                a_to2
  203.                         RRC                a_to1
  204.                         RRC                a_to0
  205. ……………………

  206. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:

源码.rar

152.69 KB, 下载次数: 169, 下载积分: 黑币 -5

AD_PCB文件.rar

74 Bytes, 下载次数: 92, 下载积分: 黑币 -5

原理图.rar

27.68 KB, 下载次数: 167, 下载积分: 黑币 -5

PCB Layout-C20003-A.pdf

481.58 KB, 下载次数: 102, 下载积分: 黑币 -5

中文文档_Holtek__CN.pdf

716.23 KB, 下载次数: 137, 下载积分: 黑币 -5

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏10 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:31187 发表于 2019-1-15 08:49 | 显示全部楼层
admin 发表于 2019-1-14 18:23
PCB文件好像是空的?

不好意思,真的弄错了,重新发。

AD_PCB文件.rar

518.14 KB, 下载次数: 110, 下载积分: 黑币 -5

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表