更改内容:1、优化代码,全局变量在定义时不赋初值,减小ROM占用;

2、将显示UI模块化,单独成文件displayui.c和display_ui.h;
3、将部分功能模块的状态位、标志位变量和配置参数置于congfig.h;
4、将工程程序中的TP3315字符更改SY8835。
This commit is contained in:
Alex xu 2025-01-21 18:00:07 +08:00
parent b12844ffba
commit 30111f86c1
49 changed files with 1877 additions and 1847 deletions

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@ -0,0 +1,921 @@
:03000000022924AE
:1029240075FE7275FF00758E009000007F007E03B7
:0D293400E4F0A3DFFCDEFA75815C02297C73
:1033090053797374656D20496E69742E5665723AE6
:0C3319002532782532782532780D0A0024
:10308400122F407BFF7A33790990009FE4F0A30468
:10309400F0A3E4F0A304F0A3E4F0A37402F0120F8D
:0D30A40058D2AED2BE122C4D122EBF80F4B9
:10000E007857E6FE08E6780222F608EFF6C3EE64AD
:04001E008094802228
:1032EC0075FE3175FF8175FE0E43FF107DAC7F308E
:0D32FC001234E475FE5990010CE5FFF0223C
:10281500900099EFF0E5A420E00302291875A401C2
:102825007F351234EB7857760008A6077F361234C9
:10283500EBEF5403785746F608E6F6900099E04426
:1028450008FD7F3112310A90010CE0FF3395E0FE5F
:10285500C37858E69FFF18E69EFE3395E0FDFCE43D
:102865007BC47A09F9F81214C5780A121525785728
:10287500EE1200175005E418F608F690010EE01266
:10288500156228A30028B20128BB0228CE0328DC44
:102895000428EA0528F80629070700002918120068
:1028A5000ECEA2E713CE13D8F8794A80627858E69F
:1028B50025E0795C80447857E6FE08E67803C33363
:1028C500CE33CED8F97950804612000EC333CE33BD
:1028D500CED8F9795A803812000EC333CE33CED80C
:1028E500F97954802A12000EC333CE33CED8F97944
:1028F50052801C7858E625E0794CF718E63319F72D
:10290500801112000ECEA2E713CE13D8F8794EF738
:0F291500EE19F7900099E090010EF075A3812262
:102DA800E5A430E14075A4027F371234EB785576FC
:102DB8000008A6077F381234EBEF5403785546FE17
:102DC80008E6FF18EEF608EFF6FF90010CE0FD3379
:102DD80095E0FCC3EF9DFFEE9CFE1812001750050E
:092DE800E418F608F675A3822236
:10343000780D7603E4780FF67811F6187603781293
:03344000760422ED
:10233700E4FE7855E6FC08E6FDC394E8EC94034018
:10234700037F0022EF700302244FD3ED940FEC9428
:1023570003400302242DED94CBEC94005003022498
:102367002DD3ED94AAEC94024022D21F780DE6FFFC
:10237700137810F6302011D3ED94BFEC940240048B
:10238700C22080047810A607E4FE8070D3ED94AADB
:10239700EC94025043ED9437EC9401403BD2207803
:1023A7000DE6FF7810F6301F13D3ED9493EC9402EB
:1023B7005004C21F8006EFC3137810F67812760414
:1023C700301A11D3ED9451EC94015004C21A8004D1
:1023D70078127601E4FE8024D3ED9437EC94015013
:1023E7001BD21A78127601302010ED9426EC940156
:1023F7005004C220800478127604E4FE301D11C315
:10240700ED94F3EC94025006C21DE4FE80027E01B7
:10241700301E2FD3ED94DDEC94004006C21EE4FE7F
:1024270080207E01801CD3ED940FEC94034006D2EC
:102437001D7E01800DD3ED94CBEC94005004D21E89
:102447007E01C21BC21C8058C21DC21ED3ED949FC1
:10245700EC94035031ED9471EC94004029301B103B
:10246700ED9484EC94035006C21BE4FE80027E01C7
:10247700301C2DD3ED9482EC94004006C21CE4FE80
:10248700801E7E01801AD3ED949FEC94034004D202
:102497001B800BC3ED9471EC94005002D21C7E019B
:0224A700AF067E
:0124A9002210
:102A5600900109E05463600AE4FF1231EDE4780E58
:102A6600F6227F01122337EF600CE4FF1231EDD21C
:102A760021780E760122C22190010AE05407FFBF99
:102A86000605780E7603227810E6FD7F2212310ABB
:102A96007812E6FD7F2112310A780FE6C454F078E9
:102AA6001146FD7F2312310A7F011231ED7814E6BB
:102AB600FFD394014002C23CEFD394034002C238D4
:102AC600EFD394074002C23AEFD3940C4002C239C6
:0D2AD600EFD394114002C23B780E7602222D
:102CB600C23E900109E020E65130E203D23F2230C5
:102CC6003C04E4FF8011900109E030E50D30233A21
:102CD6007F3C12338F7F0102320FE4FF122337EF5E
:102CE6006008E4FF12320FD23D22C23DD23E303F91
:102CF60019780EE6B40213C3785CE6941018E694CD
:0B2D06000E4005D23EC23F22C23E221A
:1033A900426F78204F70656E2E0D0A00426F7820AB
:0933B900436C6F73652E0D0A00D0
:102D5D00E4900099F090010AE0FF5420FE90009954
:102D6D00F0900110E06E6032EF30E50E90010F74BF
:102D7D0001F07BFF7A3379A9800BE490010FF07B92
:102D8D00FF7A3379B5120F58D245C20ED22ED230FA
:0A2D9D00900099E0900110F0D2437D
:012DA7002209
:1026FB00737570706572206C6F6E67203873207005
:10270B00726573732E286C696E653A2564290D0A00
:10271B00004B6579206C696674286C696E653A2587
:10272B0064292E0D0A00426F6F7374204F70656E13
:10273B00204B65792E286C696E653A2564290D0A44
:10274B00006C6F6E672032732070726573730D0AA5
:10275B000073686F72742070726573730D0A004B8F
:10276B006579205061697220545820564F52286C5D
:10277B00696E653A2564292E0D0A004B6579205048
:10278B006169722054696D654F7574286C696E654B
:10279B003A2564292E0D0A004B6579205061697228
:1027AB002047657420564F52286C696E653A256434
:1027BB00292E0D0A004B65792050616972204765FF
:1027CB007420564F4C286C696E653A2564292E0D82
:1027DB000A004B6579205061697220545820564F7E
:1027EB004C286C696E653A2564292E0D0A004B65E1
:1027FB0079205061697220436E743A25642E286CDF
:0A280B00696E653A2564290D0A0084
:103443007BFF90009FE4F0A3227BFF90009F740119
:03345300F0A322C1
:101B570090010AE030E4449000F8E475F0011214B3
:101B67004AC39000F9E094409000F8E094014011D6
:101B7700D2367A2679FB1234437470F0120F5880EC
:101B870014C39000F9E094509000F8E094004005E9
:101B9700203502D235D232C233804D303243D24360
:101BA700E47817F6C232D2339000FAF09000F8E0EA
:101BB700FEA3E0FFD39414EE94005008D231D23440
:101BC700D230800EC3EF94C8EE9400500530350232
:101BD700D237C2357A27791C12344374A6F0120F14
:101BE70058E49000F8F0A3F0303377303E74303784
:101BF7002D200E08121D8874B9021D3F121DAE500C
:101C070003021D74C23778177602E49000F7F0904C
:101C17000068F0A3F07BFF7A27794C120F58303613
:101C27002F200E08121D8874E2021D3F121DAE50B0
:101C370003021D74C236E49000FBF0781776037B2D
:101C4700FF7A2679FB90009FF0A374F7F0120F58E4
:101C570030340BC2347BFF7A27795C120F58C233BA
:101C6700C20E90010FE064016003021D877817E63A
:101C770064026003021D489000F7E0C39401501608
:101C87007F02121DA17BFF7A27796A90009F04F0DB
:101C9700A37421021D129000F6E0D394054010E4CE
:101CA700121DBB7A27798612344C7437021D3F9078
:101CB7000068E0B4011D7D227F031225DA900068D9
:101CC7007402F07BFF7A2779A390009F14F0A37426
:101CD7004D8038900068E064027034A3E0601A7F9A
:101CE70003121DA19000F7F09000F6121DBB7A2792
:101CF70079C012344C746E803F7D227F021225DA40
:101D07007BFF7A2779DD12344E747EF0120F5890DC
:101D170000F7E0D3941440249000F6E004F0E4A325
:101D2700F07BFF7A2779F99000F6E0FF123445EF50
:101D3700F0A37401F0A3748CF0020F589000F780A1
:101D47002C7817E6640370389000FBE0FFC39464B7
:101D5700501FEF540770047D22800A9000FBE05467
:101D67000370077D117F041225DA9000FBE004F071
:101D770022E47817F6D20F9000FBF07F04122B6055
:101D8700227F3C12338F7F0112320FD20E7BFF7AF4
:101D970027793190009FE4F0A3227D111225DAE420
:101DA700900068F0A3F0227F03122B609000FAE006
:101DB700D3941422F07817F6D20F7F04122B6022E7
:102BDA00900099E0FF25E02479F582E43400F5833A
:102BEA0022900099E0FF25E02481F582E43400F583
:102BFA0083E0FCA3E0FDEF25E02491F582E43400B4
:102C0A00F5832274712FF582E43400F58322E4F00F
:102C1A00A3F0EF25E02489F582E43400F5832290BD
:102C2A000099E0FF2475F582E43400F58322E0FE82
:102C3A00A3E0C39DEE9C2225E02481F582E43400C2
:032C4A00F58322ED
:1030DE0075FE0B75FF0F75FE1375FF0F75FE0C75E4
:1030EE00FF55E490006FF090006EF0900070F0903D
:0C30FE00006DF0C290C291C293C29222F9
:10335B00EF14600D14600D14600D2403700BD290EC
:0A336B0022D29122D29222D29322A4
:05325300900099E0FF6E
:10325800EF14600D14600D14600D2403700BC29000
:0A32680022C29122C29222C29322D8
:10302700E4FF122C0DE4F074752F122C30E4F0EF4E
:10303700122BDFE4F0A3F0EF122C41122C18E4F06E
:0E304700A3F0122C00E4F0A3F00FEFB404D4B9
:013055002258
:102F0100AC0774712C122C10EDF0EAC313FEEB1315
:102F1100FFEC122BDFEEF0A3EFF0AF03EC122C412C
:102F2100EAF0A3EFF090009EE0FEA3E0FFEC122C8C
:0F2F31001DEEF0A3EFF0EC122C01E4F0A3F02260
:10327200122C0DEDF074752F122C30EBF0EF122B97
:0F328200DFE4F0A37469F0122C00E4F0A3F02253
:101DC700E4900099F0F0900099E0FFC39404400379
:101DD700021FBC122C0DE0601F24FE6021146078E6
:101DE700147003021E9024036003021F6B90009976
:101DF700E0FF12335B021F6B123253021F6B122B71
:101E0700DA122BFB122C38500512335B8003123287
:101E170053122BEB122C385003021F6B900099E0E2
:101E2700122C01122C18E0FEA3E0D39400EE9400CC
:101E3700400E900099E0122C1D74FFF5F012144A21
:101E4700900099E0FF122C1DE0FCA3E04C60030218
:101E57001F6B74712F021EA1122BDA122BFBE0FEEF
:101E6700A3E0D39DEE9C500512335B8003123253DF
:101E7700122BEB122C385003021F6B900099E012C3
:101E87002C01E4F0A3F0021F6B122C29E07013124F
:101E970033D9C246900099E02471122C10E4F00265
:101EA7001F6B122C29E0FE6402702E20460CD246CE
:101EB700EF122BDFE4F0A37469F0122BDAE475F06C
:101EC7000112144AEF122BDFE0FCA3E0C394FEECEF
:101ED70094005003021F628031EE64017037204680
:101EE7000FD246900099E0122BDFE4F0A374FEF0C6
:101EF700122BDA74FFF5F012144AEF122BDFE0FE13
:101F0700A3E0D39469EE94005051900099E0122C0D
:101F17002EE4F08046122C29E06403703EEF122B6A
:101F2700DFE0FEA3E0FFC394FEEE94004004D24638
:101F3700800BD3EF946AEE94005002C2469000994A
:101F4700E025E02479304609122BE374FFF5F08091
:101F570007122BE3E475F00112144A122BDAA3E0FF
:101F6700FD122DF1900099E0FF700A122C0DE09000
:101F7700006FF08037900099E0B4010C2471122CA7
:101F870010E090006EF08024900099E0B4020C24D9
:101F970071122C10E0900070F08011900099E0B45D
:101FA700030A2471122C10E090006DF0900099E064
:101FB70004F0021DCDE4900099F0900099E0FFC372
:101FC70094045012122C00E475F00112144A900088
:061FD70099E004F080E433
:011FDD0022E1
:10337500D2AC759A03D2BCD2BDD2A9D2AB75FE31FF
:0A33850075FF8175FE3043FF8022C2
:10329100C2ACE4F59AC2BCC2BDC2A9C2AB75FE31D3
:0F32A10053FF7E75FE3053FF7FFD7F3102310AF0
:10305600304421302627C226900102E004F0E0C366
:1030660094054019E4A3F07DAA7F4F12310AE4903B
:0E3076000102F02212329143870212337522BA
:10341C00780EE6D394015006201003304304C243C7
:04342C00C322D322C2
:102F4000123325123468123495E4F5861230B1122A
:102F500032EC7D087F761234E4D2A8D2AF1234303E
:102F60007D697F031234061230DE1230271234A33B
:0D2F7000900106740FF09000FF7401F02234
:030003000234F2D2
:0634F200D24375E20F3227
:0B34BE00E0FF04F074292FF8A699220B
:1033250075FE0443FF0CD2DF43878075BA0375AA87
:0B333500DC759852D299D298D2AC22DD
:062E37009000BD121559C8
:102E3D00E49000C0F075FE0443FF0C75FE0353FFD4
:102E4D00F3F09000C0E0C39FE49E501C2040FDD2E3
:102E5D00409000BDE475F001121542121348F5992A
:0E2E6D009000C0E004F080DA75FE0453FFF31D
:012E7B002234
:030023000229C1EE
:1029C100C0E0C083C082C0D075D000C000C005C0C7
:1029D10006C007309904C299C240309867C298D2A4
:1029E10043900111E014601914602D24027055E523
:1029F10099900111B455087401F0A3E4F0800E80A0
:102A010011E599900111B4AA097402F0A31234BE20
:102A11008032E4F0A3F0802C9001121234BE782DA4
:102A2100E62406FFE433FEE0FDC39FEE6480F87404
:102A310080985005ED9420400B900112E4F0900134
:102A410011F0D242D007D006D005D000D0D0D0822C
:052A5100D083D0E0324B
:0E3487009000C4EFF01234D49000C4E0FF2295
:1034680075F10A759F03759EFD759692759A0222ED
:0834D4002041FDD2418F972237
:03008B000233C27B
:1033C200C0E0E59630E1055396FDC241E59630E056
:0733D200035396FED0E03228
:1024AA00506F776572204F6E2053746174652148AE
:1024BA00616C6C28307825782920286C696E653A19
:1024CA002564290D0A004177616B65205374617494
:1024DA006520286C696E653A2564290D0A004E6FDD
:1024EA00726D616C20537461746520286C696E6525
:1024FA003A2564290D0A00536C656570205374618E
:10250A00746520286C696E653A2564290D0A0053A2
:10251A005441303A307825782C535441313A307846
:10252A0025782C535441323A307825782C436869FF
:10253A00705F5354413A307825782C564F585F5380
:10254A0054413A307825782E4465635F536C65654B
:10255A00703A25640D0A00566E74633A25642C4954
:10256A00766F6C3A25642C566261743A25642C564F
:10257A00696E3A25642C56706D69643A25642C5646
:10258A006F723A25642C566F6C3A25642C56646433
:10259A003A25642C49766F723A25642E0D0A004456
:1025AA0065636E745F536C65657044656C61792010
:1025BA0052656C6F61642E0D0A00456E7465722057
:1025CA005374616E646279204D6F6465210D0A004F
:062FF2004300FF0402028F
:102FBA00E6FF08A3E6CFF0A3EFF0227BFFE0900044
:102FCA009FFFE4F0A3EFF02290009EE4F0A37403C5
:102FDA00F07B647A007D02227BFF90009FE4F0A3DD
:082FEA0022FFE4F0A3EFF02246
:1033F00090010DE0FF04F012281590010DE0C39438
:06340000084002E4F02286
:1032B000122D5D121B57122D11302211C222122A1B
:0E32C00056122CB6122AE31218861215882216
:090082007B017A017907020026D6
:10219A00E4900099F09000FFE0FFA3E0FE6F606C0E
:1021AA00A3EEF09000FFE0A3F024FE602F14603C41
:1021BA0014604A24036003022336122FD2E4FF126A
:1021CA002F01122FD27F01122F017A2479AA9001AE
:1021DA000F122FC5A3E4F0A374BB802C7F01123227
:1021EA00317A2479D0122FE274C7801C90010674C8
:1021FA000FF07A2479E8122FE274D4800B7BFF7AED
:10220A00257901122FE474DFF0022301900100E026
:10221A0024FE603914603D147003022319240360FC
:10222A00030223369000FCE004F0E0C39408500354
:10223A000223369000FF7402F0E49000FCF0781458
:10224A00E660030223369000FF7404F0229000FF38
:10225A007403F022202603022336C2267A2579192E
:10226A00900107122FC5900108E09000A1122FCB10
:10227A00900109E09000A3122FEB90010AE0900070
:10228A00A5122FEB90010BE0FF9000A7E4F0A3EF5B
:10229A00F0900106E0FF9000A9E4F0A3EFF0120F1E
:1022AA00587BFF7A2579617855E6FF0890009F12DE
:1022BA002FBE7849122FBA785B122FBA784F122F95
:1022CA00BA7859122FBA7853122FBA7851122FBAF4
:1022DA00784B122FBA784D122FBA120F5890010666
:1022EA00E0D394004014E014F0304340C243740F2A
:1022FA00F07BFF7A2579A9020F587BFF7A2579C4EA
:10230A00120F589000FF7404F0E4900102F02212B8
:10231A00341C50127F04122B60E4FF12320FE4FFC8
:0C232A001232310230569000FF7402F0B5
:012336002284
:102EBF00302536C2259000FDE0FF04F0EF146012BC
:102ECF001460141460161460182404701C1233F06C
:102EDF0080171200828012122DA8800D1232B0803E
:102EEF000812219AE49000FDF0302705C227121D29
:022EFF00C722E8
:10008E00426F6F7374204F70656E2E286C696E65AB
:10009E003A2564290D0A00426F7820436C6F736510
:1000AE002E286C696E653A2564290D0A00426F7818
:1000BE00204F70656E2E286C696E653A2564290D89
:1000CE000A004F70656E2F436C6F736520426F7818
:1000DE002C45617270686F6E657320496E20426F99
:1000EE0078284E756D3A25642928566F78537461B9
:1000FE003A30782578292E0D0A004F70656E204211
:10010E006F7820434D44205458204F7665722E0D43
:10011E000A004F70656E20426F7820416E64204554
:10012E00617270686F6E6520476574496E284E75F2
:10013E006D3A25642928566F785374613A307825C4
:10014E0078292E0D0A00436C6F736520426F78205C
:10015E00416E6420466F72636520566F6C746167E2
:10016E00652055702E0D0A2000564F5820566F757B
:10017E007420355628564F585F5354413A307825DF
:10018E00782C6C696E653A2564292E0D0A00564F3F
:10019E0058204348472046756C6C2E0D0A00564F6A
:1001AE00582047657420496E746F20536C656570D6
:1001BE002E0D0A00466F6C6C6F772043484720491E
:1001CE006E697453746120536574204D61782056A6
:1001DE00706D69642E28566F785F7374613A30784B
:1001EE00257829286C696E653A2564290D0A004622
:1001FE006F6C6C6F772043484720496E6974537457
:10020E00612E28566F785F7374613A30782578299D
:10021E00286C696E653A2564290D0A00466F6C6C70
:10022E006F772043484720537461312C4E6F204521
:10023E00617250686F6E6520496E20426F782E286D
:10024E006C696E653A2564290D0A00466F6C6C6FF9
:10025E00772043484720537461312C564F52204328
:10026E006867696E672849766F723A25646D412911
:10027E002E286C696E653A2564290D0A00466F6C4E
:10028E006C6F772043484720537461312C564F4C86
:10029E0020436867696E672849766F6C3A25646DEE
:1002AE0041292E286C696E653A2564290D0A00468F
:1002BE006F6C6C6F772043484720537461322C4724
:1002CE0065742049564F523A25646D412E286C694B
:1002DE006E653A2564290D0A00466F6C6C6F7720A7
:1002EE0043484720537461322C4765742049564F5A
:1002FE004C3A25646D412E286C696E653A25642949
:10030E000D0A00466F6C6C6F77204348472053747C
:10031E0061332C564F5820436867205265496E69E9
:10032E00742E286C696E653A2564290D0A00466F95
:10033E006C6C6F77204348472053746133284356C3
:10034E00292C564F522056706D69642041646453B7
:10035E0074612849766F723A25646D41292E286C96
:10036E00696E653A2564290D0A00466F6C6C6F77CD
:10037E00204348472053746133284356292C564F47
:10038E00522056706D69642053756253746128490A
:10039E00766F723A25646D41292E286C696E653A26
:1003AE002564290D0A00466F6C6C6F772043484711
:1003BE002053746133284343292C564F52205670D4
:1003CE006D6964205375625374612849766F723A71
:1003DE0025646D41292E286C696E653A2564290DB8
:1003EE000A00466F6C6C6F77204348472053746148
:1003FE0033284343292C564F522056706D69642082
:10040E004164645374612849766F723A25646D4174
:10041E00292E286C696E653A2564290D0A00466FEF
:10042E006C6C6F77204348472053746133284356D2
:10043E00292C564F4C2056706D69642041646453CC
:10044E0074612849766F6C3A25646D41292E286CAB
:10045E00696E653A2564290D0A00466F6C6C6F77DC
:10046E00204348472053746133284356292C564F56
:10047E004C2056706D69642053756253746128491F
:10048E00766F6C3A25646D41292E286C696E653A3B
:10049E002564290D0A00466F6C6C6F772043484720
:1004AE002053746133284343292C564F4C205670E9
:1004BE006D6964205375625374612849766F6C3A86
:1004CE0025646D41292E286C696E653A2564290DC7
:1004DE000A00466F6C6C6F77204348472053746157
:1004EE0033284343292C564F4C2056706D69642097
:1004FE004164645374612849766F6C3A25646D418A
:10050E00292E286C696E653A2564290D0A00466FFE
:10051E006C6C6F772043484720537461342C564FD0
:10052E00782056706D696420416464537461285656
:10053E006F75743A307825782C49766F6C3A25644D
:10054E006D412C49766F723A25646D4129286C698C
:10055E006E653A2564292E0D0A00466F6C6C6F7716
:10056E002043484720537461342C564F78204368FB
:10057E00696E6728566F75743A307825782C4976EF
:10058E006F6C3A25646D412C49766F723A25646D15
:10059E004129286C696E653A2564292E0D0A00469C
:1005AE006F6C6C6F772043484720537461342C5620
:1005BE004F522056706D69642041646453746128F3
:1005CE00566F75743A307825782C49766F723A25C5
:1005DE00646D4129286C696E653A2564292E0D0AD1
:1005EE0000466F6C6C6F772043484720537461341C
:1005FE002C564F52204368696E6728566F75743AB1
:10060E00307825782C49766F723A25646D41292809
:10061E006C696E653A2564292E0D0A00466F6C6C66
:10062E006F772043484720537461342C564F4C202B
:10063E0056706D69642041646453746128566F75F9
:10064E00743A307825782C49766F6C3A25646D4172
:10065E0029286C696E653A2564292E0D0A00466FAD
:10066E006C6C6F772043484720537461342C564F7F
:10067E004C204368696E6728566F75743A3078253A
:10068E00782C49766F6C3A25646D4129286C696E19
:10069E00653A2564292E0D0A00466F6C6C6F772023
:1006AE00434847205375625374612C564F4C2F5656
:1006BE004F52286C696E653A2564292E0D0A004644
:1006CE006F6C6C6F7720434847205375625374618B
:1006DE002C564F52286C696E653A2564292E0D0AE8
:1006EE0000466F6C6C6F77204348472053756253FA
:1006FE0074612C564F4C286C696E653A2564292E10
:10070E000D0A00466F6C6C6F772043484720537577
:10071E00625374612C285354413A307825782C5604
:10072E00706D69643A3078257829286C696E653A5F
:10073E002564290D0A00466F6C6C6F77204348477D
:10074E00204164645374612C285354413A30782507
:10075E00782C56706D69643A3078257829286C6942
:10076E006E653A2564290D0A005258305F4275664F
:10077E006665725B305D3A307825782C5258305F62
:10078E004275666665725B315D3A307825782C521B
:10079E0058305F4275666665725B325D3A30782519
:1007AE00782C5258305F4275666665725B335D3ADF
:1007BE00307825782C5258305F4275666665725BCC
:1007CE00345D3A307825782C5258305F4275666623
:1007DE0065725B355D3A307825782C5258305F4221
:1007EE0075666665725B365D3A307825782C5258A0
:1007FE00305F4275666665725B375D3A3078257894
:10080E002C6C696E653A25640D0A0000000000002C
:10081E0000000000000000000000000000000000CA
:0B082E000000000000000000000000BF
:101FDE0090002674011213D3740290006BF09000DF
:101FEE0099021539900050121460FFE5F090009F91
:101FFE00F0EFA3F0A37404F0A322E6FFEEF0A3EF3C
:10200E00F008E6FFA3EEF0A3EFF008E6FFA3EEF074
:10201E00A3EFF008E6FFA3EEF0A3EFF02290001A74
:10202E0012136190009FFFE4F0A3EFF0229000489E
:10203E00121460900050FFAEF00214607849E6FF73
:10204E0008E6A3CFF0A3EFF0784DE6FF08E6A3CFA6
:10205E00229000261213D390001A0213617BFF9078
:10206E00009F7405F0A32290002E8FF0021498901A
:10207E000026121460FFAEF090002E021460FF9046
:10208E0000A1E4F0A3EFF0A37405F0A3227BFF9070
:10209E00009F7402F0A32290010BE0540CFBE4FAB3
:1020AE00F9F8900000E0FFE4FCFDFEC3021514EE0B
:1020BE008FF090005002149890004C121460D3FFD1
:1020CE00ED9FEC95F022900028021361900034E40D
:1020DE001213D3E49000230213D390001AEF1213BD
:1020EE00D390006B229000390213617BFF90009F0A
:1020FE007404F022E6FC08E6FD25E0FFEC338FF0D9
:10210E001214987BFF2290010BE0540C22E49000F5
:10211E0007F0A322EE8FF01214987D051213F5EF3F
:10212E0078022274019000370213D3C3FDACF09FE6
:10213E00EC9E22E4FCFDFEFAF9F8C3021514784D6C
:10214E00E6FE08E6FF2290010BE05410FFE4FCFDD2
:10215E00EF2274011213D37BFF22E0FF90009FE465
:10216E00F0A32290003FF0A3F090006BF0227BFFD3
:10217E0090010BE02290010BE05420FFE4FC229032
:0C218E000007E09400229000340213616E
:052B60009000BDEFF044
:102B6500E4A3F0A3F07F27122F7D9000BEEFF07F46
:102B750037122F7D9000BFEFF09000BDE024FD607F
:102B85001B14602424FE6028240570359000BFE0E6
:102B95004494F09000BEE04498F080259000BEE09B
:102BA5004406F054E7F080199000BFE054FD800919
:102BB5009000BFE04402F054FEF09000BEE054E106
:102BC500F09000BEE0FD7F2712310A9000BFE0FDC6
:052BD5007F3702310A08
:10158800900109E054186003D20D22C20D203E03D9
:1015980002185030456F200E1A1218797BFF7A0016
:1015A800798E90009F7401F0A374D7F0120F587FC2
:1015B800038065E4900003F0900001F0A3F0C200FE
:1015C800C201D20B90010FE07022C22FD202D203C7
:1015D800C205C208C204C209C20AD210C2471221F7
:1015E800717A0079A512209B74088011C202C20387
:1015F800D205C2067A0079BB12209B7415F0120F2F
:1016080058C20EC245900001E0C39405500302176A
:10161800DD300B07C20B7F04022B6020003BD20099
:10162800122114FF60147B0C1221419000437005B5
:101638007402F0800A7401F08005E4900043F07BA6
:10164800FF7A0079D0900043E012203190010BE03E
:101658009000A1122034120F582005030216FF90A3
:101668000002E0C39405500A7F06122B6090000226
:101678008027200144900003E0FFD39414501FEF0B
:10168800540370047D118009900003E020E0077D79
:10169800227F091225DA900003E004F080597F04C4
:1016A800122B60E4900003F0D201D20FC2107BFF2E
:1016B8007A017908120F58803E7817E67039300F92
:1016C80004C20F802B1220A5602D90010BE0FF545F
:1016D8000C6004D22FD2307BFF7A0179209000432E
:1016E800E0FD12216AEDF0A3E4F0A3EFF0120F5829
:1016F800122114900000F020020302184D30473BDD
:10170800200E16121879D210E4122171900001F0FF
:10171800C208D20BC200D204227F03122B607BFFC7
:101728007A017954120F58C20ED203900001E0D307
:10173800940350030217DDC247805020044D9000E7
:1017480002E0FFD39414501DEF540370047D118000
:1017580009900002E020E0077D227F081225DA9038
:1017680000020217DD900003E0FFD39414501CEF31
:10177800540370047D118009900003E020E0077D88
:10178800227F0A1225DA900003804A30031F7F0364
:10179800122B607A01797712217C122031A374030D
:1017A800F0A37438F0120F58C20302184D200857DE
:1017B80090010BE05430FF7B30122141600E122162
:1017C80014FFE4FCFDFEEF600330382A900001E0CE
:1017D800D394285004E004F0227BFF7A01799C120C
:1017E8000F58D208E4900004F0900001F0C2097F7D
:1017F80004122B60804F900040E070497B017A0012
:101808007923120839803E900004E0FFD3941450E5
:101818001FEF540370047D118009900004E020E05C
:10182800077D227F051225DA900004E004F0801578
:10183800200912D2097F04122B60C2107BFF7A01A3
:1018480079AC120F58C20722200711D2077F041261
:101858002B60C210122114900000F0221220A56003
:101868000F122114FF6004D22FD230900000EFF045
:0E187800227F3C12338F7F0112320FD20E22DC
:0608390090009912155910
:10083F0090006BE014700302091E1470030209E7A5
:10084F00147003020A51147003020C0C2404600389
:10085F00020D52121FEC90001D1213616003020D66
:10086F005290006CE0D3940A5035E004F090001AD7
:10087F00743C1213D3300C03020D52121FEC1220D2
:10088F0065FF12338F7A0179C212217C122031A3B6
:10089F007403F0A374D8F0120F58D20C020D52E467
:1008AF0090006CF0C20C121FECE412213390002662
:1008BF00E41213D31220DA900032E41213D3900013
:1008CF0021E41213D3900039E41213D3900028E4DB
:1008DF001213D3E4F5F01220C090002EE4F5F012BD
:1008EF001498900019E41213D390001B743C12203B
:1008FF00EC7401F012211BF07BFF7A0179FD90015E
:10090F000BE0122031A37403F0A374FF020AA59029
:10091F00010BE0FB5420FFE4FCFDFEEF6023EB54E2
:10092F0010FF601D121FEC90001D74011213D3E411
:10093F0090006BF07A02792A1220F9A3740E020A42
:10094F00A5122183EF703B12214C121FEC90004433
:10095F00122122C333CE33CED8F9FF121FEC9000F1
:10096F0048EE8FF0121498784D90004C1221027AB5
:10097F0002795990009FECF0ED122000741CF012D8
:10098F000F5812215470407849E6FE08E6FF121FF7
:10099F00EC900022122122C333CE33CED8F9FF12AE
:1009AF001FEC900026EE8FF0121498784990002AD1
:1009BF001221027A02798B90009FECF0A3ED1220A6
:1009CF00017429F0120F58121FEC90001C740112C1
:1009DF0020EC7402F0020D52D3900008E09405123F
:1009EF00218D5003020A5D12211BF0122183FDEFAE
:1009FF00701D12214C121FEC1220BD9000391221D4
:100A0F00607A0279BDEE121FFB7445F0120F581277
:100A1F00215470257849E6FE08E6FF121FECEE120E
:100A2F0020759000281221607A0279E790009FEEDE
:100A3F00121FFE744FF0120F5890006B7403F002E8
:100A4F000D52D3900008E0940212218D500AE475E4
:100A5F00F00112144A020D5212211B121FEB9000CB
:100A6F004C12203ED39FE5F09E5016121FEC9000C3
:100A7F002A12146090002E122044D39FE5F09E405E
:100A8F0019E4121FE890001CE41213D37A037911B2
:100A9F001220F9A37469F0020D4F121FEC1220F30C
:100AAF0064016003020B56900050121460D394142B
:100ABF00E5F09400504D90010BE030E529900037A0
:100ACF007401122062C3943C400A121FEC9000394B
:100ADF00E41213D3121FEC121FF2747BF07BFF7A18
:100AEF0003793C020B53121FEC9000347401121364
:100AFF00D3121FEC121FF27482F07BFF7A03797806
:100B0F00020B53121FEC12203BD39FE5F09E900077
:100B1F0099401C12153990003474011213D3121F0F
:100B2F00EC121FF2748CF07BFF7A0379B4801512EC
:100B3F001539122131121FEC121FF27493F07BFF43
:100B4F007A0379F0120F58121FEC1220D46401604F
:100B5F0003020D52122086D39414E5F09400504DE9
:100B6F0090010BE030E429740112205FC3943C40E4
:100B7F000A121FEC900028E41213D3121FEC9000FE
:100B8F002E121FF574A6F07BFF7A04792C020D4FFD
:100B9F00121FEC74011220E2121FEC90002E121F94
:100BAF00F574ADF07BFF7A047968020D4F121FECDC
:100BBF0012207DD39FE5F09E9000994020121539A9
:100BCF0090002374011213D3121FEC90002E121FEA
:100BDF00F574B7F07BFF7A0479A4020D4F12153923
:100BEF0090002674011213D3121FEC90002E121FC7
:100BFF00F574BEF07BFF7A0479E0020D4FD39000BD
:100C0F0008E0941412218D501DE475F00112144A5E
:100C1F0012214C121FEC1220BD7849E6FF08E6CFD7
:100C2F00122075020D5212211B121FEB1220F364BA
:100C3F000170631220D46401705C12203B122139C1
:100C4F004008121FEC1220C64034121FEC12207DF8
:100C5F00122139400B121FEC90002A1220C9401E9E
:100C6F00121FEC122131121FDE12202B12204A12FA
:100C7F001FFE74E5F07BFF7A05791C020D4F121FE2
:100C8F00EC12202B12204A121FFE74ECF07BFF7A1D
:100C9F00057968020D4F121FEC1220F364017048A2
:100CAF0012203B1221394008121FEC1220C6401CA3
:100CBF00121FEC900037121FE112202B1220561238
:100CCF001FFE74FFF0FB7A0579AD8019121FEC122D
:100CDF00202B122056F0A3EFF07405A3F0A3F07BA6
:100CEF00FF7A0579EF120F58121FEC1220D464010E
:100CFF00705190002A122080D312213A500F121FE8
:100D0F00EC900026121460C31220CD501C121FEC61
:100D1F00121FDE12202B78491220581220917413C3
:100D2F00F07BFF7A06792A8017121FEC12202B789E
:100D3F00491220581220917419F07BFF7A06796CB2
:100D4F00120F58121FEC1220F3FF6401600A1220D9
:100D5F00D464016003020ED7122194FE6401600D6A
:100D6F0090002312136164016003020E63EF6401AC
:100D7F0070251220D4B4011FEEB4011B122194B4BC
:100D8F00011590001474011213D37A0679A712205B
:100D9F006B7431F0120F58121FEC1220F3640170B4
:100DAF001E1220D470191221946401703C9000140B
:100DBF00041213D37A0679CD12206B743B8026125E
:100DCF001FEC1220F370221220D4B4011C900023C8
:100DDF00121361B401139000141221607A0679EF97
:100DEF0012206D7446F0120F58121FEC1220DA9079
:100DFF00001412136164016003020EEC121FEC1257
:100E0F002065D39400400890001A74FE12138E9040
:100E1F000019121361FF122065D39F500B121FECA4
:100E2F001220E87404F0800690006B7402F0122117
:100E3F001B121FEB900014E41220EC122168EF122A
:100E4F001FEB12206512208C7465F07BFF7A0779F7
:100E5F0011020ECA121FEC90003712136164016069
:100E6F000A90002612136164017072900037E41229
:100E7F0013D3E412205FC3943C500B121FEC90006D
:100E8F001A740212138E7404121FE890001B1213AF
:100E9F0061FF122065C39F4009121FEC1220E874F6
:100EAF0001F090006B122168EF121FEB12206512F8
:100EBF00208C7482F07BFF7A077944120F58121F2F
:100ECF00EC122065FF02338F90006BE0D394024049
:0D0EDF000CE4121FEB90001D74011213D3E0
:010EEC0022E3
:0B2E7C009000BD1215599000C0EDF051
:102E8700E4FE9000C0E0FD14F0ED60299000BDE481
:102E970075F0011215421213486EFEE4FFEFC3945A
:102EA7000850DFEE30E007C313648CFE8004EEC3E6
:072EB70013FE0F80E8AF06D7
:012EBE0022F1
:0825DA00900099EFF0A3EDF071
:1025E200E4A3F0A3F0789D7C007D017BFF7A08795B
:1025F20019FE7F2012132290009D7455F0A374AA35
:10260200F0A374FFF090009AE09000A2F09000997D
:10261200E09000A0F0121562263601266D022652C5
:1026220003266D04266D05266D0826360926360A10
:10263200000026739000A17403F0780EE65402C4E1
:10264200333354C07814469000A3F0E4A3F0802101
:10265200E4FF74292FF8E6FE749D2FF582E434001E
:10266200F583EEF00FEFB420E980069000A174012B
:10267200F09000A1E02405FFE43390009BF0A3EF6B
:10268200F07B017A00799DFD122E7C90009BE0FC8C
:10269200A3E0249DF58274003CF583EFF07F0112E4
:1026A2002B6090009AE0FFB4220B75FE0E53FFF0F0
:1026B20043FF08800DEFB4110975FE0E53FFF0437E
:1026C200FF0190009CE02402FF90009BE03400FE9A
:1026D2007B017A00799D122E3790009AE0FFB42296
:1026E2000A75FE0353FFF343FF0822EFB411097585
:0826F200FE0353FFF343FF0454
:0126FA0022BD
:1032CE00E490009AF0EF24FD60028011782EE6B4AF
:0D32DE00110590006880039000697401F0F4
:0132EB0022C0
:102D1100E4FE900099F0304242C2427BFF7A07798B
:102D210077782990009F12200808A3122008A37425
:102D310008F0A374B1F0120F587B007A007929785A
:102D41002DE62405FD122E7C7E00782DE6242EF83A
:0B2D5100E6B50707782CE6FF1232CE33
:012D5C002254
:102FF800602A00C50BB80BEA0C1C0C800CB20CE460
:103008000D160D480D7A0DAC0E100E420E740EA65C
:0E3018000ED80F0A0F3C0F870FD2101D106844
:102AE300E4FFEF25E024C5F582E43400F583E0FC40
:102AF300A3E0D3785C96EC189650050FEFB415E27B
:102B03007814E6FEEFD39E4004180680037813166C
:102B130090010AE030E3047814A6077813E6FED3A5
:102B230094C85006EEC3940A50077814A607187683
:102B3300697814E6FFD394005002D23CEFD394019A
:102B43005002D238EFD394055002D23AEFD3940A0D
:0C2B53005002D239EFD3940F5002D23B55
:012B5F002253
:102C4D009000F4E06062E4F0D2249000F2E004F031
:102C5D00E0C394054004E4F0D2259000F5E004F0C3
:102C6D00E0C3940A4004E4F0D2279000EFE475F03D
:102C7D000112144AC39000F0E094649000EFE094C8
:102C8D00004006E4F0A3F0D2229000F1E004F0E061
:102C9D00C394FA4013E4F0D2239000F3E004F0E083
:092CAD0094044004E4F0D2262254
:03000B000231625D
:10316200C0E0C083C082C0D074FC258CF58C74662C
:10317200258AF58A9000F47401F0D0D0D082D083F1
:03318200D0E03268
:0E349500758901758CFC758A66D2A9D28C22CD
:0D34B10075FE0FEF25E0FE7403A80608224B
:1033D9001234B18002C333D8FCF452FFEFB40406AF
:0733E90075FE0FE4F5FF2261
:1034060075FE11EF5407F5FF75FE12AF058FFF75B8
:06341600FE1075FF01220B
:102DF1001234B18002C333D8FCF452FF7401A80627
:102E0100088002C333D8FC42FF75FE0B7401A8078A
:102E1100088002C333D8FC42FFEF70038DCE22EF4E
:102E2100B401038DCF22EFB402038DDE22EFB40390
:062E310004AF058FDF2253
:033FFD00010102BD
:1030B100D28075FE0443FF0175FE0343FF0175FED7
:1030C1000243FF01D28175FE0443FF0275FE0343F3
:0D30D100FF0275FE0243FF02781576012212
:0C345600C280123462D281123462D28033
:05346200E4FF0FDFFE96
:013467002242
:10334000D281D2801234622081037F0022C2811296
:0B33500034623081037F00227F0122E5
:0F347800C280C28112345DD2811234620234628A
:0834DC00123456C28002346272
:0B34C900123456123462C280023462DA
:0231CB00AE074D
:1031CD007D08AF051DEF6015C280EE30E704D2819A
:0F31DD008002C281EE25E0FE12345D80E5C280E3
:0131EC0022C0
:103185007E08E4FDD281AF061EEF6012ED25E0FD5D
:10319500C28012345D3081EEED4401FD80E8C280CD
:0231A500AF0574
:0131A7002205
:0E34A3007D087F3512310A7D0A7F760234E4FF
:100026009000991215597F1012006EEF1213C17FBE
:100036001112006E900001EF1213D37F1212007896
:10004600900002EF1213D37F13120078900003EF93
:100056001213D37F14122F7D900099121539900038
:1000660004EF1213D37F0022122F7D9000991215F0
:0C0076003922122F7D90009912153922BA
:0531ED00900099EFF0D5
:1031F200E47F20122F7D900099E06006EF4401FFEA
:0D3202008004EF54FEFFAD077F2002310A6B
:05320F0090009AEFF0B1
:10321400E47F27122F7D90009AE06006EF4401FFBF
:0D3224008004EF54FEFFAD077F2702310A42
:05338F0090009CEFF02E
:10339400E47F25122F7DEF54C0FF90009CE04FFD89
:0533A4007F2502310A43
:0532310090009AEFF08F
:10323600E47F20122F7D90009AE06006EF54FBFF9A
:0D3246008004EF4404FFAD077F2002310A31
:0734E4008FFEAF058FFF22F0
:0634EB008FFEAEFFAF06EC
:0134F10022B8
:10310A009000C0EFF0A3EDF01233407F0C1231CBE8
:10311A001234C99000C0E0FF1231CB1234C99000BA
:0C312A00C1E0FF1231CB1234C90234782E
:052F7D009000C0EFF020
:102F8200E4A3F01233407F0C1231CB1234C990000B
:102F9200C0E0FF1231CB1234C91233407F0D12311F
:102FA200CB1234C91231859000C1EFF01234DC1219
:072FB20034789000C1E0FF3C
:012FB90022F5
:1031360090009EE4F0A3740AF07B147A007D0222CC
:1031460090006FF090006EF0900070F090006DF0BF
:0C31560022F0E490009EF0A3F0FBFA22AF
:1031A800E4FB7D04FF123272E4FB7D047F011232DE
:1031B80072E4FB7D047F02123272E4FB7D047F031C
:0331C8000232725E
:1018860030301BC230E4900113F07813F6121AF3CD
:10189600FD7F03122F017402123146D2432220210A
:1018A60006203D03300D64202A05D22AD23022902C
:1018B600006FE06402600E123136E4FF122F0190D1
:1018C600006F7403F090006EE06402600E12313611
:1018D6007F01122F0190006E7403F0900070E06497
:1018E60002600E1231367F02122F019000707403CF
:1018F600F090006DE064027003021ABD1231367F6B
:1019060003122F0190006D7403F022302A0CC22AB4
:10191600C22CC22BC22EC22FD247780EE6FF70030E
:101926000219E364037020202C07D22CC22B02314B
:10193600A8E490009E121ABE7D017F03122F017447
:10194600011231460219DA202B0DD22BC22CD230CD
:10195600E4900114F0807D900113E0C3940150558A
:10196600E004F0A3E014601A146027146034240322
:10197600706290006FE06404605A7B017D04E4FFAE
:10198600802E90006EE06404604A7B017D047F0136
:10199600801E900070E06404603A7B017D047F0243
:1019A600800E90006DE06404602A7B017D047F0355
:1019B600123272801F900113E0C3940F5005E004A9
:1019C600F08011E4900113F0A3E004F0E0C3940466
:1019D6004002E4F0C22EC22FC231D22D22302B0A91
:1019E600C22B1231A8D230D24722202E0C202D092C
:1019F600202F06203103021ABD900113E0FFC39485
:101A0600015004E004F022EFC394644003021AA8D4
:101A1600900113E004F0303A3090006FE0640370F8
:101A260003021ABDE490009EF0A3F07B64FA7D03E6
:101A3600FF122F0190006F7404123157FD7F0112BF
:101A46002F0190006E7402800F30391CE490009EC6
:101A5600121B28121B437401123157FD7F02122FED
:101A6600019000707402801EE490009E303B2712A5
:101A76001B28121B4374011231577D017F02122F5E
:101A8600019000707401123157FD7F03122F0190EF
:101A9600006D7402F022121ABE7D01121B4E7401F3
:101AA6008012C22EC22DC22FC231E4121AF3FD12C9
:071AB6001B4E7402123149BE
:101ABD0022F0A3F0FBFA7D01FF122F01E490009EAE
:101ACD00F0A3F0FBFA7D017F01122F01E490009E3F
:101ADD00F0A3F0FBFA7D017F02122F01E490009E2E
:101AED00F0A3F0FBFA2290009EF0A3F0FBFAFDFFAD
:101AFD00122F01E490009EF0A3F0FBFAFD7F01127E
:101B0D002F01E490009EF0A3F0FBFAFD7F02122F4F
:101B1D0001E490009EF0A3F0FBFA22F0A3F0FBFA93
:101B2D007D01FF122F0190006F7401F0E490009E73
:101B3D00F0A3F0FBFA227D017F01122F0190006EC0
:0A1B4D00227F03122F0190006F2287
:10294100023084E493A3F8E493A34003F68001F2F8
:1029510008DFF48029E493A3F85407240CC8C33397
:10296100C4540F4420C8834004F456800146F6DF66
:10297100E4800B0102040810204080902FF2E47ED5
:10298100019360BCA3FF543F30E509541FFEE4935B
:10299100A360010ECF54C025E060A840B8E493A322
:1029A100FAE493A3F8E493A3C8C582C8CAC583CA4D
:1029B100F0A3C8C582C8CAC583CADFE9DEE780BE05
:0130260000A9
:10125200E709F608DFFA8046E709F208DFFA803E7E
:1012620088828C83E709F0A3DFFA8032E309F6086B
:10127200DFFA8078E309F208DFFA807088828C83D3
:10128200E309F0A3DFFA806489828A83E0A3F60887
:10129200DFFA805889828A83E0A3F208DFFA804C61
:1012A20080D280FA80C680D4806980F28033801038
:1012B20080A680EA809A80A880DA80E280CA8033A1
:1012C20089828A83ECFAE493A3C8C582C8CCC58319
:1012D200CCF0A3C8C582C8CCC583CCDFE9DEE780E9
:1012E2000D89828A83E493A3F608DFF9ECFAA9F068
:1012F200EDFB2289828A83ECFAE0A3C8C582C8CCBE
:10130200C583CCF0A3C8C582C8CCC583CCDFEADED6
:10131200E880DB89828A83E493A3F208DFF980CC38
:1013220088F0EF60010E4E60C388F0ED2402B40431
:101332000050B9F582EB2402B4040050AF232345D8
:0613420082239012A27349
:10134800BB010689828A83E0225002E722BBFE02A3
:09135800E32289828A83E49322D6
:10136100BB010CE58229F582E5833AF583E0225041
:1013710006E92582F8E622BBFE06E92582F8E2228B
:0D138100E58229F582E5833AF583E49322A5
:10138E00BB010FF8E58229F582E5833AF583E02863
:10139E00F0225009C58229F8E58226F622BBFE0905
:1013AE00C58229F8E22582F222F8EA2583F583E93F
:0313BE009328224F
:1013C100BB010689828A83F0225002F722BBFE010B
:0213D100F32205
:1013D300F8BB010DE58229F582E5833AF583E8F050
:1013E300225006E92582C8F622BBFE05E92582C8FC
:0213F300F222E4
:1013F500BC000BBE0029EF8DF084FFADF022E4CCDC
:10140500F875F008EF2FFFEE33FEEC33FCEE9DECA4
:10141500984005FCEE9DFE0FD5F0E9E4CEFD22EDEA
:10142500F8F5F0EE8420D21CFEADF075F008EF2F34
:10143500FFED33FD4007985006D5F0F222C398FD25
:051445000FD5F0EA22C2
:10144A00C5F0F8A3E028F0C5F0F8E582158270022D
:06145A001583E038F022CA
:10146000BB0110E58229F582E5833AF583E0F5F0CA
:10147000A3E0225009E92582F886F008E622BBFEA7
:101480000AE92582F8E2F5F008E222E5832AF583ED
:08149000E993F5F0A3E99322B2
:10149800F8BB0111E58229F582E5833AF583E8F086
:1014A800E5F0A3F0225009E92582C8F608A6F02243
:0D14B800BBFE09E92582C8F2E5F008F2222A
:1014C500E88FF0A4CC8BF0A42CFCE98EF0A42CFCC6
:1014D5008AF0EDA42CFCEA8EF0A4CDA8F08BF0A444
:1014E5002DCC3825F0FDE98FF0A42CCD35F0FCEBA3
:1014F5008EF0A4FEA9F0EB8FF0A4CFC5F02ECD3968
:0F150500FEE43CFCEAA42DCE35F0FDE43CFC22D4
:10151400EB9FF5F0EA9E42F0E99D42F0E89C45F02D
:0115240022A4
:10152500E86010ECA2E713FCED13FDEE13FEEF13DC
:04153500FFD8F022C9
:09153900E0FBA3E0FAA3E0F922B3
:10154200F8E0FBA3A3E0F925F0F0E5821582700232
:071552001583E0FA38F022D6
:09155900EBF0A3EAF0A3E9F02293
:10156200D083D082F8E4937012740193700DA3A318
:1015720093F8740193F5828883E47374029368602C
:06158200EFA3A3A380DF2C
:100EED00E508249FF582E43400F583E0050822909F
:100EFD00009C30180390009FE475F001121542021A
:100F0D0013482011E97F2ED2118018EF540F249031
:100F1D00D43440D4FF30150BEF24BFB41A00500366
:100F2D002461FFE50960021509050CE50C70020549
:100F3D000B30180E90009CE475F001121542EF0273
:100F4D0013C10234877403D2188003E4C218F50864
:100F5D0090009C121559E4F509F50BF50CE50960A7
:100F6D00077F20120F3080F5750AFFC212C211C221
:100F7D0013C214C216C217C219120EFCFF700D3027
:100F8D0018057F00120F41AF0CAE0B22B4255FC2C6
:100F9D00D5C215120EFCFF24D0B40A00501A75F0FC
:100FAD000A780930D50508B6FF0106C6A426F62035
:100FBD00D5047002D21480D924CFB41A00EF500496
:100FCD00C2E5D215021142D21280C6D21180C0D212
:100FDD001380BCD2D580BAD21680B47F20120F30C8
:100FED002013077401B5090040F1120EEDFF120F29
:100FFD0030020F6AD219D2178095120EEDFB120E28
:10100D00EDFA120EEDF94A4B700679137A127BFF49
:10101D0020132EE509602A7E008E8275830012133F
:10102D006160060EEE650A70F0C2D5EBC0E0EAC055
:10103D00E0E9C0E0EE121189D0E0F9D0E0FAD0E09D
:10104D00FB121348FF60AAEBC0E0EAC0E0E9C0E084
:10105D00120F30D0E02401F9D0E03400FAD0E0FBDB
:10106D00E50A0460DCD50AD980877BFF7A11798582
:10107D00D213809C791080027908C217C21980089A
:10108D00D2D5790A8004790AC2D5E50A047002F531
:10109D000AE4FAFDFEFF120EEDFC7B08201213127E
:1010AD000EEDFD7B1030110A120EEDFE120EEDFF4E
:1010BD007B20EC3382D592D55013C3E43011069FBB
:1010CD00FFE49EFEE42012039DFDE49CFCE4CBF8BE
:1010DD00C212EC700CCFCECDCCE824F8F870F380B2
:1010ED0017C3EF33FFEE33FEED33FDEC33FCEB3383
:1010FD00FB994002FB0FD8E9EB301205F8D0E0C4A4
:10110D0048B212C0E00AEC4D4E4F78207B0070C201
:10111D00EAB50A0040BCC0E012118BD0F0D0E0203F
:10112D001204C4C0E0C4B212C0F0120F19D0F0D531
:10113D00F0EB020F6A1215621007531081580FD889
:10114D004C0FD44210854F108D44108D490FED4337
:08115D0010935510774610773E
:10116500451077471233500FDC2D0FE02E10032B5F
:101175000FE423100120121C2A0F9C4800000FFBCE
:101185003F3F3F00790AA2D5201414301609B91043
:10119500020404B9080104A2D52017025001042055
:1011A50013689213B509005034C0E07F203014193C
:1011B5007F30A21372177216500F1211E2C213C2BA
:1011C50017C216C2197F30800F301603E9C0E0122E
:1011D5000F30301603D0E0F9D0E0B509CC30161742
:1011E5007F30B9100C120F307F583015077F78808B
:1011F50003B90803120F303013057F2D020F307F1E
:10120500202019F87F2B2017F322921380CF286E08
:10121500756C6C2900D212120EED3012F8C21278DC
:101225000930D50108F6020F9C2D50434958120E7E
:10123500ED2403B405004001E490122E93120F2112
:0D124500743A120F21D214750904021081B1
:00000001FF

Binary file not shown.

File diff suppressed because one or more lines are too long

View File

@ -504,6 +504,18 @@
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
<bShared>0</bShared> <bShared>0</bShared>
</File> </File>
<File>
<GroupNumber>2</GroupNumber>
<FileNumber>23</FileNumber>
<FileType>1</FileType>
<tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\UsrSrc\display\display_ui.c</PathWithFileName>
<FilenameWithoutPath>display_ui.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group> </Group>
</ProjectOpt> </ProjectOpt>

View File

@ -324,7 +324,7 @@
<MiscControls></MiscControls> <MiscControls></MiscControls>
<Define></Define> <Define></Define>
<Undefine></Undefine> <Undefine></Undefine>
<IncludePath>..\UsrInc\adc;..\UsrInc\charger;..\UsrInc\discharge;..\UsrInc\gpio;..\UsrInc\hall;..\UsrInc\i2c_simu;..\UsrInc\inc;..\UsrInc\key;..\UsrInc\led;..\UsrInc\mtp;..\UsrInc\pwm;..\UsrInc\sleep;..\UsrInc\system;..\UsrInc\uart;..\UsrInc\userapp;..\UsrInc\vox;..\UsrInc\vox_comm;..\UsrInc\watchdog;..\UsrInc\bat;..\UsrInc\timer;..\UsrInc\pmu;..\UsrInc\user</IncludePath> <IncludePath>..\UsrInc\adc;..\UsrInc\charger;..\UsrInc\discharge;..\UsrInc\gpio;..\UsrInc\hall;..\UsrInc\i2c_simu;..\UsrInc\inc;..\UsrInc\key;..\UsrInc\led;..\UsrInc\mtp;..\UsrInc\pwm;..\UsrInc\sleep;..\UsrInc\system;..\UsrInc\uart;..\UsrInc\userapp;..\UsrInc\vox;..\UsrInc\vox_comm;..\UsrInc\watchdog;..\UsrInc\bat;..\UsrInc\timer;..\UsrInc\pmu;..\UsrInc\user;..\UsrInc\display</IncludePath>
</VariousControls> </VariousControls>
</C51> </C51>
<Ax51> <Ax51>
@ -491,6 +491,11 @@
<FileType>1</FileType> <FileType>1</FileType>
<FilePath>..\UsrSrc\user\user.c</FilePath> <FilePath>..\UsrSrc\user\user.c</FilePath>
</File> </File>
<File>
<FileName>display_ui.c</FileName>
<FileType>1</FileType>
<FilePath>..\UsrSrc\display\display_ui.c</FilePath>
</File>
</Files> </Files>
</Group> </Group>
</Groups> </Groups>

View File

@ -38,16 +38,16 @@ extern uint8_t ADC_Chn_Num;
extern idata uint16_t Vbat_Adc; extern idata uint16_t Vbat_Adc;
extern idata uint16_t g_Vpmu_Adc; extern idata int16 g_Vpmu_Adc;
extern idata uint16_t g_Vntc_Adc;
extern idata int16 g_Vntc_Adc;
#if 0
extern idata uint16_t g_Vbjt_Adc; extern idata uint16_t g_Vbjt_Adc;
extern idata uint16_t g_Vp13_Adc; extern idata uint16_t g_Vp13_Adc;
extern idata uint16_t g_Vref_Adc; extern idata uint16_t g_Vref_Adc;
#endif
extern uint8_t g_PMU_ADC_Chn; extern uint8_t g_PMU_ADC_Chn;
extern idata uint16_t g_pmu_Adc_Ivol; extern idata uint16_t g_pmu_Adc_Ivol;
@ -100,6 +100,83 @@ typedef enum {
}PMU_ADC_CHANNELS_E; }PMU_ADC_CHANNELS_E;
/* ADC ¿ØÖƼĴæÆ÷0 -- ADC_Ctrl0 */
#define ADC_EN_Pos (7U)
#define ADC_EN_Pos_Msk (0x1UL << ADC_EN_Pos)
#define ADC_EN ADC_EN_Pos_Msk
#define ADC_AVG_NUM_Pos (4U)
#define ADC_AVG_NUM_4_Pos_Msk (0x0UL << ADC_AVG_NUM_Pos)
#define ADC_AVG_NUM_4 ADC_AVG_NUM_4_Pos_Msk
#define ADC_AVG_NUM_8_Pos_Msk (0x1UL << ADC_AVG_NUM_Pos)
#define ADC_AVG_NUM_8 ADC_AVG_NUM_8_Pos_Msk
#define ADC_AVG_NUM_16_Pos_Msk (0x2UL << ADC_AVG_NUM_Pos)
#define ADC_AVG_NUM_16 ADC_AVG_NUM_16_Pos_Msk
#define ADC_AVG_NUM_32_Pos_Msk (0x3UL << ADC_AVG_NUM_Pos)
#define ADC_AVG_NUM_32 ADC_AVG_NUM_32_Pos_Msk
#define ADC_AVG_NUM_64_Pos_Msk (0x4UL << ADC_AVG_NUM_Pos)
#define ADC_AVG_NUM_64 ADC_AVG_NUM_64_Pos_Msk
#define ADC_SINGLE_EN_Pos (3U)
#define ADC_SINGLE_EN_Pos_Msk (0x1UL << ADC_SINGLE_EN_Pos)
#define ADC_SINGLE_EN ADC_SINGLE_EN_Pos_Msk
#define ADC_CLK_DIV_Pos (2U)
#define ADC_CLK_DIV_16_Pos_Msk (0x0UL << ADC_CLK_DIV_Pos)
#define ADC_CLK_DIV_16 ADC_CLK_DIV_16_Pos_Msk
#define ADC_CLK_DIV_24_Pos_Msk (0x1UL << ADC_CLK_DIV_Pos)
#define ADC_CLK_DIV_24 ADC_CLK_DIV_24_Pos_Msk
#define ADC_CLK_DIV_32_Pos_Msk (0x2UL << ADC_CLK_DIV_Pos)
#define ADC_CLK_DIV_32 ADC_CLK_DIV_32_Pos_Msk
#define ADC_CLK_DIV_48_Pos_Msk (0x3UL << ADC_CLK_DIV_Pos)
#define ADC_CLK_DIV_48 ADC_CLK_DIV_48_Pos_Msk
#define ADC_CLK_DIV_64_Pos_Msk (0x4UL << ADC_CLK_DIV_Pos)
#define ADC_CLK_DIV_64 ADC_CLK_DIV_64_Pos_Msk
#define ADC_CLK_DIV_96_Pos_Msk (0x5UL << ADC_CLK_DIV_Pos)
#define ADC_CLK_DIV_96 ADC_CLK_DIV_96_Pos_Msk
#define ADC_CLK_DIV_128_Pos_Msk (0x6UL << ADC_CLK_DIV_Pos)
#define ADC_CLK_DIV_128 ADC_CLK_DIV_128_Pos_Msk
#define ADC_CLK_DIV_160_Pos_Msk (0x7UL << ADC_CLK_DIV_Pos)
#define ADC_CLK_DIV_160 ADC_CLK_DIV_160_Pos_Msk
/* ADC¿ØÖƼĴæÆ÷1 -- ADC_Ctrl1 */
#define ADC_START_Pos (7U)
#define ADC_START_Pos_Msk (0x1UL << ADC_START_Pos)
#define ADC_START ADC_START_Pos_Msk
#define ADC_CHN_4_Pos (4U)
#define ADC_CHN_4_Pos_Msk (0x1UL << ADC_CHN_4_Pos)
#define ADC_CHN_4 ADC_CHN_4_Pos_Msk
#define ADC_CHN_3_Pos (3U)
#define ADC_CHN_3_Pos_Msk (0x1UL << ADC_CHN_3_Pos)
#define ADC_CHN_3 ADC_CHN_3_Pos_Msk
#define ADC_CHN_2_Pos (2U)
#define ADC_CHN_2_Pos_Msk (0x1UL << ADC_CHN_2_Pos)
#define ADC_CHN_2 ADC_CHN_2_Pos_Msk
#define ADC_CHN_1_Pos (1U)
#define ADC_CHN_1_Pos_Msk (0x1UL << ADC_CHN_1_Pos)
#define ADC_CHN_1 ADC_CHN_1_Pos_Msk
#define ADC_CHN_0_Pos (0U)
#define ADC_CHN_0_Pos_Msk (0x1UL << ADC_CHN_0_Pos)
#define ADC_CHN_0 ADC_CHN_0_Pos_Msk
/******************************************************************************\ /******************************************************************************\
Functions definitions Functions definitions
\******************************************************************************/ \******************************************************************************/

View File

@ -23,25 +23,6 @@
#include "define.h" #include "define.h"
#ifdef NTC_ENABLE
extern bit CHG_NTC_Pro_Flag;
#endif
// 充电状态定义
typedef enum
{
CHG_NONE = 0x00,
CHG_PROTECT,
CHG_STA_ING, // 充电中
CHG_STA_COMPLETED, // 充电完成
} TE_CHG_STA;
extern idata TE_CHG_STA ChgStatus; // 系统状态定义
#if CHARGER_ENABLE #if CHARGER_ENABLE
/* Charger Current Setting */ /* Charger Current Setting */
@ -66,10 +47,6 @@ REG_CHG1 = CHG_CURRENT_300MA;
#define CHG_CURRENT_450MA 0x06 #define CHG_CURRENT_450MA 0x06
#define CHG_CURRENT_500MA 0x07 #define CHG_CURRENT_500MA 0x07
#define CHG_CONSTANT_CUR_TIM 1
#define DIE_OT_RECOVER_TIM 25 //NTC保护后恢复正常后等待250ms重新开启充电
extern void Charger_Init(void); extern void Charger_Init(void);
extern void Charger_Handler(void); extern void Charger_Handler(void);

View File

@ -23,12 +23,6 @@
#include "define.h" #include "define.h"
#ifdef NTC_ENABLE
extern bit Boost_NTC_Pro_Flag;
#endif
extern bit gBoost_Prepared_Flag; //Boost满足开启条件。
#if DISCHARGE_ENABLE #if DISCHARGE_ENABLE
#define BOOST_OPEN_TIM 10 #define BOOST_OPEN_TIM 10

View File

@ -0,0 +1,44 @@
/*
******************************************************************************
*
* @file display_ui.h
* @brief display ui module
* @ic sy8835
*
* @version 1.0
* @date 2025/01/14 09:59:40
* @author Alex Xu
*
* Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
* All Rights Reserved
*
* History:
* Revision Date Author Desc
* 1.0.0 2025/01/14 Alex build this file
******************************************************************************
*/
#ifndef __DISPLAY_UI_H__
#define __DISPLAY_UI_H__
/*_____ I N C L U D E S ____________________________________________________*/
#include "define.h"
/******************************************************************************\
Macro definitions
\******************************************************************************/
/******************************************************************************\
Variables definitions
\******************************************************************************/
extern uint8_t LED_On_Timer; //ledÁÁʱ¼ä¼ÆÊ±
/******************************************************************************\
Functions definitions
\******************************************************************************/
extern void LED_Display_App(void);
#endif

View File

@ -43,7 +43,7 @@ typedef enum{
extern CoverStatus_E CoverStatus; extern CoverStatus_E CoverStatus;
extern bit CoverEvent_Flg; extern bit CoverEvent_Flg;
extern bit CoverEvent_Flg_led;
#if HALL_ENABLE #if HALL_ENABLE
/******************************************************************************\ /******************************************************************************\

View File

@ -25,7 +25,13 @@
/******************************************************************************\ /******************************************************************************\
Macro definitions Macro definitions
\******************************************************************************/ \******************************************************************************/
/*Charger Module Config Para Setting*/ /*程序版本第一个数代表在硬件存在改动不能兼容之前版本时加1
1
*/
#define FW_VER0 0x01 //程序版本0:代表在硬件存在改动不能兼容之前版本时加1
#define FW_VER1 0x01 //程序版本1:代表在功能存在改动时加1
#define FW_VER2 0x02 //程序版本2:代表在软件调试出现不同的测试版本时改动时加1
#if 0 #if 0
#if 0 #if 0
@ -117,7 +123,7 @@
使2.5V的上拉LDO有温漂误差使 使2.5V的上拉LDO有温漂误差使
*/ */
#define NONE_NTC 984 //NTC引脚悬空码值 #define NONE_NTC 1000 //NTC引脚悬空码值
#define T_N20C 927 //-20℃ NTC:953K #define T_N20C 927 //-20℃ NTC:953K
@ -160,6 +166,8 @@
#define T_80C 113 //80℃ NTC:12.4K #define T_80C 113 //80℃ NTC:12.4K
#endif #endif
/* 功能选择和配置。 */
/* NTC保护标准选择JEITA or IEC.*/ /* NTC保护标准选择JEITA or IEC.*/
#define NTC_JEITA 1 #define NTC_JEITA 1
@ -253,7 +261,7 @@
/* LED 驱动输出限流配置。 */ /* LED 驱动输出限流配置。 */
#define LED_DRV_LIMIT_SET P1_DRV_400 //配置P10-P13限流输出2个档位限流电阻400Ω、800Ω。 #define LED_DRV_LIMIT_SET P1_DRV_400 //配置P10-P13限流输出2个档位限流电阻配置P1_DRV_400:400Ω、P1_DRV_800:800Ω。
/* KEY And Hall Module Setting. */ /* KEY And Hall Module Setting. */
@ -281,22 +289,24 @@
#define VOX_CHG_FULL_5V_LEAST_CNT 40 //配置关盖条件下VOX 耳机充满后VOX输出5V持续时间100ms * 40 #define VOX_CHG_FULL_5V_LEAST_CNT 40 //配置关盖条件下VOX 耳机充满后VOX输出5V持续时间100ms * 40
#define VOX_OPEN_VOUT_5V_DEBOUNCE 5 //配置开盖动作后VOX 输出5V持续时间100ms * 5单位ms。 #define HALL_OPEN_VOX_5V_DEBOUNCE 5 //配置开盖动作后VOX 输出5V持续时间100ms * 5单位ms。
#define VOX_OPEN_VOUT_0V_DEBOUNCE 5 //配置开盖动作后VOX 输出0V持续时间100ms * 5单位ms。 #define HALL_OPEN_VOX_0V_DEBOUNCE 5 //配置开盖动作后VOX 输出0V持续时间100ms * 5单位ms。
#define VOX_CLOSE_5V_HOLD_CNT 3 //配置关盖动作后VOX 输出5V持续时间100ms * 3单位ms。 #define HALL_CLOSE_VOX_5V_HOLD_CNT 3 //配置关盖动作后VOX 输出5V持续时间100ms * 3单位ms。
/* 双向通讯协议选择 */ /* 双向通讯协议选择 */
#define JIELI 0 //杰理耳机芯片 #define JIELI 0 //杰理耳机芯片
#define ZHONGKE 0 //中科蓝讯耳机芯片 #define ZHONGKE 1 //中科蓝讯耳机芯片
#define XUANHENG 1 //玄恒耳机芯片 #define XUANHENG 0 //玄恒耳机芯片
/* Vox跟随充参数设置。(100ms调用周期) */ /* Vox跟随充参数设置。(100ms调用周期) */
#define FOLLOW_CHG_EFFICIENCY //配置跟随充类型0、效率优先1、速度优先。
#define VOX_CV_TC_CURRENT 20 //耳机充电处于CV/TC阶段的电流值单位mA。 #define VOX_CV_TC_CURRENT 20 //耳机充电处于CV/TC阶段的电流值单位mA。
#define VOX_FOLLOW_CHG_INIT_CNT 10 //启动跟随充VOX VOUT输出最高电压持续时间1s单位ms。。 #define VOX_FOLLOW_CHG_INIT_CNT 10 //启动跟随充VOX VOUT输出最高电压持续时间1s单位ms。。
@ -311,6 +321,23 @@
#define VOUT_MIN_THD BOOST_VPMID_3_7V //VOX VOUT输出最小阈值。 #define VOUT_MIN_THD BOOST_VPMID_3_7V //VOX VOUT输出最小阈值。
#define IVOL_Threshold_Neg(Ivol) ( Ivol / 5 ) << 2 //VOL 调压下限阈值电流80% * IvolIVOL≥这个值则降压。
#define IVOR_Threshold_Neg(Ivor) ( Ivor / 5 ) << 2 //VOR 调压下限阈值电流80% * IvorIVOR≥这个值则降压。
#define IVOL_Threshold_Pos(Ivol) ( Ivol ) << 1 //VOL 调压上限阈值电流2倍 * Ivol当Ivol大于THP阈值电流则说明耳机状态发生改变TC跳转到CC或Recharge复充需要重启跟随充。
#define IVOR_Threshold_Pos(Ivor) ( Ivor ) << 1 //VOR 调压上限阈值电流2倍 * Ivor当Ivor大于THP阈值电流则说明耳机状态发生改变TC跳转到CC或Recharge复充需要重启跟随充。
/* PWM Module Setting */
/*PWM计数器时钟Fre(pwm) = Fre(sys)/PWM_PRE = 11.0592M / n^PWM_PRE = 11.0592M / 8 = 1.38MHz,
PWM_REL = 255 - 1.38M / 10K = 255-138 = 117
nPWM_CMP = 117 + 150 * (1-50%) = 192
*/
#define PWM_CLKFRE_SET 3 //配置PWM计数时钟频率对应寄存器PWM_PREPWM计数器时钟Fre(pwm) = Fre(sys)/PWM_PRE = 12M / n^PWM_PRE = 12M / 8 = 1.5MHz,
#define PWM_RELOAD_SET PWM_REL_VALUE //配置PWM输出占空比对应寄存器PWM_REL需和PWM_CMP配合使用。
/*Sleep Module Setting*/ /*Sleep Module Setting*/
/*Enter Sleep Time Debounce*/ /*Enter Sleep Time Debounce*/
@ -318,11 +345,44 @@
#define ENTER_SHIPMODE_CNT 5 //进入ShipMode 延迟时间,单位:秒 #define ENTER_SHIPMODE_CNT 5 //进入ShipMode 延迟时间,单位:秒
/******************************************************************************\ /******************************************************************************\
Variables definitions Variables definitions
\******************************************************************************/ \******************************************************************************/
/* 标志位和状态位。 */
/* NTC充放电保护标志位 */
extern bit CHG_NTC_Pro_Flag; //充电NTC保护标志位TRUE有NTC保护:FAULSE:无NTC保护
extern bit Boost_NTC_Pro_Flag; //放电电NTC保护标志位TRUE有NTC保护:FAULSE:无NTC保护
/* Charger状态定义 */
// 充电状态定义
typedef enum
{
CHG_NONE = 0x00,
CHG_PROTECT,
CHG_STA_ING, // 充电中
CHG_STA_COMPLETED, // 充电完成
} TE_CHG_STA;
extern idata TE_CHG_STA ChgStatus; // Charger状态定义
/* Boost相关标志位 */
extern bit gBoost_Prepared_Flag; //Boost满足开启条件TRUE:Boost无保护可以开启FAULSE:Boost有保护无法正常开启。
/* LED UI显示相关标志位 */
extern bit CoverEvent_Flg_led; //Hall开关盖动作标志位用于LED UI显示TRUE:有开关盖动作。
extern bit Earphone_Chg_Flag_led; //耳机出入盒标志位用于LED UI显示TRUE:有耳机入盒动作。
extern bit Key_Press_short_irq_led; //按键短按动作标志位用于LED UI显示TRUE:有按键短按动作。
extern bit LED_On_Flag; //led显示复位标志位TRUE:灯效复位。
/******************************************************************************\ /******************************************************************************\
UserCfg.Functions definitions UserCfg.Functions definitions
\******************************************************************************/ \******************************************************************************/

View File

@ -52,12 +52,6 @@
#define VOX_FOLLOW_CHG 1 //1701Bytes #define VOX_FOLLOW_CHG 1 //1701Bytes
#if VOX_FOLLOW_CHG
#define FOLLOW_CHG_EFFICIENCY //跟随充两只类型1、效率优先2、速度优先。
#endif
#if VOX_ENABLE #if VOX_ENABLE
#define VOX_TX //959Bytes #define VOX_TX //959Bytes
@ -76,10 +70,6 @@
#if ADC_ENABLE #if ADC_ENABLE
#define NTC_JEITA 1
#define NTC_IEC 0
#define NTC_ENABLE //513Bytes JEITA #define NTC_ENABLE //513Bytes JEITA
#endif #endif
@ -98,10 +88,10 @@
#define _DEBUG_VOX #define _DEBUG_VOX
#define _DEBUG_FOLLOW #define _DEBUG_FOLLOW
#define _DEBUG_HALL #define _DEBUG_HALL
// #define _DEBUG_ADC #define _DEBUG_ADC
// #define _DEBUG_DISCHARGE // #define _DEBUG_DISCHARGE
// #define _DEBUG_CHARGER // #define _DEBUG_CHARGER
#define _DEBUG_SLEEP // #define _DEBUG_SLEEP
// #define _DEBUG_BAT // #define _DEBUG_BAT
//#define TEST_MODE //#define TEST_MODE
@ -149,7 +139,7 @@ typedef enum{false = 0, true = !false} bool;
#include "stdlib.h" #include "stdlib.h"
#endif #endif
#include "reg3315.h" #include "reg8835.h"
#include "uart.h" #include "uart.h"

View File

@ -1,8 +1,8 @@
/* /*
****************************************************************************** ******************************************************************************
* *
* @file reg3315.h * @file reg8835.h
* @brief Header file for TP3315 microcontroller. * @brief Header file for sy8835 microcontroller.
* @ic sy8835 * @ic sy8835
* *
* @version 1.0 * @version 1.0

View File

@ -35,7 +35,6 @@
#if KEY_ENABLE #if KEY_ENABLE
extern bit Key_Press_short_irq;
extern bit Key_Press_l_irq; extern bit Key_Press_l_irq;
extern bit Key_Press_ll_irq; extern bit Key_Press_ll_irq;

View File

@ -53,6 +53,7 @@ typedef struct {
}s_sys_state; }s_sys_state;
extern xdata s_sys_state Systerm_State; extern xdata s_sys_state Systerm_State;
extern bit Wkup_Earphone_Flag; //保护消失后,需要升压唤醒耳机标志位 extern bit Wkup_Earphone_Flag; //保护消失后,需要升压唤醒耳机标志位
/******************************************************************************\ /******************************************************************************\
@ -62,8 +63,6 @@ extern bit Wkup_Earphone_Flag; //
extern uint8_t LED_On_Timer; //led亮时间计时 extern uint8_t LED_On_Timer; //led亮时间计时
extern bit LED_On_Flag;
extern void UserAPP(void); extern void UserAPP(void);
#endif #endif

View File

@ -36,8 +36,6 @@
extern bit Vox_Vout_Enable; extern bit Vox_Vout_Enable;
extern bit Earphone_Chg_Flag; //耳机出入盒标志位
extern bit Vox_Output_Short_Flag; extern bit Vox_Output_Short_Flag;
#define IVOX_THN 20 //耳机跟随充电流下降阈值 #define IVOX_THN 20 //耳机跟随充电流下降阈值

View File

@ -22,18 +22,11 @@
/******************************************************************************\ /******************************************************************************\
Macro definitions Macro definitions
\******************************************************************************/ \******************************************************************************/
/*程序版本第一个数代表在硬件存在改动不能兼容之前版本时加1
1
*/
#define FW_VER0 0x01 //程序版本0:代表在硬件存在改动不能兼容之前版本时加1
#define FW_VER1 0x01 //程序版本1:代表在功能存在改动时加1
#define FW_VER2 0x02 //程序版本2:代表在软件调试出现不同的测试版本时改动时加1
/******************************************************************************\ /******************************************************************************\
Variables definitions Variables definitions
\******************************************************************************/ \******************************************************************************/
char code Version_Addr[3] = {FW_VER0,FW_VER1,FW_VER2}; //设置ROM绝对地址存放软版本两个参数存于ROM的3070、3071、3072位置处,小端模式存储。 char code Version_Addr[3] = {FW_VER0,FW_VER1,FW_VER2}; //设置ROM绝对地址存放软版本两个参数存于ROM的倒数3Bytes位置处小端模式存储。

View File

@ -31,39 +31,31 @@
/******************************************************************************\ /******************************************************************************\
Variables definitions Variables definitions
\******************************************************************************/ \******************************************************************************/
int8_t ADC_Offset_Error = 0; //ADC Offset Error 校准值寄存器 int8_t ADC_Offset_Error; //ADC Offset Error 校准值寄存器
//int8_t ADC_Gain_Error = 0; //ADC Gain Error 校准值寄存器 uint8_t ADC_Chn_Num;
uint8_t ADC_Chn_Num = 0; idata uint16_t Vbat_Adc;
idata uint16_t Vbat_Adc = 0; idata int16 g_Vpmu_Adc;
idata uint16_t g_Vpmu_Adc = 0; idata int16 g_Vntc_Adc;
idata uint16_t g_Vntc_Adc = 0; uint8_t g_PMU_ADC_Chn;
#if 0
idata uint16_t g_Vbjt_Adc = 0;
idata uint16_t g_Vp13_Adc = 0; idata uint16_t g_pmu_Adc_Ivol;
idata uint16_t g_Vref_Adc = 0; idata uint16_t g_pmu_Adc_Vin;
#endif
uint8_t g_PMU_ADC_Chn = 0;
idata uint16_t g_pmu_Adc_Ivol = 0; idata uint16_t g_pmu_Adc_Vpmid;
idata uint16_t g_pmu_Adc_Vin = 0; idata uint16_t g_pmu_Adc_Vor;
idata uint16_t g_pmu_Adc_Vpmid = 0; idata uint16_t g_pmu_Adc_Vol;
idata uint16_t g_pmu_Adc_Vor = 0; idata uint16_t g_pmu_Adc_Vdd;
idata uint16_t g_pmu_Adc_Vol = 0; idata uint16_t g_pmu_Adc_Ivor;
idata uint16_t g_pmu_Adc_Vdd = 0;
idata uint16_t g_pmu_Adc_Ivor = 0;
/******************************************************************************\ /******************************************************************************\
Functions definitions Functions definitions
@ -90,10 +82,9 @@ void Adc_Init(void)
SFRADDR = MFP_CTL0; //Set P14 As ADC1 For NTC SFRADDR = MFP_CTL0; //Set P14 As ADC1 For NTC
SFRDATA |= 0x10; SFRDATA |= 0x10;
ExtSfr_Write(ADC_CTL0,0xAB); //0B10101001,0xA9--ADC EN;Average time:16; Single mode; ADC CLK divided by 24=460k // ExtSfr_Write(ADC_CTL0,0xAB); //0B10101001,0xA9--ADC EN;Average time:16; Single mode; ADC CLK divided by 24=460k
// SFRADDR = ADC_IntEn; //Enable ADC Interrupt.b[4:0]:ADC4-ADC0 ExtSfr_Write(ADC_CTL0, ( ADC_EN | ADC_AVG_NUM_16 | ADC_SINGLE_EN | ADC_CLK_DIV_48 ) ); //0B10101001,0xA9--ADC EN;Average time:16; Single mode; ADC CLK divided by 24=460k
// SFRDATA |= 0x03;
SFRADDR = ADC_OFFSET; SFRADDR = ADC_OFFSET;
ADC_Offset_Error = SFRDATA; ADC_Offset_Error = SFRDATA;
@ -115,16 +106,22 @@ void Adc_Init(void)
*/ */
void PMU_ADC_Chn_Data(PMU_ADC_CHANNELS_E pmu_Adc_Chn) void PMU_ADC_Chn_Data(PMU_ADC_CHANNELS_E pmu_Adc_Chn)
{ {
if( ADC_IntFlag & 0x01 ) if( ADC_IntFlag & ADC_PMU_CH0 )
{ {
ADC_IntFlag = 0x01; ADC_IntFlag = ADC_PMU_CH0;
g_Vpmu_Adc = ExtSfr_Read(ADC_CH0_L); g_Vpmu_Adc = ExtSfr_Read(ADC_CH0_L);
g_Vpmu_Adc |= (uint16_t)( ( ExtSfr_Read(ADC_CH0_H) & 0x03 ) << 8 ); g_Vpmu_Adc |= (uint16_t)( ( ExtSfr_Read(ADC_CH0_H) & 0x03 ) << 8 );
I2cSfr_Write( XSEN_CTRL , ( 0x08 | pmu_Adc_Chn ) ); //Xsen切换通道后需要等待至少100us后ADC再进行采样。 I2cSfr_Write( XSEN_CTRL , ( 0x08 | pmu_Adc_Chn ) ); //Xsen切换通道后需要等待至少100us后ADC再进行采样。
g_Vpmu_Adc = ((uint32_t)( g_Vpmu_Adc - ADC_Offset_Error ) * 2500) >> 10 ; //ADC的LSB = 2500mV / 1024 = 2.44mV g_Vpmu_Adc = ( (int32)( (int16)( g_Vpmu_Adc - ADC_Offset_Error ) ) * 2500 ) >> 10 ; //ADC的LSB = 2500mV / 1024 = 2.44mV
if( g_Vpmu_Adc < 0 )
{
g_Vpmu_Adc = 0;
}
/*获取xSen对应的ADC值*/ /*获取xSen对应的ADC值*/
switch (g_PMU_ADC_Chn) switch (g_PMU_ADC_Chn)
@ -160,6 +157,7 @@ void PMU_ADC_Chn_Data(PMU_ADC_CHANNELS_E pmu_Adc_Chn)
case pmu_ADC_IVOR: case pmu_ADC_IVOR:
g_pmu_Adc_Ivor = g_Vpmu_Adc >> 2; //采样比例4mV/mA g_pmu_Adc_Ivor = g_Vpmu_Adc >> 2; //采样比例4mV/mA
break; break;
default: default:
break; break;
} }
@ -167,14 +165,14 @@ void PMU_ADC_Chn_Data(PMU_ADC_CHANNELS_E pmu_Adc_Chn)
g_PMU_ADC_Chn = pmu_Adc_Chn; g_PMU_ADC_Chn = pmu_Adc_Chn;
ADC_CTL1 = 0x80 | ( ADC_PMU_CH0 ); //ADC Start Enable,Set Channel N Enabel. ADC_CTL1 = ADC_START | ( ADC_CHN_0 ); //ADC Start Enable,Set Channel N Enabel.
} }
/* /*
******************************************************************************* *******************************************************************************
* void ADC_NTC_Data(void) * void ADC_NTC_Data(void)
* *
* Description : NTC ADC值 * Description : NTC ADC值ADC1
* *
* Arguments : NONE * Arguments : NONE
@ -186,18 +184,23 @@ void PMU_ADC_Chn_Data(PMU_ADC_CHANNELS_E pmu_Adc_Chn)
*/ */
void ADC_NTC_Data(void) void ADC_NTC_Data(void)
{ {
if( ADC_IntFlag & 0x02 ) //获取NTC ADC 码值 if( ADC_IntFlag & ADC_NTC_CH1 ) //获取NTC ADC 码值
{ {
ADC_IntFlag = 0x02; ADC_IntFlag = ADC_NTC_CH1;
g_Vntc_Adc = ExtSfr_Read(ADC_CH1_L); g_Vntc_Adc = ExtSfr_Read(ADC_CH1_L);
g_Vntc_Adc |= (uint16_t)( ( ExtSfr_Read(ADC_CH1_H) & 0x03 ) << 8 ); g_Vntc_Adc |= (uint16_t)( ( ExtSfr_Read(ADC_CH1_H) & 0x03 ) << 8 );
g_Vntc_Adc = g_Vntc_Adc - ADC_Offset_Error ; g_Vntc_Adc = g_Vntc_Adc - ADC_Offset_Error ;
if( g_Vntc_Adc < 0 )
{
g_Vntc_Adc = 0;
}
} }
ADC_CTL1 = 0x80 | ( ADC_NTC_CH1 ); //ADC Start Enable,Set Channel N Enabel. ADC_CTL1 = ADC_START | ( ADC_CHN_1 ); //ADC Start Enable,Set Channel N Enabel.
} }
#endif #endif

View File

@ -21,9 +21,9 @@
#include "adc.h" #include "adc.h"
#include "pmu.h" #include "pmu.h"
idata uint8_t bat_level = 0; idata uint8_t bat_level;
bit F_batlevel_low = 0; //ľçłŘľÍŃš bit F_batlevel_low; //ľçłŘľÍŃš
#if 0 #if 0
@ -474,15 +474,15 @@ void Bat_Gauge_Handle(void)
#define C_offset_bat_level_MAX 200 #define C_offset_bat_level_MAX 200
#define C_offset_bat_level_MIN 10 #define C_offset_bat_level_MIN 10
bit F_batlevel_protect = 0; //ľÍľçąŁť¤ bit F_batlevel_protect; //ľÍľçąŁť¤
bit F_batlevel_25p = 0; bit F_batlevel_25p;
bit F_batlevel_50p = 0; bit F_batlevel_50p;
bit F_batlevel_75p = 0; bit F_batlevel_75p;
idata uint8_t offset_bat_level = ( C_offset_bat_level_MAX + C_offset_bat_level_MIN ) / 2; idata uint8_t offset_bat_level;
/*充电电池电压会浮高,具体电压需要测试。*/ /*充电电池电压会浮高,具体电压需要测试。*/
const uint16_t Boost_batlevel_Threshold[C_batLevel_SetMax] = const uint16_t Boost_batlevel_Threshold[C_batLevel_SetMax] =

View File

@ -29,7 +29,7 @@
#include "bat.h" #include "bat.h"
#ifdef NTC_ENABLE #ifdef NTC_ENABLE
bit CHG_NTC_Pro_Flag = 0; bit CHG_NTC_Pro_Flag;
#endif #endif
idata TE_CHG_STA ChgStatus; // CHG状态定义 idata TE_CHG_STA ChgStatus; // CHG状态定义
@ -46,7 +46,7 @@ idata TE_CHG_STA ChgStatus; // CHG״̬
idata uint8_t gConstant_Cur_Max_Setting = CONSTANT_CUR_SET; //Charge最大充电电流。 idata uint8_t gConstant_Cur_Max_Setting; //Charge最大充电电流。
idata s_gCharger_Cfg gCharge_Cfg; idata s_gCharger_Cfg gCharge_Cfg;
@ -71,6 +71,8 @@ idata s_gCharger_Cfg gCharge_Cfg;
void Charger_Init(void) void Charger_Init(void)
{ {
gConstant_Cur_Max_Setting = CONSTANT_CUR_SET;
gCharge_Cfg.nTrickle_Cur = TRICKLE_CUR_SET; gCharge_Cfg.nTrickle_Cur = TRICKLE_CUR_SET;
gCharge_Cfg.nIterm_Cur = ITERM_CUR_SET; gCharge_Cfg.nIterm_Cur = ITERM_CUR_SET;
@ -78,7 +80,6 @@ void Charger_Init(void)
gCharge_Cfg.nConstant_Cur = gConstant_Cur_Max_Setting; gCharge_Cfg.nConstant_Cur = gConstant_Cur_Max_Setting;
gCharge_Cfg.nVFloat = VFLOAT_SET; gCharge_Cfg.nVFloat = VFLOAT_SET;
} }
#ifdef NTC_ENABLE #ifdef NTC_ENABLE
@ -467,9 +468,6 @@ void Charger_Handler(void)
return; return;
} }
/*各项保护都无需软件处理只处理充电超时超时后需要等VBUS重新插拔后才重新开始Charger流程。*/
ChgStatus = CHG_PROTECT;
#ifdef NTC_ENABLE #ifdef NTC_ENABLE
/*NTC Handle*/ //使能Charger前先检测NTC温度异常就不开充电。(CHIP_STA4 & 0x80):PG /*NTC Handle*/ //使能Charger前先检测NTC温度异常就不开充电。(CHIP_STA4 & 0x80):PG
@ -479,6 +477,8 @@ void Charger_Handler(void)
CHG_NTC_Pro_Flag = 1; CHG_NTC_Pro_Flag = 1;
ChgStatus = CHG_PROTECT;
return; return;
} }

View File

@ -27,10 +27,10 @@
#include "bat.h" #include "bat.h"
#ifdef NTC_ENABLE #ifdef NTC_ENABLE
bit Boost_NTC_Pro_Flag = 0; bit Boost_NTC_Pro_Flag;
#endif #endif
bit gBoost_Prepared_Flag = 0; //Boost满足开启条件。 bit gBoost_Prepared_Flag; //Boost满足开启条件。
#if DISCHARGE_ENABLE #if DISCHARGE_ENABLE
/******************************************************************************\ /******************************************************************************\
@ -41,9 +41,7 @@ bit gBoost_Prepared_Flag = 0; //Boost
Variables definitions Variables definitions
\******************************************************************************/ \******************************************************************************/
bit gBoost_UVLO_Flag;
bit gBoost_UVLO_Flag = 0;
/******************************************************************************\ /******************************************************************************\
Functions definitions Functions definitions

370
UsrSrc/display/display_ui.c Normal file
View File

@ -0,0 +1,370 @@
/*******************************************************************************
*
* @file display_ui.c
* @brief display_ui module
* @ic sy8835
*
* @version 1.0
* @date 2025/01/14 15:00:40
* @author Alex Xu
*
* Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
* All Rights Reserved
*
* History:
* Revision Date Author Desc
* 1.0.0 2025/01/14 Alex build this file
******************************************************************************/
/*_____ I N C L U D E S ____________________________________________________*/
#include "display_ui.h"
#include "userapp.h"
#include "adc.h"
#include "hall.h"
#include "key.h"
#include "sleep.h"
#include "system.h"
#include "bat.h"
#include "sys_tim.h"
#include "charger_module.h"
#include "discharge_module.h"
#include "led.h"
#include "vox_module.h"
/******************************************************************************\
Macro definitions
\******************************************************************************/
#define LED_ON_CNT 100 //10s电量灯触发后亮的时间。
#define LED_PRO_TIM 40
#define LED_OFF_CNT 1
/******************************************************************************\
Variables definitions
\******************************************************************************/
bit Earphone_Chg_Flag_led; //耳机出入盒标志位
bit CoverEvent_Flg_led; //Hall开关触发事件标志位用于灯效显示。
bit Key_Press_short_irq_led; //按键短按动作标志位用于LED UI显示TRUE:有按键短按动作。
uint8_t LED_On_Timer; //led亮时间计时
bit LED_On_Flag; //led显示复位标志位1灯效复位。
#ifdef PWM_ENABLE
uint8_t Breathing_Light_Cnt; //呼吸灯流水计数器
#endif
/******************************************************************************\
Functions definitions
\******************************************************************************/
#ifdef LED_DISPLAY
/*****************************************************************************
* Function : void LED_Breating_Light_Off(void)
* Description :
* Input : None
* Output : None
* Return : None
* Note : None
*****************************************************************************/
void LED_Breating_Light_Off(void)
{
#ifdef PWM_ENABLE
LED_R_BREATHING_LIGHT(SHOW_NONE);
LED_G_BREATHING_LIGHT(SHOW_NONE);
LED_Y_BREATHING_LIGHT(SHOW_NONE);
LED_B_BREATHING_LIGHT(SHOW_NONE);
#endif
}
/*****************************************************************************
* Function : void LED_Display_App(void)
* Description : 100ms调用周期
* Input : None
* Output : None
* Return : None
* Note : None
*****************************************************************************/
/*
11Hz闪烁
2
1使4s后灭1Hz闪4s后灭
2使4s后灭
34s后灭1Hz闪4s后灭
4
*/
void LED_Display_App(void)
{
#ifdef NTC_ENABLE
static bit LED_On_Flag1;
#endif
static bit LED_On_Chg_Flag;
static bit LED_On_ChgDone_Flag;
static bit Disp_Bat_Lev;
if( LED_On_Flag )
{
LED_On_Flag = 0;
LED_On_Timer = 0;
offset_bat_level = 0;
Display_AllOff();
#if SLEEP_ENABLE
Enter_Sleep_Cnt_Restart_Flag = 1;
#endif
return;
}
#ifdef NTC_ENABLE
/*NTC保护4灯一直快闪(2Hz)*/
if( CHG_NTC_Pro_Flag || Boost_NTC_Pro_Flag || Vox_Output_Short_Flag )
{
if( !LED_On_Flag1 )
{
LED_On_Flag1 = 1;
LED_On_Flag = 1;
}
else
{
if( Display_RSta != LED_FLASH )
{
Display_Red_Flash(20,10);
}
if( Display_GSta != LED_FLASH )
{
Display_Green_Flash(20,10);
}
if( Display_YSta != LED_FLASH )
{
Display_Yellow_Flash(20,10);
}
if( Display_BSta != LED_FLASH )
{
Display_Blue_Flash(20,10);
}
}
return;
}
/* 保护消失后需要开启5V升压一段时间。 */
if( LED_On_Flag1 )
{
LED_On_Flag1 = 0;
LED_On_ChgDone_Flag = 0;
LED_On_Chg_Flag = 0;
CoverEvent_Flg_led = 0;
Earphone_Chg_Flag_led = 0;
Wkup_Earphone_Flag = 1;
}
#endif
if (ChgStatus != CHG_NONE)
{
if ( ChgStatus == CHG_STA_COMPLETED ) // 充电完成4个LED常亮
{
if( !LED_On_ChgDone_Flag )
{
LED_On_ChgDone_Flag = 1;
LED_On_Chg_Flag = 0;
LED_Breating_Light_Off();
return;
}
Display_AllOn();
}
else
{
if( !LED_On_Chg_Flag )
{
LED_On_Chg_Flag = 1;
LED_On_ChgDone_Flag = 0;
LED_On_Flag = 1;
Breathing_Light_Cnt = LED_R;
}
else
{
#ifdef PWM_ENABLE
if( LED_On_Timer < LED_OFF_CNT )
{
LED_On_Timer++;
switch ( Breathing_Light_Cnt )
{
case LED_R:
if( Display_RSta != LED_BREATHING_LIGHT )
{
LED_R_BREATHING_LIGHT(SLOW_DARK);
}
break;
case LED_G:
if( Display_GSta != LED_BREATHING_LIGHT )
{
LED_G_BREATHING_LIGHT(SLOW_DARK);
}
break;
case LED_Y:
if( Display_YSta != LED_BREATHING_LIGHT )
{
LED_Y_BREATHING_LIGHT(SLOW_DARK);
}
break;
case LED_B:
if( Display_BSta != LED_BREATHING_LIGHT )
{
LED_B_BREATHING_LIGHT(SLOW_DARK);
}
break;
default:
break;
}
}
else
if( LED_On_Timer < 15 ) //LED显示1.5s。
{
LED_On_Timer++;
}
else
{
LED_On_Timer = 0;
Breathing_Light_Cnt++;
if( Breathing_Light_Cnt >= LED_ID_MAX )
{
Breathing_Light_Cnt = LED_R;
}
}
#endif
}
}
CoverEvent_Flg_led = 0;
Earphone_Chg_Flag_led = 0;
Key_Press_short_irq_led = 0;
Disp_Bat_Lev = 1;
}
else
{
if( LED_On_Chg_Flag )
{
LED_On_Chg_Flag = 0;
LED_Breating_Light_Off();
LED_On_Flag = 1;
Wkup_Earphone_Flag = 1;
return;
}
if( CoverEvent_Flg_led || Disp_Bat_Lev || Earphone_Chg_Flag_led || Key_Press_short_irq_led )
{
if( LED_On_Timer < LED_OFF_CNT )
{
LED_On_Timer++;
}
else
if( LED_On_Timer < LED_ON_CNT ) //LED显示10s后灭。
{
LED_On_Timer++;
/*电量显示25%电量左侧第1个灯闪25%-50%电量2个灯常亮50%-75%电量3个灯常亮75%-100%电量4个灯常量。*/
if( F_batlevel_25p )
{
if (Display_RSta != LED_KEEP_FLASHING)
{
Display_Red_KeepFlash(100);
Display_Green_Off();
Display_Yellow_Off();
Display_Blue_Off();
}
}
else
if( F_batlevel_50p )
{
Display_Red_On();
Display_Green_On();
Display_Yellow_Off();
Display_Blue_Off();
}
else
if( F_batlevel_75p )
{
Display_Red_On();
Display_Green_On();
Display_Yellow_On();
Display_Blue_Off();
}
else
{
Display_AllOn();
}
}
else
{
CoverEvent_Flg_led = 0;
Disp_Bat_Lev = 0;
Earphone_Chg_Flag_led = 0;
Key_Press_short_irq_led = 0;
Display_AllOff(); //清LED显示
}
}
}
}
#endif

View File

@ -24,8 +24,8 @@
#include "userapp.h" #include "userapp.h"
#include "charger_module.h" #include "charger_module.h"
#include "sleep.h" #include "sleep.h"
#include "system.h"
#include "display_ui.h"
/******************************************************************************\ /******************************************************************************\
Macro definitions Macro definitions
@ -37,13 +37,11 @@
CoverStatus_E CoverStatus; CoverStatus_E CoverStatus;
bit CoverEvent_Flg = 0; //Hall开关触发事件标志位用于VOX充电。 bit CoverEvent_Flg; //Hall开关触发事件标志位用于VOX充电。
bit CoverEvent_Flg_led = 0; //Hall开关触发事件标志位用于灯效显示。
#if HALL_ENABLE #if HALL_ENABLE
uint8_t Hall_Sta_bk = 0xff; uint8_t Hall_Sta_bk;
/******************************************************************************\ /******************************************************************************\
Functions definitions Functions definitions
@ -122,7 +120,6 @@ uint8_t Hall_Sta_bk = 0xff;
Enter_Sleep_Cnt_Restart_Flag = 1; Enter_Sleep_Cnt_Restart_Flag = 1;
#endif #endif
} }
} }

View File

@ -29,8 +29,8 @@
Variables definitions Variables definitions
\******************************************************************************/ \******************************************************************************/
idata bool F_I2C_SIMU_INIT = false; idata bool F_I2C_SIMU_INIT;
idata bool F_I2C_SIMU_ERROR = false; idata bool F_I2C_SIMU_ERROR;
/******************************************************************************\ /******************************************************************************\
Functions definitions Functions definitions

View File

@ -56,27 +56,26 @@
Variables definitions Variables definitions
\******************************************************************************/ \******************************************************************************/
bit Key_Press_short_irq = 0; bit Key_Press_l_irq;
bit Key_Press_l_irq = 0;
bit Key_Press_ll_irq = 0;
idata KEY_EVENT_E Event_key = 0; bit Key_Press_ll_irq;
uint8_t Key_TWS_Pair_Tim = 0; idata KEY_EVENT_E Event_key;
uint8_t Key_TWS_Clear_Pair_Tim = 0; uint8_t Key_TWS_Pair_Tim;
uint8_t Key_TWS_Pair_Cnt = 0; uint8_t Key_TWS_Clear_Pair_Tim;
uint16_t Key_Press_Debounce = 0; uint8_t Key_TWS_Pair_Cnt;
uint8_t Key_Lift_Debounce = 0; uint16_t Key_Press_Debounce;
uint8_t Key_Lift_Debounce;
/******************************************************************************\ /******************************************************************************\
Functions definitions Functions definitions
\******************************************************************************/ \******************************************************************************/
/* /*
******************************************************************************* *******************************************************************************
* void Key_Handler(void) * void Key_Handler(void)
@ -145,7 +144,7 @@ uint8_t Key_Lift_Debounce = 0;
if( (Key_Press_Debounce <= KEY_PRESS_500MS_CNT) ) //松开按键按下时间小于500ms则识别为短按显示电量 if( (Key_Press_Debounce <= KEY_PRESS_500MS_CNT) ) //松开按键按下时间小于500ms则识别为短按显示电量
{ {
Key_Press_short_irq = 1; Key_Press_short_irq_led = 1;
nKey_Press_short_irq = 1; nKey_Press_short_irq = 1;
#ifdef LED_DISPLAY #ifdef LED_DISPLAY

View File

@ -24,11 +24,10 @@
#ifdef LED_DISPLAY #ifdef LED_DISPLAY
volatile uint8_t Display_RSta = LED_OFF; // ÏÔʾ״̬ volatile uint8_t Display_RSta; // ÏÔʾ״̬
volatile uint8_t Display_GSta = LED_OFF; // ÏÔʾ״̬ volatile uint8_t Display_GSta; // ÏÔʾ״̬
volatile uint8_t Display_YSta = LED_OFF; // ÏÔʾ״̬ volatile uint8_t Display_YSta; // ÏÔʾ״̬
volatile uint8_t Display_BSta = LED_OFF; // ÏÔʾ״̬ volatile uint8_t Display_BSta; // ÏÔʾ״̬
/******************************************************************************\ /******************************************************************************\
Macro definitions Macro definitions
@ -61,6 +60,11 @@ void LED_Init(void)
SFRADDR = P1_DRV0; //配置P10-P13输出驱动能力0:800Ω1:400Ω SFRADDR = P1_DRV0; //配置P10-P13输出驱动能力0:800Ω1:400Ω
SFRDATA = LED_DRV_LIMIT_SET; SFRDATA = LED_DRV_LIMIT_SET;
Display_RSta = LED_OFF;
Display_GSta = LED_OFF;
Display_YSta = LED_OFF;
Display_BSta = LED_OFF;
LEDR_OFF(); LEDR_OFF();
LEDG_OFF(); LEDG_OFF();
LEDB_OFF(); LEDB_OFF();

View File

@ -48,7 +48,7 @@ void main(void )
#ifdef _DEBUG_MAIN #ifdef _DEBUG_MAIN
printf("System Init.\r\n"); printf("System Init.Ver:%2x%2x%2x\r\n",(uint16_t)FW_VER0, (uint16_t)FW_VER1, (uint16_t)FW_VER2);
#endif #endif

View File

@ -138,57 +138,5 @@ void PWM_Duty_Set(Pwm_Channels_e nPWM_Ch,uint8_t nPWM_CMP)
} }
} }
#if 0
/*
*******************************************************************************
* void HuXi_Led(Pwm_Channels_e nPWM_Ch, uint8_t Delay_Timer)
*
* Description :
*
* Arguments : Pwm_Channels_e nPWM_Ch:PWM通道
uint8_t Delay_Timer:PWM输出占空比所需的时间
* Returns : None
* Notes : PWM初始化设置中的PWM counter reload valuePWM compare value的大小
*
*******************************************************************************
*/
void HuXi_Led(Pwm_Channels_e nPWM_Ch, uint8_t Delay_Timer)
{
static uint8_t nHuXi_Cnt;
static uint8_t nHuXi_Timer_Cnt;
static bit HuXi_Dir_Flg;
nHuXi_Timer_Cnt++;
if(nHuXi_Timer_Cnt <= Delay_Timer)
return;
nHuXi_Timer_Cnt = 0;
if(!HuXi_Dir_Flg)
{
nHuXi_Cnt += 2;
if( nHuXi_Cnt >= 254 )
{
HuXi_Dir_Flg = 1;
nHuXi_Cnt = 3;
}
}
else
{
nHuXi_Cnt -= 2;
if(nHuXi_Cnt <= 3)
{
HuXi_Dir_Flg = 0;
nHuXi_Cnt = 3;
}
}
PWM_Duty_Set(nPWM_Ch, nHuXi_Cnt);
}
#endif
#endif #endif

View File

@ -31,17 +31,17 @@
/******************************************************************************\ /******************************************************************************\
Variables definitions Variables definitions
\******************************************************************************/ \******************************************************************************/
bit Enter_Ship_Mode_Flag = 0; //½øshipmode±êÖ¾ bit Enter_Ship_Mode_Flag; //½øshipmode±êÖ¾
uint8_t Boot_ShipMode_Flg = 0; //Wake Up From ShipMode uint8_t Boot_ShipMode_Flg; //Wake Up From ShipMode
uint16_t gAwake_Source = 0; //»½ÐÑÔ´±ê־λ uint16_t gAwake_Source; //»½ÐÑÔ´±ê־λ
uint8_t Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; uint8_t Decnt_SleepDelay;
uint8_t Enter_ShipMode_Debounce = 0; uint8_t Enter_ShipMode_Debounce;
bit Enter_Sleep_Cnt_Restart_Flag = 0; bit Enter_Sleep_Cnt_Restart_Flag;
/******************************************************************************\ /******************************************************************************\
Functions definitions Functions definitions

View File

@ -114,7 +114,7 @@ void System_Init(void)
#endif #endif
#ifdef PWM_ENABLE #ifdef PWM_ENABLE
PWM_Init_Set(3,PWM_REL_VALUE); PWM_Init_Set(PWM_CLKFRE_SET,PWM_RELOAD_SET);
#endif #endif
#ifdef LED_DISPLAY #ifdef LED_DISPLAY
@ -128,6 +128,8 @@ void System_Init(void)
pmu_Init(); pmu_Init();
Decnt_SleepDelay = ENTER_STANDBYMODE_CNT;
Systerm_State.Next_State = POWER_ON_STATE; Systerm_State.Next_State = POWER_ON_STATE;
} }
@ -148,13 +150,7 @@ void System_Init(void)
void EX0_isr(void) interrupt Interrupt_Vector_IE0 void EX0_isr(void) interrupt Interrupt_Vector_IE0
{ {
#if 0
if( IRQ_FLAG&0x01 ) //pmu irq negtive interrupt.
{
IRQ_FLAG = 0x01;
// Get_PMU_Info(&pmu_Info); //»ñÈ¡pmu״̬
}
#endif
#if SLEEP_ENABLE #if SLEEP_ENABLE
Enter_Sleep_Cnt_Restart_Flag = 1; Enter_Sleep_Cnt_Restart_Flag = 1;

View File

@ -34,23 +34,33 @@
Variables definitions Variables definitions
\******************************************************************************/ \******************************************************************************/
uint8_t cnt_sys_tim_5ms = 0; uint8_t cnt_sys_tim_5ms;
uint8_t cnt_sys_tim_10ms = 0;
uint8_t cnt_sys_tim_250ms = 0;
uint16_t cnt_sys_tim_100ms = 0;
uint8_t cnt_sys_tim_1s = 0;
bit F_sys_tim_1ms = 0; uint8_t cnt_sys_tim_10ms;
bit F_sys_tim_5ms = 0;
bit F_sys_tim_10ms = 0;
bit F_sys_tim_250ms = 0;
bit F_sys_tim_100ms = 0;
bit F_sys_tim_1s = 0;
uint8_t F_sys_tim_tick = 0; uint8_t cnt_sys_tim_250ms;
bit F_sys_tim1_tick = 0;
bit F_sys_tim2_tick = 0; uint16_t cnt_sys_tim_100ms;
uint8_t cnt_sys_tim_1s;
bit F_sys_tim_1ms;
bit F_sys_tim_5ms;
bit F_sys_tim_10ms;
bit F_sys_tim_250ms;
bit F_sys_tim_100ms;
bit F_sys_tim_1s;
uint8_t F_sys_tim_tick;
bit F_sys_tim1_tick;
bit F_sys_tim2_tick;
/******************************************************************************\ /******************************************************************************\
Functions definitions Functions definitions

View File

@ -41,14 +41,21 @@
bit busy0; bit busy0;
#ifdef VOX_RX #ifdef VOX_RX
#if UART0_ENABLE #if UART0_ENABLE
idata uint8_t RX0_Buffer[COM0_Data_Lenth] = 0; //接收缓冲
bit Uart0_RX_Finish_Flag = 0; idata uint8_t RX0_Buffer[COM0_Data_Lenth]; //½ÓÊÕ»º³å
bit Uart0_RX_Finish_Flag;
#endif #endif
#if UART1_ENABLE #if UART1_ENABLE
idata uint8_t RX1_Buffer[COM0_Data_Lenth] = 0; //接收缓冲
bit Uart1_RX_Finish_Flag = 0; idata uint8_t RX1_Buffer[COM0_Data_Lenth]; //½ÓÊÕ»º³å
bit Uart1_RX_Finish_Flag;
#endif #endif
#endif #endif
@ -79,16 +86,6 @@ void UART0_Init(void)
SFRADDR = P0_OE; //Set P02 And P03 As Output. SFRADDR = P0_OE; //Set P02 And P03 As Output.
SFRDATA |= 0x0C; SFRDATA |= 0x0C;
// SFRADDR = P0_IE; //Set P02 And P03 As Input.
// SFRDATA |= 0x0C;
// SFRADDR = P0_PU; //Set P02 And P03 30K Pullup.
// SFRDATA |= 0x0C;
// SFRADDR = MFP_CTL0; //VOR、VOL都使用UART0进行分时通讯。
// SFRDATA &=~ 0x0F;
// SFRDATA |= 0x09;
#else #else
/* vor¡¢volʹÓò»Í¬uart½øÐÐͨѶ */ /* vor¡¢volʹÓò»Í¬uart½øÐÐͨѶ */
@ -159,13 +156,13 @@ void Uart0SendPacket(uint16_t Length,uint8_t *TransBuf)
} }
#endif #endif
uint8_t Rx0Status = 0;
uint8_t RX0_Cnt = 0; uint8_t Rx0Status;
uint8_t RX0_Cnt;
#if XUANHENG #if XUANHENG
uint16_t RX0DataLen;
uint16_t RX0DataLen = 0;
#endif #endif
#define Vox_Comm_JL_HEADER_DATA_LEN 4 #define Vox_Comm_JL_HEADER_DATA_LEN 4
@ -306,7 +303,7 @@ void uart0_Interrupt(void) interrupt Interrupt_Vector_RI_TI
#if UART1_ENABLE #if UART1_ENABLE
bit busy1 = 0; bit busy1;
/* /*
******************************************************************************* *******************************************************************************
@ -374,7 +371,6 @@ void Uart1SendPacket(uint16_t Length,uint8_t *TransBuf)
S1CON |= UART_REC_ENABLE; //Enabel UART0's RX S1CON |= UART_REC_ENABLE; //Enabel UART0's RX
} }
/* /*
******************************************************************************* *******************************************************************************
* void Uart1SendString(char *s) * void Uart1SendString(char *s)
@ -462,7 +458,7 @@ void uart1_Interrupt(void) interrupt Interrupt_Vector_RI1_TI1
#if UART2_ENABLE #if UART2_ENABLE
bit busy2 = 0; bit busy2;
#ifdef _DEBUG_ALL #ifdef _DEBUG_ALL

View File

@ -32,15 +32,11 @@
#include "led.h" #include "led.h"
#include "vox_module.h" #include "vox_module.h"
#include "adc.h" #include "adc.h"
#include "display_ui.h"
/******************************************************************************\ /******************************************************************************\
Macro definitions Macro definitions
\******************************************************************************/ \******************************************************************************/
#define LED_ON_CNT 100 //10s
#define LED_PRO_TIM 40
#define LED_OFF_CNT 1
/******************************************************************************\ /******************************************************************************\
Variables definitions Variables definitions
@ -48,326 +44,18 @@
xdata s_sys_state Systerm_State = {SLEEP_STATE,AWAKE_STATE,AWAKE_STATE}; xdata s_sys_state Systerm_State = {SLEEP_STATE,AWAKE_STATE,AWAKE_STATE};
uint8_t Step_Cnt = 0; uint8_t Step_Cnt;
uint8_t LED_On_Timer = 0; //led亮时间计时 bit Wkup_Earphone_Flag; //保护消失后,需要升压唤醒耳机标志位
bit LED_On_Flag = 0; uint8_t Wkup_Source_Flag; //唤醒源标志
bit Wkup_Earphone_Flag = 0; //保护消失后,需要升压唤醒耳机标志位 uint8_t Power_index;
uint8_t Wkup_Source_Flag = 0; //唤醒源标志
#ifdef PWM_ENABLE
uint8_t Breathing_Light_Cnt = 0;
#endif
/******************************************************************************\ /******************************************************************************\
Functions definitions Functions definitions
\******************************************************************************/ \******************************************************************************/
/*****************************************************************************
* Function : void LED_Display_App(void)
* Description : 100ms调用周期
* Input : None
* Output : None
* Return : None
* Note : None
*****************************************************************************/
/*
11Hz闪烁
2
1使4s后灭1Hz闪4s后灭
2使4s后灭
34s后灭1Hz闪4s后灭
4
*/
#ifdef LED_DISPLAY
void LED_Breating_Light_Off(void)
{
#ifdef PWM_ENABLE
LED_R_BREATHING_LIGHT(SHOW_NONE);
LED_G_BREATHING_LIGHT(SHOW_NONE);
LED_Y_BREATHING_LIGHT(SHOW_NONE);
LED_B_BREATHING_LIGHT(SHOW_NONE);
#endif
}
void LED_Display_App(void)
{
#ifdef NTC_ENABLE
static bit LED_On_Flag1;
#endif
static bit LED_On_Chg_Flag;
static bit LED_On_ChgDone_Flag;
static bit Disp_Bat_Lev;
if( LED_On_Flag )
{
LED_On_Flag = 0;
LED_On_Timer = 0;
offset_bat_level = 0;
Display_AllOff();
#if SLEEP_ENABLE
Enter_Sleep_Cnt_Restart_Flag = 1;
#endif
return;
}
#ifdef NTC_ENABLE
/*NTC保护4灯一直快闪(2Hz)*/
if( CHG_NTC_Pro_Flag || Boost_NTC_Pro_Flag || Vox_Output_Short_Flag )
{
if( !LED_On_Flag1 )
{
LED_On_Flag1 = 1;
LED_On_Flag = 1;
}
else
{
if( Display_RSta != LED_FLASH )
{
Display_Red_Flash(20,10);
}
if( Display_GSta != LED_FLASH )
{
Display_Green_Flash(20,10);
}
if( Display_YSta != LED_FLASH )
{
Display_Yellow_Flash(20,10);
}
if( Display_BSta != LED_FLASH )
{
Display_Blue_Flash(20,10);
}
}
return;
}
/* 保护消失后需要开启5V升压一段时间。 */
if( LED_On_Flag1 )
{
LED_On_Flag1 = 0;
LED_On_ChgDone_Flag = 0;
LED_On_Chg_Flag = 0;
CoverEvent_Flg_led = 0;
Earphone_Chg_Flag = 0;
Wkup_Earphone_Flag = 1;
}
#endif
if (ChgStatus != CHG_NONE)
{
if ( ChgStatus == CHG_STA_COMPLETED ) // 充电完成4个LED常亮
{
if( !LED_On_ChgDone_Flag )
{
LED_On_ChgDone_Flag = 1;
LED_On_Chg_Flag = 0;
LED_Breating_Light_Off();
return;
}
Display_AllOn();
}
else
{
if( !LED_On_Chg_Flag )
{
LED_On_Chg_Flag = 1;
LED_On_ChgDone_Flag = 0;
LED_On_Flag = 1;
Breathing_Light_Cnt = LED_R;
}
else
{
#ifdef PWM_ENABLE
if( LED_On_Timer < LED_OFF_CNT )
{
LED_On_Timer++;
switch ( Breathing_Light_Cnt )
{
case LED_R:
if( Display_RSta != LED_BREATHING_LIGHT )
{
LED_R_BREATHING_LIGHT(SLOW_DARK);
}
break;
case LED_G:
if( Display_GSta != LED_BREATHING_LIGHT )
{
LED_G_BREATHING_LIGHT(SLOW_DARK);
}
break;
case LED_Y:
if( Display_YSta != LED_BREATHING_LIGHT )
{
LED_Y_BREATHING_LIGHT(SLOW_DARK);
}
break;
case LED_B:
if( Display_BSta != LED_BREATHING_LIGHT )
{
LED_B_BREATHING_LIGHT(SLOW_DARK);
}
break;
default:
break;
}
}
else
if( LED_On_Timer < 15 ) //LED显示1.5s。
{
LED_On_Timer++;
}
else
{
LED_On_Timer = 0;
Breathing_Light_Cnt++;
if( Breathing_Light_Cnt >= LED_ID_MAX )
{
Breathing_Light_Cnt = LED_R;
}
}
#endif
}
}
CoverEvent_Flg_led = 0;
Earphone_Chg_Flag = 0;
Key_Press_short_irq = 0;
Disp_Bat_Lev = 1;
}
else
{
if( LED_On_Chg_Flag )
{
LED_On_Chg_Flag = 0;
LED_Breating_Light_Off();
LED_On_Flag = 1;
Wkup_Earphone_Flag = 1;
return;
}
if( CoverEvent_Flg_led || Disp_Bat_Lev || Earphone_Chg_Flag || Key_Press_short_irq )
{
if( LED_On_Timer < LED_OFF_CNT )
{
LED_On_Timer++;
}
else
if( LED_On_Timer < LED_ON_CNT ) //LED显示10s后灭。
{
LED_On_Timer++;
/*电量显示25%电量左侧第1个灯闪25%-50%电量2个灯常亮50%-75%电量3个灯常亮75%-100%电量4个灯常量。*/
if( F_batlevel_25p )
{
if (Display_RSta != LED_KEEP_FLASHING)
{
Display_Red_KeepFlash(100);
Display_Green_Off();
Display_Yellow_Off();
Display_Blue_Off();
}
}
else
if( F_batlevel_50p )
{
Display_Red_On();
Display_Green_On();
Display_Yellow_Off();
Display_Blue_Off();
}
else
if( F_batlevel_75p )
{
Display_Red_On();
Display_Green_On();
Display_Yellow_On();
Display_Blue_Off();
}
else
{
Display_AllOn();
}
}
else
{
CoverEvent_Flg_led = 0;
Disp_Bat_Lev = 0;
Earphone_Chg_Flag = 0;
Key_Press_short_irq = 0;
Display_AllOff(); //清LED显示
}
}
}
}
#endif
/* /*
******************************************************************************* *******************************************************************************
* void PMU_ADC_GetValue_Machine(void) * void PMU_ADC_GetValue_Machine(void)
@ -385,7 +73,7 @@ void LED_Display_App(void)
void PMU_ADC_GetValue_Machine(void) void PMU_ADC_GetValue_Machine(void)
{ {
#ifdef _DEBUG_ADC #ifdef _DEBUG_ADC
printf("adc chn:%d,pmu:%d,Ivol:%d,Vbat:%d,Vin:%d,Vpmid:%d,Vor:%d,Vol:%d,Vdd:%d,Ivor:%d.\r\n",(u16)ADC_Chn_Num,(u16)g_Vpmu_Adc,(u16)g_pmu_Adc_Ivol,(u16)Vbat_Adc,(u16)g_pmu_Adc_Vin,(u16)g_pmu_Adc_Vpmid,(u16)g_pmu_Adc_Vor,(u16)g_pmu_Adc_Vol,(u16)g_pmu_Adc_Vdd,(u16)g_pmu_Adc_Ivor); //printf("adc chn:%d,pmu:%d,Ivol:%d,Vbat:%d,Vin:%d,Vpmid:%d,Vor:%d,Vol:%d,Vdd:%d,Ivor:%d.\r\n",(u16)ADC_Chn_Num,(u16)g_Vpmu_Adc,(u16)g_pmu_Adc_Ivol,(u16)Vbat_Adc,(u16)g_pmu_Adc_Vin,(u16)g_pmu_Adc_Vpmid,(u16)g_pmu_Adc_Vor,(u16)g_pmu_Adc_Vol,(u16)g_pmu_Adc_Vdd,(u16)g_pmu_Adc_Ivor);
#endif #endif
PMU_ADC_Chn_Data(ADC_Chn_Num++); PMU_ADC_Chn_Data(ADC_Chn_Num++);
@ -473,8 +161,6 @@ void PMU_State_Machine(void)
* Return : None * Return : None
* Note : None * Note : None
*****************************************************************************/ *****************************************************************************/
uint8_t Power_index = 0;
void SysTem_State_Machine(void) void SysTem_State_Machine(void)
{ {
uint8_t ret = 0; uint8_t ret = 0;
@ -522,6 +208,7 @@ void SysTem_State_Machine(void)
#if SLEEP_ENABLE #if SLEEP_ENABLE
Decnt_SleepDelay = ENTER_STANDBYMODE_CNT; Decnt_SleepDelay = ENTER_STANDBYMODE_CNT;
#endif #endif
#ifdef _DEBUG_MAIN #ifdef _DEBUG_MAIN
printf("Normal State (line:%d)\r\n", (uint16_t)__LINE__); printf("Normal State (line:%d)\r\n", (uint16_t)__LINE__);
#endif #endif

View File

@ -30,15 +30,13 @@
#include "adc.h" #include "adc.h"
#include "userapp.h" #include "userapp.h"
bit Vox_Vout_Enable = OFF; //Vox功率输出标志位 bit Vox_Vout_Enable; //Vox功率输出标志位
bit Earphone_Chg_Flag = 0; //耳机出入盒标志位 bit Boost_Open_Flag;
bit Boost_Open_Flag = 0; uint8_t Vox_Type;
uint8_t Vox_Type = 0xFF; bit Vox_Output_Short_Flag;
bit Vox_Output_Short_Flag = 0;
#if VOX_ENABLE #if VOX_ENABLE
@ -63,7 +61,9 @@ bit Vox_Output_Short_Flag = 0;
\******************************************************************************/ \******************************************************************************/
#if VOX_FOLLOW_CHG #if VOX_FOLLOW_CHG
xdata uint16_t Vox_Follow_Chg_Debounce = 0; uint8_t Vox_Follow_Init_Deb;
xdata uint16_t Vox_Follow_Chg_Debounce;
g_Vox_Fllow_Chg_Cfg xdata Vox_Fllow_Chg; g_Vox_Fllow_Chg_Cfg xdata Vox_Fllow_Chg;
@ -73,63 +73,63 @@ e_Vox_Follow_Chg_Sta Follow_Chg_Sta;
#ifdef VOX_RX #ifdef VOX_RX
xdata uint8_t Vox_Get_Vbat_Flag[2] = {0}; //耳机配对状态VOL:低4bitVOR:高4bit。0是无效1是正在配对2是配对成功3不处理保持当前状态。 xdata uint8_t Vox_Get_Vbat_Flag[2]; //耳机配对状态VOL:低4bitVOR:高4bit。0是无效1是正在配对2是配对成功3不处理保持当前状态。
xdata uint8_t Vox_Get_BES_Addr_Flag[2] = {0}; xdata uint8_t Vox_Get_BES_Addr_Flag[2];
//idata uint8_t BES_Addr[6] = {0}; //蓝牙耳机地址Vox_Bes_Addr[0][6]VOLVox_Bes_Addr[1][6]VOR //idata uint8_t BES_Addr[6] = {0}; //蓝牙耳机地址Vox_Bes_Addr[0][6]VOLVox_Bes_Addr[1][6]VOR
#endif #endif
uint8_t EarPhone_Num = 0; uint8_t EarPhone_Num;
#endif #endif
bit OpenCover_TX_Cmd_Flag = 0; bit OpenCover_TX_Cmd_Flag;
#define KEY_TWS_PAIR_TIMER 2 #define KEY_TWS_PAIR_TIMER 2
#define KEY_TWS_PAIR_CNT 6 #define KEY_TWS_PAIR_CNT 6
#if XUANHENG #if XUANHENG
xdata uint8_t Vox_Pairing_State[2] = {0}; //耳机配对状态0是无效1是正在配对2是配对成功3不处理保持当前状态。 xdata uint8_t Vox_Pairing_State[2]; //耳机配对状态0是无效1是正在配对2是配对成功3不处理保持当前状态。
xdata uint8_t Vox_Set_BES_Addr_Flag[2] = {0}; xdata uint8_t Vox_Set_BES_Addr_Flag[2];
xdata uint8_t BES_Addr[6] = {0}; //蓝牙耳机地址Vox_Bes_Addr[0][6]VOLVox_Bes_Addr[1][6]VOR xdata uint8_t BES_Addr[6]; //蓝牙耳机地址Vox_Bes_Addr[0][6]VOLVox_Bes_Addr[1][6]VOR
xdata uint8_t Random_Data[8] = {0}; xdata uint8_t Random_Data[8];
xdata uint8_t Bes_Bet_Level[2] = {0}; //对耳电池电量信息Bes_Bet_Level[0]左耳Bes_Bet_Level[1]:右耳 xdata uint8_t Bes_Bet_Level[2]; //对耳电池电量信息Bes_Bet_Level[0]左耳Bes_Bet_Level[1]:右耳
xdata uint8_t Bes_Chg_Full[2] = {0}; //对耳硬件是否满电0非满电1满电。 xdata uint8_t Bes_Chg_Full[2]; //对耳硬件是否满电0非满电1满电。
xdata uint8_t Tws_Paired_Record[2] = {0}; //TWS配对记录0有TWS配对记录1没有TWS配对记录 xdata uint8_t Tws_Paired_Record[2]; //TWS配对记录0有TWS配对记录1没有TWS配对记录
xdata uint8_t Phone_Paired_Record[2] = {0}; //手机配对记录0有与手机配对记录1没有和手机配对记录。 xdata uint8_t Phone_Paired_Record[2]; //手机配对记录0有与手机配对记录1没有和手机配对记录。
xdata uint8_t Bes_OTA_State[2] = {0}; //耳机静默升级状态10没有 xdata uint8_t Bes_OTA_State[2]; //耳机静默升级状态10没有
xdata uint8_t Bes_Set_SN_State[2] = {0}; //耳机应答仓写入SN是否成功。1成功0失败 xdata uint8_t Bes_Set_SN_State[2]; //耳机应答仓写入SN是否成功。1成功0失败
xdata uint8_t Bes_In_Pair_State[2] = {0}; //耳机进入配对状态标志位 xdata uint8_t Bes_In_Pair_State[2]; //耳机进入配对状态标志位
xdata uint8_t Vox_Clear_Pair_Flag[2] = {0}; xdata uint8_t Vox_Clear_Pair_Flag[2];
bit Vol_Bes_Addr_Flag = 0; bit Vol_Bes_Addr_Flag;
bit Vor_Bes_Addr_Flag = 0; bit Vor_Bes_Addr_Flag;
xdata uint8_t SN_Num[22] = {0}; //SN码需要从OTP的固定位置获取。 xdata uint8_t SN_Num[22]; //SN码需要从OTP的固定位置获取。
xdata uint8_t SN_Num_Start = 0; //SN码发送起始位置有开盖动作时清零。 xdata uint8_t SN_Num_Start; //SN码发送起始位置有开盖动作时清零。
bit gShip_Mode_Flag = 0; //船运模式标志位0正常关机1船运模式 bit gShip_Mode_Flag; //船运模式标志位0正常关机1船运模式
#else #else
xdata uint8_t Net_Info[2][13] = {0}; xdata uint8_t Net_Info[2][13];
xdata uint8_t MAC_Addr[2][18] = {0}; xdata uint8_t MAC_Addr[2][18];
xdata uint8_t Earphone_Vbat[2] = 0; //对耳电量 xdata uint8_t Earphone_Vbat[2]; //对耳电量
#endif #endif
/******************************************************************************\ /******************************************************************************\
@ -388,8 +388,6 @@ xdata uint8_t Earphone_Vbat[2] = 0; //
I2cSfr_Write( VOX_CFG, VOX_Confg ); I2cSfr_Write( VOX_CFG, VOX_Confg );
} }
#endif #endif
/* /*
******************************************************************************* *******************************************************************************
@ -435,6 +433,7 @@ void Vox_Det_Machine(void)
static bit Vox_Getinto_Sleep_Flag; static bit Vox_Getinto_Sleep_Flag;
static uint8_t CHIP_STA1_BK; static uint8_t CHIP_STA1_BK;
static uint8_t Vox_Voltage_Hold_Timer; static uint8_t Vox_Voltage_Hold_Timer;
static uint8_t Vox_TX_Timer; static uint8_t Vox_TX_Timer;
@ -490,7 +489,7 @@ void Vox_Det_Machine(void)
if( CoverStatus == CLOSE ) //1、关盖关闭COM_CTRL显示灯效。无需查询Loadon、IOFF状态无论耳机是否在仓Vox 5V输出。 if( CoverStatus == CLOSE ) //1、关盖关闭COM_CTRL显示灯效。无需查询Loadon、IOFF状态无论耳机是否在仓Vox 5V输出。
{ {
Earphone_Chg_Flag = 0; //关盖取消耳机入盒灯效,显示关盖灯效。 Earphone_Chg_Flag_led = 0; //关盖取消耳机入盒灯效,显示关盖灯效。
Cover_Close_Flag = 1; Cover_Close_Flag = 1;
@ -541,7 +540,7 @@ void Vox_Det_Machine(void)
} }
/* 开关盖后VOX先升压5.2V 一段时间唤醒耳机后转入ADT获取盒内耳机数量。 */ /* 开关盖后VOX先升压5.2V 一段时间唤醒耳机后转入ADT获取盒内耳机数量。 */
if( Vox_Voltage_Hold_Timer < VOX_OPEN_VOUT_5V_DEBOUNCE ) //开盖后5V N00ms。 if( Vox_Voltage_Hold_Timer < HALL_OPEN_VOX_5V_DEBOUNCE ) //开盖后5V N00ms。
{ {
Vox_Voltage_Hold_Timer++; Vox_Voltage_Hold_Timer++;
@ -582,15 +581,13 @@ void Vox_Det_Machine(void)
printf( "Open/Close Box,Earphones In Box(Num:%d)(VoxSta:0x%x).\r\n",(u16)EarPhone_Num, (u16)(pmu_Info.pmu_VOX_STA) ); printf( "Open/Close Box,Earphones In Box(Num:%d)(VoxSta:0x%x).\r\n",(u16)EarPhone_Num, (u16)(pmu_Info.pmu_VOX_STA) );
#endif #endif
} }
} }
/* 发送开盖指令*/ /* 发送开盖指令*/
if( Cover_Open_Flag ) /*开盖后5V持续N00ms后0V持续N00ms保证耳机能被唤醒之后发开盖码。*/ if( Cover_Open_Flag ) /*开盖后5V持续N00ms后0V持续N00ms保证耳机能被唤醒之后发开盖码。*/
{ {
#if 1 #if 1
if( Vox_TX_Timer < VOX_OPEN_VOUT_0V_DEBOUNCE ) //转0V N00ms if( Vox_TX_Timer < HALL_OPEN_VOX_0V_DEBOUNCE ) //转0V N00ms
{ {
VOX_EN_Type(VOX_PD1K_Mode); VOX_EN_Type(VOX_PD1K_Mode);
@ -606,34 +603,30 @@ void Vox_Det_Machine(void)
if( ( Vox_Output_Debounce % Vox_TX_Interval_2 ) == 0 ) //200ms发送一次 if( ( Vox_Output_Debounce % Vox_TX_Interval_2 ) == 0 ) //200ms发送一次
{ {
#ifdef VOX_TX #ifdef VOX_TX
#if JIELI #if JIELI
HandleTxCommand(VHOUSE_CMD_OPEN_BOX,VOL_CHAN); //左耳发开盖指令,区分耳机通道。 HandleTxCommand(VHOUSE_CMD_OPEN_BOX,VOL_CHAN); //左耳发开盖指令,区分耳机通道。
#elif ZHONGKE #elif ZHONGKE
HandleTxCommand(VHOUSE_CMD_OPEN_WINDOW,VOL_CHAN); //左耳发开盖指令,区分耳机通道。
HandleTxCommand(VHOUSE_CMD_GET_VBAT,VOL_CHAN); //左耳发开盖指令,区分耳机通道。
#elif XUANHENG #elif XUANHENG
HandleTxCommand(CMD_HEARTBEAT,VOL_CHAN); HandleTxCommand(CMD_HEARTBEAT,VOL_CHAN);
#endif #endif
#endif #endif
} }
else else
if( ( Vox_Output_Debounce % Vox_TX_Interval ) == 0 ) //200ms发送一次 if( ( Vox_Output_Debounce % Vox_TX_Interval ) == 0 ) //200ms发送一次
{ {
#ifdef VOX_TX #ifdef VOX_TX
#if JIELI #if JIELI
HandleTxCommand(VHOUSE_CMD_OPEN_BOX,VOR_CHAN); //右耳发开盖指令,区分耳机通道。 HandleTxCommand(VHOUSE_CMD_OPEN_BOX,VOR_CHAN); //右耳发开盖指令,区分耳机通道。
#elif ZHONGKE #elif ZHONGKE
HandleTxCommand(VHOUSE_CMD_OPEN_WINDOW,VOR_CHAN); //右耳发开盖指令,区分耳机通道。
HandleTxCommand(VHOUSE_CMD_GET_VBAT,VOR_CHAN); //右耳发开盖指令,区分耳机通道。
#elif XUANHENG #elif XUANHENG
HandleTxCommand(CMD_HEARTBEAT,VOR_CHAN); HandleTxCommand(CMD_HEARTBEAT,VOR_CHAN);
#endif #endif
#endif #endif
} }
@ -674,7 +667,7 @@ void Vox_Det_Machine(void)
{ {
if ( pmu_Info.pmu_VOX_STA & ( VOR_LoadOn | VOL_LoadOn ) ) if ( pmu_Info.pmu_VOX_STA & ( VOR_LoadOn | VOL_LoadOn ) )
{ {
Earphone_Chg_Flag = 1; Earphone_Chg_Flag_led = 1;
#ifdef LED_DISPLAY #ifdef LED_DISPLAY
LED_On_Flag = 1; LED_On_Flag = 1;
#endif #endif
@ -733,7 +726,7 @@ void Vox_Det_Machine(void)
Cover_Close_Flag1 = 1; Cover_Close_Flag1 = 1;
if( Vox_Voltage_Hold_Timer <= VOX_CLOSE_5V_HOLD_CNT ) //关盖Boost VOUT 5V保持时间。 if( Vox_Voltage_Hold_Timer <= HALL_CLOSE_VOX_5V_HOLD_CNT ) //关盖Boost VOUT 5V保持时间。
{ {
Vox_Voltage_Hold_Timer++; Vox_Voltage_Hold_Timer++;
@ -754,17 +747,11 @@ void Vox_Det_Machine(void)
#ifdef VOX_TX #ifdef VOX_TX
#if JIELI #if JIELI
HandleTxCommand(VHOUSE_CMD_CLOSE_BOX,VOL_CHAN); //左耳发开盖指令,区分耳机通道。 HandleTxCommand(VHOUSE_CMD_CLOSE_BOX,VOL_CHAN); //左耳发开盖指令,区分耳机通道。
#elif ZHONGKE #elif ZHONGKE
HandleTxCommand(VHOUSE_CMD_CLOSE_WINDOW,VOL_CHAN); //左耳发开盖指令,区分耳机通道。 HandleTxCommand(VHOUSE_CMD_CLOSE_WINDOW,VOL_CHAN); //左耳发开盖指令,区分耳机通道。
#elif XUANHENG #elif XUANHENG
HandleTxCommand(CMD_HEARTBEAT,VOL_CHAN); HandleTxCommand(CMD_HEARTBEAT,VOL_CHAN);
#endif #endif
#endif #endif
@ -775,17 +762,11 @@ void Vox_Det_Machine(void)
#ifdef VOX_TX #ifdef VOX_TX
#if JIELI #if JIELI
HandleTxCommand(VHOUSE_CMD_CLOSE_BOX,VOR_CHAN); //右耳发开盖指令,区分耳机通道。 HandleTxCommand(VHOUSE_CMD_CLOSE_BOX,VOR_CHAN); //右耳发开盖指令,区分耳机通道。
#elif ZHONGKE #elif ZHONGKE
HandleTxCommand(VHOUSE_CMD_CLOSE_WINDOW,VOR_CHAN); //右耳发开盖指令,区分耳机通道。 HandleTxCommand(VHOUSE_CMD_CLOSE_WINDOW,VOR_CHAN); //右耳发开盖指令,区分耳机通道。
#elif XUANHENG #elif XUANHENG
HandleTxCommand(CMD_HEARTBEAT,VOR_CHAN); HandleTxCommand(CMD_HEARTBEAT,VOR_CHAN);
#endif #endif
#endif #endif
@ -803,17 +784,11 @@ void Vox_Det_Machine(void)
#ifdef VOX_TX #ifdef VOX_TX
#if JIELI #if JIELI
HandleTxCommand(VHOUSE_CMD_CLOSE_WIN_GET_VBAT,VOL_CHAN); //左耳发开盖指令,区分耳机通道。 HandleTxCommand(VHOUSE_CMD_CLOSE_WIN_GET_VBAT,VOL_CHAN); //左耳发开盖指令,区分耳机通道。
#elif ZHONGKE #elif ZHONGKE
HandleTxCommand(VHOUSE_CMD_CLOSE_WIN_GET_VBAT,VOL_CHAN); //左耳发开盖指令,区分耳机通道。
HandleTxCommand(VHOUSE_CMD_GET_TWS_BTADDR,VOL_CHAN); //左耳发开盖指令,区分耳机通道。
#elif XUANHENG #elif XUANHENG
HandleTxCommand(CMD_TWS_GET_BTADDR,VOL_CHAN); HandleTxCommand(CMD_TWS_GET_BTADDR,VOL_CHAN);
#endif #endif
#endif #endif
@ -824,16 +799,11 @@ void Vox_Det_Machine(void)
#ifdef VOX_TX #ifdef VOX_TX
#if JIELI #if JIELI
HandleTxCommand(VHOUSE_CMD_CLOSE_WIN_GET_VBAT,VOR_CHAN); //右耳发开盖指令,区分耳机通道。 HandleTxCommand(VHOUSE_CMD_CLOSE_WIN_GET_VBAT,VOR_CHAN); //右耳发开盖指令,区分耳机通道。
#elif ZHONGKE #elif ZHONGKE
HandleTxCommand(VHOUSE_CMD_CLOSE_WIN_GET_VBAT,VOR_CHAN); //右耳发开盖指令,区分耳机通道。
HandleTxCommand(VHOUSE_CMD_GET_TWS_BTADDR,VOR_CHAN); //右耳发开盖指令,区分耳机通道。
#elif XUANHENG #elif XUANHENG
HandleTxCommand(CMD_TWS_GET_BTADDR,VOR_CHAN); HandleTxCommand(CMD_TWS_GET_BTADDR,VOR_CHAN);
#endif #endif
#endif #endif
@ -900,13 +870,9 @@ void Vox_Det_Machine(void)
#ifdef VOX_TX #ifdef VOX_TX
#if XUANHENG #if XUANHENG
HandleTxCommand(CMD_SHUT_DOWN,VOL_CHAN); //左耳发关机指令,区分耳机通道。 HandleTxCommand(CMD_SHUT_DOWN,VOL_CHAN); //左耳发关机指令,区分耳机通道。
#else #else
HandleTxCommand(VHOUSE_CMD_PWROFF,VOL_CHAN); //左耳发关机指令,区分耳机通道。 HandleTxCommand(VHOUSE_CMD_PWROFF,VOL_CHAN); //左耳发关机指令,区分耳机通道。
#endif #endif
#endif #endif
@ -917,13 +883,9 @@ void Vox_Det_Machine(void)
#ifdef VOX_TX #ifdef VOX_TX
#if XUANHENG #if XUANHENG
HandleTxCommand(CMD_SHUT_DOWN,VOR_CHAN); //右耳发关机指令,区分耳机通道。 HandleTxCommand(CMD_SHUT_DOWN,VOR_CHAN); //右耳发关机指令,区分耳机通道。
#else #else
HandleTxCommand(VHOUSE_CMD_PWROFF,VOR_CHAN); //右耳发关机指令,区分耳机通道。 HandleTxCommand(VHOUSE_CMD_PWROFF,VOR_CHAN); //右耳发关机指令,区分耳机通道。
#endif #endif
#endif #endif
@ -966,13 +928,12 @@ void Vox_Det_Machine(void)
return; return;
} }
/*耳机出入盒判断*/ /*耳机出入盒判断*/
if( CHIP_STA1_BK != ( pmu_Info.pmu_VOX_STA & ( VOR_LoadOn | VOL_LoadOn ) ) ) //查询耳机loadon状态loadon状态改变则说明有耳机出入盒。 if( CHIP_STA1_BK != ( pmu_Info.pmu_VOX_STA & ( VOR_LoadOn | VOL_LoadOn ) ) ) //查询耳机loadon状态loadon状态改变则说明有耳机出入盒。
{ {
if( pmu_Info.pmu_VOX_STA & ( VOR_LoadOn | VOL_LoadOn ) ) if( pmu_Info.pmu_VOX_STA & ( VOR_LoadOn | VOL_LoadOn ) )
{ {
Earphone_Chg_Flag = 1; Earphone_Chg_Flag_led = 1;
#ifdef LED_DISPLAY #ifdef LED_DISPLAY
LED_On_Flag = 1; LED_On_Flag = 1;
#endif #endif
@ -1000,8 +961,6 @@ void Vox_Det_Machine(void)
* *
******************************************************************************* *******************************************************************************
*/ */
uint8_t Vox_Follow_Init_Deb = 0;
void Vox_Follow_Chg( g_Vox_Fllow_Chg_Cfg *n_Vox_Fllow_Chg ) void Vox_Follow_Chg( g_Vox_Fllow_Chg_Cfg *n_Vox_Fllow_Chg )
{ {
static bit nVpmid_Value_Setting; static bit nVpmid_Value_Setting;
@ -1086,9 +1045,9 @@ void Vox_Follow_Chg( g_Vox_Fllow_Chg_Cfg *n_Vox_Fllow_Chg )
{ {
n_Vox_Fllow_Chg->IVox_Init[VOR_CHAN] = g_pmu_Adc_Ivor; n_Vox_Fllow_Chg->IVox_Init[VOR_CHAN] = g_pmu_Adc_Ivor;
n_Vox_Fllow_Chg->IVox_Threshold_Neg[VOR_CHAN] = ( g_pmu_Adc_Ivor / 5 ) << 2; //Ivox_Threshold_Neg = IVox_Init * 80% n_Vox_Fllow_Chg->IVox_Threshold_Neg[VOR_CHAN] = IVOR_Threshold_Neg(g_pmu_Adc_Ivor); //Ivox_Threshold_Neg = IVox_Init * 80%
n_Vox_Fllow_Chg->IVox_Threshold_Pos[VOR_CHAN] = g_pmu_Adc_Ivor << 1; //Ivox_Threshold_Neg = IVox_Init * 2 n_Vox_Fllow_Chg->IVox_Threshold_Pos[VOR_CHAN] = IVOR_Threshold_Pos(g_pmu_Adc_Ivor); //Ivox_Threshold_Neg = IVox_Init * 2
#ifdef _DEBUG_FOLLOW #ifdef _DEBUG_FOLLOW
printf("Follow CHG Sta1,VOR Chging(Ivor:%dmA).(line:%d)\r\n",g_pmu_Adc_Ivor,(u16)__LINE__); printf("Follow CHG Sta1,VOR Chging(Ivor:%dmA).(line:%d)\r\n",g_pmu_Adc_Ivor,(u16)__LINE__);
#endif #endif
@ -1099,11 +1058,11 @@ void Vox_Follow_Chg( g_Vox_Fllow_Chg_Cfg *n_Vox_Fllow_Chg )
{ {
n_Vox_Fllow_Chg->IVox_Init[VOL_CHAN] = g_pmu_Adc_Ivol; n_Vox_Fllow_Chg->IVox_Init[VOL_CHAN] = g_pmu_Adc_Ivol;
n_Vox_Fllow_Chg->IVox_Threshold_Neg[VOL_CHAN] = ( g_pmu_Adc_Ivol / 5 ) << 2; //Ivox_Threshold_Neg = IVox_Init * 80% n_Vox_Fllow_Chg->IVox_Threshold_Neg[VOL_CHAN] = IVOL_Threshold_Neg(g_pmu_Adc_Ivol); //Ivox_Threshold_Neg = IVox_Init * 80%
n_Vox_Fllow_Chg->IVox_Threshold_Pos[VOL_CHAN] = g_pmu_Adc_Ivol << 1; //Ivox_Threshold_Neg = IVox_Init * 2 n_Vox_Fllow_Chg->IVox_Threshold_Pos[VOL_CHAN] = IVOL_Threshold_Pos(g_pmu_Adc_Ivol); //Ivox_Threshold_Neg = IVox_Init * 2
#ifdef _DEBUG_FOLLOW #ifdef _DEBUG_FOLLOW
printf("Follow CHG Sta1,VOL Chging(Ivol:%dmA).(line:%d)\r\n",g_pmu_Adc_Ivol,(u16)__LINE__); printf("Follow CHG Sta1,VOL Chging(Ivol:%dmA).(line:%d)\r\n",(u16)g_pmu_Adc_Ivol,(uint16_t)__LINE__);
#endif #endif
} }
@ -1131,7 +1090,7 @@ void Vox_Follow_Chg( g_Vox_Fllow_Chg_Cfg *n_Vox_Fllow_Chg )
n_Vox_Fllow_Chg->Vox_InBox_Sta[VOR_CHAN] = ON; //判断VOR有耳机在盒正常抽电 n_Vox_Fllow_Chg->Vox_InBox_Sta[VOR_CHAN] = ON; //判断VOR有耳机在盒正常抽电
#ifdef _DEBUG_FOLLOW #ifdef _DEBUG_FOLLOW
printf("Follow CHG Sta2,Get IVOR:%dmA.(line:%d)\r\n",(u16)g_pmu_Adc_Ivor,(u16)__LINE__); printf("Follow CHG Sta2,Get IVOR:%dmA.(line:%d)\r\n",(uint16_t)g_pmu_Adc_Ivor,(u16)__LINE__);
#endif #endif
} }
@ -1141,7 +1100,7 @@ void Vox_Follow_Chg( g_Vox_Fllow_Chg_Cfg *n_Vox_Fllow_Chg )
n_Vox_Fllow_Chg->Vox_InBox_Sta[VOL_CHAN] = ON; //判断VOL有耳机在盒正常抽电 n_Vox_Fllow_Chg->Vox_InBox_Sta[VOL_CHAN] = ON; //判断VOL有耳机在盒正常抽电
#ifdef _DEBUG_FOLLOW #ifdef _DEBUG_FOLLOW
printf("Follow CHG Sta2,Get IVOL:%dmA.(line:%d)\r\n",(u16)g_pmu_Adc_Ivol,(u16)__LINE__); printf("Follow CHG Sta2,Get IVOL:%dmA.(line:%d)\r\n",(uint16_t)g_pmu_Adc_Ivol,(u16)__LINE__);
#endif #endif
} }
@ -1167,7 +1126,7 @@ void Vox_Follow_Chg( g_Vox_Fllow_Chg_Cfg *n_Vox_Fllow_Chg )
n_Vox_Fllow_Chg->Vox_Follow_Start = OFF; //重启动跟随充 n_Vox_Fllow_Chg->Vox_Follow_Start = OFF; //重启动跟随充
#ifdef _DEBUG_FOLLOW #ifdef _DEBUG_FOLLOW
printf("Follow CHG Sta3,VOX Chg ReInit.(line:%d)\r\n",(u16)__LINE__); printf("Follow CHG Sta3,VOX Chg ReInit.(line:%d)\r\n",(uint16_t)__LINE__);
#endif #endif
} }
else else
@ -1291,14 +1250,14 @@ void Vox_Follow_Chg( g_Vox_Fllow_Chg_Cfg *n_Vox_Fllow_Chg )
Follow_Chg_Sta = Vox_Follow_Chg_Sta2; Follow_Chg_Sta = Vox_Follow_Chg_Sta2;
#ifdef _DEBUG_FOLLOW #ifdef _DEBUG_FOLLOW
printf("Follow CHG Sta4,VOx Vpmid AddSta(Vout:0x%x,Ivol:%dmA,Ivor:%dmA)(line:%d).\r\n",n_Vox_Fllow_Chg->Vpmid_Threshold_At_Present,g_pmu_Adc_Ivol,g_pmu_Adc_Ivor,(u16)__LINE__); printf("Follow CHG Sta4,VOx Vpmid AddSta(Vout:0x%x,Ivol:%dmA,Ivor:%dmA)(line:%d).\r\n",(uint16_t)n_Vox_Fllow_Chg->Vpmid_Threshold_At_Present,(uint16_t)g_pmu_Adc_Ivol,(uint16_t)g_pmu_Adc_Ivor,(u16)__LINE__);
#endif #endif
} }
#ifdef _DEBUG_FOLLOW #ifdef _DEBUG_FOLLOW
else else
{ {
printf("Follow CHG Sta4,VOx Ching(Vout:0x%x,Ivol:%dmA,Ivor:%dmA)(line:%d).\r\n",n_Vox_Fllow_Chg->Vpmid_Threshold_At_Present,g_pmu_Adc_Ivol,g_pmu_Adc_Ivor,(u16)__LINE__); printf("Follow CHG Sta4,VOx Ching(Vout:0x%x,Ivol:%dmA,Ivor:%dmA)(line:%d).\r\n",(uint16_t)n_Vox_Fllow_Chg->Vpmid_Threshold_At_Present,(uint16_t)g_pmu_Adc_Ivol,(uint16_t)g_pmu_Adc_Ivor,(u16)__LINE__);
} }
#endif #endif
@ -1317,13 +1276,13 @@ void Vox_Follow_Chg( g_Vox_Fllow_Chg_Cfg *n_Vox_Fllow_Chg )
Follow_Chg_Sta = Vox_Follow_Chg_Sta2; Follow_Chg_Sta = Vox_Follow_Chg_Sta2;
#ifdef _DEBUG_FOLLOW #ifdef _DEBUG_FOLLOW
printf("Follow CHG Sta4,VOR Vpmid AddSta(Vout:0x%x,Ivor:%dmA)(line:%d).\r\n",n_Vox_Fllow_Chg->Vpmid_Threshold_At_Present,g_pmu_Adc_Ivor,(u16)__LINE__); printf("Follow CHG Sta4,VOR Vpmid AddSta(Vout:0x%x,Ivor:%dmA)(line:%d).\r\n",(uint16_t)n_Vox_Fllow_Chg->Vpmid_Threshold_At_Present,(uint16_t)g_pmu_Adc_Ivor,(u16)__LINE__);
#endif #endif
} }
#ifdef _DEBUG_FOLLOW #ifdef _DEBUG_FOLLOW
else else
{ {
printf("Follow CHG Sta4,VOR Ching(Vout:0x%x,Ivor:%dmA)(line:%d).\r\n",n_Vox_Fllow_Chg->Vpmid_Threshold_At_Present,g_pmu_Adc_Ivor,(u16)__LINE__); printf("Follow CHG Sta4,VOR Ching(Vout:0x%x,Ivor:%dmA)(line:%d).\r\n",(uint16_t)n_Vox_Fllow_Chg->Vpmid_Threshold_At_Present,(uint16_t)g_pmu_Adc_Ivor,(u16)__LINE__);
} }
#endif #endif
} }
@ -1337,13 +1296,13 @@ void Vox_Follow_Chg( g_Vox_Fllow_Chg_Cfg *n_Vox_Fllow_Chg )
Follow_Chg_Sta = Vox_Follow_Chg_Sta2; Follow_Chg_Sta = Vox_Follow_Chg_Sta2;
#ifdef _DEBUG_FOLLOW #ifdef _DEBUG_FOLLOW
printf("Follow CHG Sta4,VOL Vpmid AddSta(Vout:0x%x,Ivol:%dmA)(line:%d).\r\n",n_Vox_Fllow_Chg->Vpmid_Threshold_At_Present,g_pmu_Adc_Ivol,(u16)__LINE__); printf("Follow CHG Sta4,VOL Vpmid AddSta(Vout:0x%x,Ivol:%dmA)(line:%d).\r\n",(uint16_t)n_Vox_Fllow_Chg->Vpmid_Threshold_At_Present,(uint16_t)g_pmu_Adc_Ivol,(u16)__LINE__);
#endif #endif
} }
#ifdef _DEBUG_FOLLOW #ifdef _DEBUG_FOLLOW
else else
{ {
printf("Follow CHG Sta4,VOL Ching(Vout:0x%x,Ivol:%dmA)(line:%d).\r\n",n_Vox_Fllow_Chg->Vpmid_Threshold_At_Present,g_pmu_Adc_Ivol,(u16)__LINE__); printf("Follow CHG Sta4,VOL Ching(Vout:0x%x,Ivol:%dmA)(line:%d).\r\n",(uint16_t)n_Vox_Fllow_Chg->Vpmid_Threshold_At_Present,(uint16_t)g_pmu_Adc_Ivol,(u16)__LINE__);
} }
#endif #endif
} }
@ -1367,7 +1326,7 @@ void Vox_Follow_Chg( g_Vox_Fllow_Chg_Cfg *n_Vox_Fllow_Chg )
{ {
n_Vox_Fllow_Chg->Vpmid_SubSta_Flag = ON; n_Vox_Fllow_Chg->Vpmid_SubSta_Flag = ON;
#ifdef _DEBUG_FOLLOW #ifdef _DEBUG_FOLLOW
printf("Follow CHG SubSta,VOL/VOR(line:%d).\r\n",(u16)__LINE__); printf("Follow CHG SubSta,VOL/VOR(line:%d).\r\n",(uint16_t)__LINE__);
#endif #endif
} }
} }
@ -1377,7 +1336,7 @@ void Vox_Follow_Chg( g_Vox_Fllow_Chg_Cfg *n_Vox_Fllow_Chg )
{ {
n_Vox_Fllow_Chg->Vpmid_SubSta_Flag = ON; n_Vox_Fllow_Chg->Vpmid_SubSta_Flag = ON;
#ifdef _DEBUG_FOLLOW #ifdef _DEBUG_FOLLOW
printf("Follow CHG SubSta,VOR(line:%d).\r\n",(u16)__LINE__); printf("Follow CHG SubSta,VOR(line:%d).\r\n",(uint16_t)__LINE__);
#endif #endif
} }
} }
@ -1388,7 +1347,7 @@ void Vox_Follow_Chg( g_Vox_Fllow_Chg_Cfg *n_Vox_Fllow_Chg )
{ {
n_Vox_Fllow_Chg->Vpmid_SubSta_Flag = ON; n_Vox_Fllow_Chg->Vpmid_SubSta_Flag = ON;
#ifdef _DEBUG_FOLLOW #ifdef _DEBUG_FOLLOW
printf("Follow CHG SubSta,VOL(line:%d).\r\n",(u16)__LINE__); printf("Follow CHG SubSta,VOL(line:%d).\r\n",(uint16_t)__LINE__);
#endif #endif
} }
} }
@ -1448,7 +1407,7 @@ void Vox_Follow_Chg( g_Vox_Fllow_Chg_Cfg *n_Vox_Fllow_Chg )
Follow_Chg_Sta = Vox_Follow_Chg_Sta1; Follow_Chg_Sta = Vox_Follow_Chg_Sta1;
} }
#ifdef _DEBUG_FOLLOW #ifdef _DEBUG_FOLLOW
printf("Follow CHG AddSta,(STA:0x%x,Vpmid:0x%x)(line:%d)\r\n",(u16)Follow_Chg_Sta,(u16)n_Vox_Fllow_Chg->Vpmid_Threshold_At_Present,(u16)__LINE__); printf("Follow CHG AddSta,(STA:0x%x,Vpmid:0x%x)(line:%d)\r\n",(uint16_t)Follow_Chg_Sta,(uint16_t)n_Vox_Fllow_Chg->Vpmid_Threshold_At_Present,(uint16_t)__LINE__);
#endif #endif
Set_PMU_Boost_Vout(n_Vox_Fllow_Chg->Vpmid_Threshold_At_Present); Set_PMU_Boost_Vout(n_Vox_Fllow_Chg->Vpmid_Threshold_At_Present);

View File

@ -1,2 +1,2 @@
---- LED_CTL Matches (1 in 1 files) ---- ---- reg3315 Matches (1 in 1 files) ----
reg3315.h (UsrInc\inc) line 92 : #define LED_CTL 0x13 define.h (UsrInc\inc) line 142 : #include "reg3315.h"