diff --git a/Out/8837_EVB_250213_1135.bin b/Out/8837_EVB_250213_1135.bin
deleted file mode 100644
index 4fb8bae..0000000
Binary files a/Out/8837_EVB_250213_1135.bin and /dev/null differ
diff --git a/Out/8837_EVB_250213_1135.hex b/Out/8837_EVB_250213_1135.hex
deleted file mode 100644
index 8c22160..0000000
--- a/Out/8837_EVB_250213_1135.hex
+++ /dev/null
@@ -1,753 +0,0 @@
-:030000000222F6E3
-:1022F600758E3075D20078FFE4F6D8FD9000007F29
-:10230600007E01E4F0A3DFFCDEFA75816F02235143
-:0F2AD8001225BAD2AED2BE12248E12294C80F42F
-:1026CE0075FE0F43FF8075FE2975FFB575A5217543
-:1026DE00FE1E43FF01E5A3540F24F89001CBF0E555
-:1026EE00A3C4540F9001DFF0E5AD540F24F875F03C
-:1026FE000AA49001D5F09001D9E5ABF0E5ADC45434
-:10270E000F24F875F00AA49001D6F09001DCE5AC28
-:04271E00F0D2BD2216
-:1018AA0090013FEFF0203E03021ACB9001D1E0FEF7
-:1018BA00A3E07803CEC313CE13D8F9F0EE9001D18A
-:1018CA00F09001CEE024FD604914700302199214CD
-:1018DA007003021A0824FE7003021A7924056003B1
-:1018EA00021AC89001CBE0FF3395E0FEC39001D203
-:1018FA00E09FFF9001D1E09EFE9001DAF0A3EFF0A5
-:10190A00C3EE648094804003021AC8E49001DA02AC
-:10191A001AC59001D1E0FEA3E0FF7C097DC4120B39
-:10192A001F780A120AA99001D1EEF0A3EFF09001F4
-:10193A00D5E0FD3395E0FCC3EF9DFFEE9CFE3395A9
-:10194A00E0FDFCE47B64FAF9F8120A49C006C00714
-:10195A009001D9E075F002A424F4FFE5F03401AB5C
-:10196A0007FA3395E0F9F8D007D006122808900153
-:10197A00C9EEF0A3EFF0C3EE648094804003021A2C
-:10198A00C8E49001C9021AC59001D1E0FEA3E0FFA4
-:10199A007C097DC4120B1F780A120AA99001D1EEA4
-:1019AA00F0A3EFF09001D6E0FD3395E0FCC3EF9D84
-:1019BA00FFEE9CFE3395E0FDFCE47B64FAF9F81235
-:1019CA000A49C006C0079001DCE075F002A424F4BD
-:1019DA00FFE5F03401AB07FA3395E0F9F8D007D008
-:1019EA00061228089001CCEEF0A3EFF0C3EE648053
-:1019FA0094804003021AC8E49001CC021AC59001EF
-:101A0A00D1E0FEA3E0FF7C097DC4120B1F780A1205
-:101A1A000AA99001D1EEF0A3EFF0E025E0FE9001D3
-:101A2A00D1E0339001D7F0A3CEF09001D7E0FEA326
-:101A3A00E07802C333CE33CED8F9FDAC069001DF8D
-:101A4A00E0FF3395E0FEEF24F8FFEE34FFFE1209C3
-:101A5A00517C037DE81209639001D7EE8FF01209D9
-:101A6A0099C39001D7E0648094805052E4804C90EE
-:101A7A0001CBE0FF3395E0FEC39001D2E09FFF90D7
-:101A8A0001D1E09EFEE4FCFD7BC47A09F9F8120A52
-:101A9A0049780A120ABC9001D1EEF0A3EFF0E025D2
-:101AAA00E0FF9001D1E033FE9001CFF0A3EFF0C345
-:101ABA00EE648094805007E49001CFF0A3F0C23E18
-:101ACA002290013FE09001CEF0C454F04401F5A504
-:0C1ADA00E49001D1F0A3F09001DEF022B6
-:03006B0002242349
-:10242300C0E0C0F0C083C082C0D075D000C000C07F
-:1024330006C007E5F330E03FAFA19001D3E4F0A37A
-:10244300EFF0E5A25403FE9001D3E04EF0A3E0F0D9
-:102453009001DEE0C3940850199001D3E0FEA3E09D
-:10246300FF9001D1EE8FF01209999001DEE004F0A4
-:102473008005D23E53A5FE75F301D007D006D000E8
-:0B248300D0D0D082D083D0F0D0E03267
-:1028810075FE8743FF209001FB7403F075FE7043D2
-:10289100FF1853B3F143B302E47809F6780BF6E07D
-:1028A10018F6780C76017909E718461846F5B175DE
-:0328B100B201224F
-:101CC200E4FE9001DAE0FCA3E0FDC394E8EC9403A7
-:101CD20040037F0022EF7003021DDDD3ED940FEC71
-:101CE20094034003021DBBED94CBEC94005003021D
-:101CF2001DBBD3ED94AAEC94024023D21A9001FBAF
-:101D0200E0FF13780AF6301B11D3ED94BFEC940276
-:101D12004004C21B8004780AA607E4FE8071D3ED5A
-:101D220094AAEC94025044ED9437EC9401403CD2D6
-:101D32001B9001FBE0FF780AF6301A13D3ED94935F
-:101D4200EC94025004C21A8006EFC313780AF678A4
-:101D52000C7601301511D3ED9451EC94015004C26C
-:101D6200158004E4780CF6E4FE8024D3ED9437EC7D
-:101D72009401501BD215E4780CF6301B10ED94261A
-:101D8200EC94015004C21B8004780C7601E4FE300E
-:101D92001811C3ED94F3EC94025006C218E4FE80CD
-:101DA200027E0130192FD3ED94DDEC94004006C27F
-:101DB20019E4FE80207E01801CD3ED940FEC940385
-:101DC2004006D2187E01800DD3ED94CBEC940050E6
-:101DD20004D2197E01C216C2178058C218C219D382
-:101DE200ED949FEC94035031ED9471EC94004029F2
-:101DF200301610ED9484EC94035006C216E4FE8073
-:101E0200027E0130172DD3ED9482EC94004006C27D
-:101E120017E4FE801E7E01801AD3ED949FEC94039A
-:101E22004004D216800BC3ED9471EC94005002D2A0
-:0A1E3200177E01780CE6F5B2AF064A
-:011E3C002283
-:1020C400E4FBFAE5E65480FFE4FCFDFEEF70075301
-:1020D400B3FE7808F62278087601E5E830E5057560
-:1020E400E8208005E5E530E10453B3FE22E5F23053
-:1020F400E50475F22022E5F2540C601353B3FEE5B7
-:10210400F354C0700302219F75F20C75F3C022755D
-:10211400F3C07F01121CC2EF600653B3FED21C222F
-:10212400C21CE5F230E432780CE6B401067A107B86
-:102134006880047A0F7BA0EB246AFFEA34FFFEC3B5
-:102144009001D8E09F9001D7E09E500575F2108071
-:102154000353B3FE78087603227909E7780B46180F
-:1021640046F5B1780CE6F5B243B31190019EE0FF59
-:10217400D394014002C237EFD394034002C233EF39
-:10218400D394074002C235EFD3940C4002C234EF1B
-:0B219400D394114002C2367808760296
-:01219F00221D
-:10005600303910EFB4010475B5C02253B5BFED4475
-:0400660080F5B5224A
-:102AC700E5B55480FFEF6008303905E4F5B5C23944
-:012AD70022DC
-:10261900C239E5E520E156E5E230E703D23A22E5A1
-:10262900E830E00D301E4675E8017D3FE4FF020009
-:1026390056E4FF121CC2EF6006122AC7D23822C222
-:1026490038303703022AC7D239303A217808E6B43C
-:10265900021BC39001D8E094109001D7E0648094E4
-:0E2669008E4005D239C23A22122AC7C2392247
-:10297E00E5E25408FF9001F8E06F6021E5E230E3F4
-:10298E00089001F77401F08005E49001F7F0D23F52
-:0D299E00C210D229D22B9001F8EFF0D241E7
-:0129AB002209
-:101AE600E5E25402FFE4FCFDFEEF70319001E27581
-:101AF600F0011209999001E2E0FEA3E0FFC39417FA
-:101B0600EE94024004D231800EC3EF9487EE940027
-:101B16004005203002D230D22DC22E8041302D37E2
-:101B2600D241E49001E5F0C22DD22E9001E4F0906E
-:101B360001E2E0FEA3E0FFD3941EEE94005008D22B
-:101B46002CD22FD22B800EC3EF944FEE940150056A
-:101B5600303002D232C230E49001E2F0A3F0302EEF
-:101B66003830393530322920100280337F0312276E
-:101B7600229001E4E0D394235003021CAFC23290BA
-:101B860001E57402F0E49001E1F090012FF0A3F07A
-:101B9600302F02C22FC22EC21030312B20100A7DE8
-:101BA6003FE4FF120056D210227F03122722900133
-:101BB600E4E0D394235003021CAFC231E49001E663
-:101BC600F09001E57403F09001F7E0640160030210
-:101BD6001CC19001E5E064026003021C849001E1EF
-:101BE600E0C3940150107D257F37121661E4900101
-:101BF6002FF0A3F080709001E0E0D39405401CE440
-:101C0600F07D257F111216617D247F11121661E485
-:101C16009001E5F0D2137F03021CBE900130E0B4C0
-:101C2600010F7D247F0A1216619001307402F08044
-:101C360035900130E06402702D90012FE060207D28
-:101C4600257F0A121661E490012FF0A3F09001E1BE
-:101C5600F09001E0F09001E5F0D2137F0480597D09
-:101C6600247F371216619001E1E0D39414400A9064
-:101C760001E0E004F0E4A3F0229001E1802B900162
-:101C8600E5E064037035A3E0FFC394B4501FEF543E
-:101C96000F70047D25800A9001E6E0540770077DE9
-:101CA600247F0B1216619001E6E004F022E4900115
-:0B1CB600E5F0D213A3F07F04122722F8
-:011CC1002200
-:10291A0075FE0675FF3C75FE0E53FF0F75FE0F53CD
-:10292A00FFF075FE0375FFFFE4900173F0900172EA
-:10293A00F0900174F0900171F0C282C283C285C224
-:02294A008422E5
-:102A6F00EF14600D14600D14600D2403700BD282EF
-:0A2A7F0022D28322D28422D28522C3
-:052A320090013FE0FFF0
-:102A3700EF14600D14600D14600D2403700BC28237
-:0A2A470022C28322C28422C285222B
-:10255A00E4FF74752FF582E43401F583E4F07479AD
-:10256A002FF582E43401F583E4F0EF25E0247DF5CC
-:10257A0082E43401F583E4F0A3F0EF25E02485F545
-:10258A0082E43401F583E4F0A3F0EF25E0248DF52D
-:10259A0082E43401F583E4F0A3F0EF25E02495F515
-:0F25AA0082E43401F583E4F0A3F00FEFB404A34F
-:0125B90022FF
-:1024F700AC0774752CF582E43401F583EDF0EAC37B
-:1025070013FEEB13FFEC25E0247DF582E43401F59F
-:1025170083EEF0A3EFF0AF03EC25E02485F582E42A
-:102527003401F583EAF0A3EFF0900144E0FEA3E065
-:10253700FFEC25E0248DF582E43401F583EEF0A36A
-:10254700EFF0EC25E02495F582E43401F583E4F01F
-:03255700A3F022CC
-:10000E0074752FF582E43401F583EDF074792FF5D4
-:10001E0082E43401F583EBF0EF25E0247DF582E4F4
-:10002E003401F583E4F0A37469F0EF25E02495F52F
-:0B003E0082E43401F583E4F0A3F0221B
-:10103E00E490013FF0F090013FE0FFC394044003C1
-:10104E0002138074752FF582E43401F583E060227B
-:10105E0024FE60241470030211481470030211BFA1
-:10106E002403600302131C90013FE0FF122A6F025B
-:10107E00131C122A3202131C90013FE0FF25E024BC
-:10108E007DF582E43401F583E0FCA3E0FDEF25E07D
-:10109E002495F582E43401F583E0FEA3E0C39DEED2
-:1010AE009C5005122A6F8003122A3290013FE0FFF6
-:1010BE0025E02485F582E43401F583E0FCA3E0FD10
-:1010CE00EF25E02495F582E43401F583E0FEA3E0FC
-:1010DE00C39DEE9C500302131C90013FE025E024BB
-:1010EE0095F582E43401F583E4F0A3F0EF25E024D6
-:1010FE008DF582E43401F583E0FEA3E0D39400EE97
-:10110E009400401690013FE025E0248DF582E434F2
-:10111E0001F58374FFF5F012099990013FE0FF2568
-:10112E00E0248DF582E43401F583E0FCA3E04C600D
-:10113E000302131C74752F0211DB90013FE0FF2593
-:10114E00E0247DF582E43401F583E0FCA3E0FDEFBD
-:10115E0025E02495F582E43401F583E0FEA3E0D387
-:10116E009DEE9C5005122A6F8003122A3290013F89
-:10117E00E0FF25E02485F582E43401F583E0FCA34D
-:10118E00E0FDEF25E02495F582E43401F583E0FEE1
-:10119E00A3E0C39DEE9C500302131C90013FE0257B
-:1011AE00E02495F582E43401F583E4F0A3F0021314
-:1011BE001C90013FE0FF2479F582E43401F583E0D1
-:1011CE0070171227C4C24090013FE02475F582E4E7
-:1011DE003401F583E4F002131C90013FE0FF247903
-:1011EE00F582E43401F583E0FE6402704B20401476
-:1011FE00D240EF25E0247DF582E43401F583E4F05E
-:10120E00A37469F090013FE0FF25E0247DF582E4B0
-:10121E003401F583E475F001120999EF25E0247D80
-:10122E00F582E43401F583E0FCA3E0C394FEEC9474
-:10123E00005003021306804EEE6401705A204017D0
-:10124E00D24090013FE025E0247DF582E43401F5A3
-:10125E0083E4F0A374FEF090013FE0FF25E0247DCF
-:10126E00F582E43401F58374FFF5F0120999EF2548
-:10127E00E0247DF582E43401F583E0FEA3E0D3940F
-:10128E0069EE9400507290013FE02479F582E434C7
-:10129E0001F583E4F0806190013FE0FF2479F5824F
-:1012AE00E43401F583E06403704EEF25E0247DF510
-:1012BE0082E43401F583E0FEA3E0FFC394FEEE94D6
-:1012CE00004004D240800BD3EF946AEE940050029B
-:1012DE00C24090013FE025E0247D30400DF582E4D0
-:1012EE003401F58374FFF5F0800BF582E43401F5DB
-:1012FE0083E475F00112099990013FE0FF25E02487
-:10130E007DF582E43401F583A3E0FD12277390018D
-:10131E003FE0FF701174752FF582E43401F583E020
-:10132E00900173F0804390013FE0B401102475F5F5
-:10133E0082E43401F583E0900172F0802C90013F3D
-:10134E00E0B402102475F582E43401F583E09001D7
-:10135E0074F0801590013FE0B4030E2475F582E41D
-:10136E003401F583E0900171F090013FE004F0024A
-:10137E001044E490013FF090013FE0FFC39404500D
-:10138E001BEF25E02495F582E43401F583E475F036
-:0C139E000112099990013FE004F080DB8F
-:0113AA002220
-:1028B40075FE1E43FF0275FE2143FF0875D486751D
-:1028C400FE2143FF0475FE2143FF02300E0875FE0E
-:1028D4002453FFC3800675FE2443FF3C9001FC741F
-:0328E4000FF022D0
-:10006E00D2AC759A01D2B9D2BDD2A9D2AB75FE2946
-:04007E0043FFB0226A
-:102A9F00C2ACE4F59AD2B9C2BDC2A9C2AB75FE29C8
-:042AAF0053FF4F2260
-:092B0200122A9F43870202006EB3
-:102AB300E5E25401FFEF7006201403304104C241E4
-:042AC300C322D32235
-:1025BA0075FE01E4F5FF122AF5122AE7E4F586759D
-:1025CA00B7C375FE6A75FF0475FE6C53FF3043FF8F
-:1025DA004A1226CE75FE8043FF0275FE0E53FFFC9B
-:1025EA0043FF0175FE1775FF3CD2A8D2AF122881AE
-:1025FA007D697F03122A8912291A12255A1228B4D0
-:0F260A009001FC740FF0C2109001F07401F022E7
-:03000300020006F2
-:03000600D24132B2
-:03004B00022B0B7A
-:062B0B0075EB3CD24132E3
-:03005300022B116C
-:062B110075F302D241320F
-:0D2AF50075BB03759DDC759B92439A012211
-:0628E700900165120AF0E9
-:1028ED00E4900168F0F0900168E0C39FE49E501CF5
-:1028FD00203CFDD23C900165E475F001120AD9121D
-:0C290D0008B6F59C900168E004F080DA48
-:01291900229B
-:030083000221A0B7
-:1021A000C0E0C083C082C0D075D000C000C003C0F2
-:1021B00005C006C007E59B30E105539BFDC23CE529
-:1021C0009B30E079539BFED2419001F3E0146023F1
-:1021D00004706AE59C9001F3B4AA127401F0A3E4C0
-:1021E000F0E0FF04F074502FF8A69C8050E4F0A3B8
-:1021F000F0804A9001F4E0FF04F074502FF8A69CA0
-:10220000E0FDB407177856E6FEE42409FFE43EFE3D
-:1022100018E6FBEF4BFFA3EEF0A3EFF0EDFF90010C
-:10222000F5E07003A3E06F60099001F4E0D394201F
-:10223000400B9001F4E4F09001F3F0D23DD007D0D0
-:1022400006D005D003D000D0D0D082D083D0E032E9
-:06284C004301F00402024A
-:1029F2009001DDE0FF04F01218AA9001DDE0B406B8
-:102A02000204F09001DDE0C3940840037402F02256
-:102A510012297E121AE6122677301D11C21D12208C
-:0E2A6100C4122619122396120C6F1213AB2208
-:101E3D00E490013FF09001F0E0FFA3E0FE6F6055EC
-:101E4D00A3EEF09001F0E0A3F024FE603214603FA9
-:101E5D0024026003021FAD900144E4F0A37403F06B
-:101E6D007B647A007D02E4FF1224F7900144E4F0D4
-:101E7D00A37403F07B647A007D027F010224F720B6
-:101E8D000E03021FADD23F75E80CC20DC20E22909B
-:101E9D0001FC021F3C9001F1E024FE6035146076D8
-:101EAD00147003021F4724036003021FAD9001EE5F
-:101EBD00E004F0E0C394085003021FAD9001F074EC
-:101ECD0002F0E49001EEF090019EE06003021FAD80
-:101EDD008061E5F6700CE5F87008E5FA7004E5E14F
-:101EED00602D9001F07403F0E5F6540FFFE4FCFD56
-:101EFD00FE7B08FAF9F8C3120A9870069001F07487
-:101F0D0004F075E11F75F60F75F8FC75FABC22909B
-:101F1D0001F07403F022202103021FADC2219001B4
-:101F2D00FCE0D39400400CE014F0304173C24174D6
-:101F3D000FF0229001F07404F022122AB3505B12BC
-:101F4D0028B47F04122722122AC7E4900144F0A37B
-:101F5D00F0FBFAFDFF1224F7E4900144F0A3F0FB2F
-:101F6D00FAFD7F011224F7E4900144F0A3F0FBFA8F
-:101F7D00FD7F021224F7E4900144F0A3F0FBFAFD7B
-:101F8D007F031224F79001737402F0900172F090A8
-:101F9D000174F0900171F0022B029001F07402F0C7
-:011FAD002211
-:10294C00302026C2209001EFE0FF04F0EF14600C61
-:10295C0014600E240270121229F2800D122A51807A
-:10296C0008121E3DE49001EFF0302205C222121035
-:02297C003E22F9
-:102A120000000000000000000000000000000000B4
-:102A220000000000000000000000000000000000A4
-:10272200EF24FE601E14602814602F24FE603524FE
-:1027320005703D43BD9953BD9975FE6F53FFF2433A
-:10274200FF092243BDCC75FE6F53FFFE43FF0C22EF
-:1027520053BD7753B7CF43B7302253B7CF43B703F5
-:1027620053BD772253B7CC53BD7775FE6A43FF3012
-:012772002244
-:1013AB00203903021628303F5920100A7D3FE4FFF5
-:1013BB00120056D210227F03122722E4900103F071
-:1013CB00900101F0A3F0C200C201D20B9001F7E033
-:1013DB007020C22AD202D203C205C208C204C209BB
-:1013EB00C20AD214C24290012CF0A3F090013BF040
-:1013FB008008C202C203D205C206C210C20DC20EC1
-:10140B00C23F900101E0C3940550030215C7300B96
-:10141B0005C20B02159B20002ED200E5E354A06001
-:10142B0021E5E354A0FFE4FCFDFE7BA0FAF9F8C331
-:10143B00120A9890012E70057402F0800A7401F064
-:10144B008005E490012EF02005030214DD900102CB
-:10145B00E0C3940550077F06122722802720013B0B
-:10146B00900103E0FFD39414501FEF540370047DDD
-:10147B00248009900103E020E0077D257F0D1216E3
-:10148B0061900103E004F080497F04122722E4906D
-:10149B000103F0D201D213C21480379001E5E07042
-:1014AB0031301304C2138022E5E354A0FBE4FAF9B4
-:1014BB00F8900100E0FFE4FCFDFEC3120A986012F5
-:1014CB00E5E354A06004D22AD22BE5E354A09001AB
-:1014DB0000F020020302162530423F2010237D3FEF
-:1014EB00E4FF120056D210D214E490012CF0A3F0BA
-:1014FB0090013BF0900101F0C208D20BC200D20464
-:10150B00227F03122722C210D203900101E0D39451
-:10151B000350030215C7C242804F20044C900102B6
-:10152B00E0FFD39414501CEF540370047D24800906
-:10153B00900102E020E0077D257F0D1216619001DE
-:10154B00028079900103E0FFD39414501CEF5403F5
-:10155B0070047D248009900103E020E0077D257F46
-:10156B00371216619001038053E5E8540C60262076
-:10157B000E1E900103E004F0E0C394055003021625
-:10158B0060E4F075E80C7F03122722D20DC21422FF
-:10159B007F04022722C20DC20E3003097F031227DC
-:1015AB0022C203807520083DE5E354AC64AC6003B4
-:1015BB00303321900101E0D394285004E004F02251
-:1015CB00D208E4900104F0900101F0C2097F0412EB
-:1015DB002722804690012DE070407B017A01790F24
-:1015EB001200868035900104E0FFD39414501FEF56
-:1015FB00540370047D248009900104E020E0077DF2
-:10160B00257F05121661900104E004F0800C20097F
-:10161B0009D2097F04122722C214C2072220070B0A
-:10162B00D2077F04122722C2148022E5E354A0FBC9
-:10163B00E4FAF9F8900100E0FFE4FCFDFEC3120AA6
-:10164B00986012E5E354A06004D22AD22BE5E35450
-:05165B00A0900100F069
-:011660002267
-:0600860090013F120AF098
-:10008C0090013BE0147003020167147003020246F6
-:10009C001470030202B714700302042324046003D7
-:1000AC000205A390013F120AD090001E1208CF60E7
-:1000BC00030205A390013EE0D3940A5028E004F01B
-:1000CC0090001A743F12092F300C030205A3900103
-:1000DC003F120AD090001A1208CFFDE4FF1200560E
-:1000EC00D20C0205A3E490013EF0C20C90013F1229
-:1000FC000AD0900016E412092F900015E412092F73
-:10010C00900013E412092F900012E412092F9000B2
-:10011C0011E412092F900010E412092F900018E43A
-:10012C0012092F900017E412092F90000EE4F5F03D
-:10013C00120A1C90000CE4F5F0120A1C900019E451
-:10014C0012092F90001B743F12092F90013B740170
-:10015C00F0E490010DF0A3F00205A3E5E35408FFD1
-:10016C00E4FCEF601CE5E35404601690013F120AB6
-:10017C00D090001E740112092FE490013BF002058F
-:10018C00A3E5E35408FFE4FCEF704A9001CCE0FED9
-:10019C00A3E0FF90013F120AD0900002EE8FF01204
-:1001AC000A1C7D05120963EF7802C333CE33CED817
-:1001BC00F9FF90013F120AD0900006EE8FF0120A60
-:1001CC001C9001CDE025E0FF9001CCE03390000ABB
-:1001DC008FF0120A1CE5E35404FFE4FCEF704F901F
-:1001EC0001C9E0FEA3E0FF90013F120AD0EE8FF0B0
-:1001FC001209FD9001C9E0FEA3E0FF7D0512096321
-:10020C00EF7802C333CE33CED8F9FF90013F120AF8
-:10021C00D0900004EE8FF0120A1C9001CAE025E089
-:10022C00FF9001C9E0339000088FF0120A1C900176
-:10023C003F120AD090001D020598D390010EE09455
-:10024C000590010DE094005002806FE490010DF0D8
-:10025C00A3F0E5E35408FFEF701F9001CCE0FEA380
-:10026C00E0FF90013F120AD090000EEE8FF0120AC0
-:10027C001C900018740112092FE5E35404FFE4FCF0
-:10028C00EF701F9001C9E0FEA3E0FF90013F120A3E
-:10029C00D090000CEE8FF0120A1C90001774011213
-:1002AC00092F90013B7403F00205A3D390010EE0DB
-:1002BC00940290010DE09400500AE475F0011209CB
-:1002CC00990205A3E490010DF0A3F090013F120AEE
-:1002DC00D090000A1209C5FFAEF090000E1209C5AD
-:1002EC00D39FE5F09E501C90013F120AD09000085D
-:1002FC001209C5FFAEF090000C1209C5D39FE5F0B2
-:10030C009E4011E490013BF090013F120AD0900006
-:10031C001D0203E590013F120AD09000181208CF7D
-:10032C006401706D90000E1209C5FFAEF0D39414E9
-:10033C00EE94005031E5E330E31F90001674011287
-:10034C00092F90001A1208CFC3943F404490013FEC
-:10035C00120AD0900018E4803590013F120AD09018
-:10036C0000137401802890013F120AD090000612ED
-:10037C0009C5FDD3EF9DEE95F090013F4008120AA0
-:10038C00D09000138006120AD09000167401120946
-:10039C002F90013F120AD09000171208CF64016011
-:1003AC00030205A390000C1209C5FFAEF0D3941400
-:1003BC00EE94005034E5E330E22290001574011203
-:1003CC00092F90001A1208CFC3943F50030205A3C3
-:1003DC0090013F120AD0900017E4803590013F1233
-:1003EC000AD09000127401802890013F120AD0901C
-:1003FC0000041209C5FDD3EF9DEE95F090013F402E
-:10040C0008120AD09000128006120AD090001574BF
-:10041C000112092F0205A3D390010EE09414900150
-:10042C000DE094005031E475F0011209999001CC63
-:10043C00E0FEA3E0FF90013F120AD090000EEE8F79
-:10044C00F0120A1C9001C9E0FFA3E090000CCF8FC2
-:10045C00F0120A1C0205A3E490010DF0A3F0900128
-:10046C003F120AD09000181208CF640160030205F5
-:10047C00019000171208CF6401707A9000061209DF
-:10048C00C5FFAEF090000E1209C5FDACF0C39FEC99
-:10049C009E401890013F120AD090000A1209C5FF25
-:1004AC00D3ED9FEC95F050030205A390013F120A87
-:1004BC00D09000041209C5FFAEF090000C1209C5D3
-:1004CC00FDACF0C39FEC9E401890013F120AD090F7
-:1004DC0000081209C5FFD3ED9FEC95F050030205FF
-:1004EC00A390013F120AD0900016740112092F90AC
-:1004FC00001502059890013F120AD09000181208BE
-:10050C00CF640170419000061209C5FFAEF0900057
-:10051C000E1209C5FDACF0C39FEC9E401590013F37
-:10052C00120AD090000A1209C5FFD3ED9FEC95F08A
-:10053C00401490013F120AD0900016740112092F3A
-:10054C0090013B7402F090013F120AD090001712F8
-:10055C0008CF640170419000081209C5FFAEF090FD
-:10056C00000C1209C5FDACF0D39FEC9E5015900108
-:10057C003F120AD09000041209C5FFC3ED9FEC9501
-:10058C00F0501490013F120AD0900015740112091A
-:10059C002F90013B7402F090013F120AD09000188A
-:1005AC001208CFFF6401600D9000171208CF640190
-:1005BC0060030207A69000131208CFFE6401600DC1
-:1005CC009000121208CF64016003020720EFB401FF
-:1005DC001E9000171208CFB40115EEB40111900053
-:1005EC00131208CFB40108900014740112092F9053
-:1005FC0000181208CFFFB401189000171208CF7022
-:10060C00109000131208CF64017023900014048022
-:10061C001AEF701A9000171208CFB4011190001243
-:10062C001208CFB40108900014740112092F900025
-:10063C0013E412092F900012E412092F90001412E7
-:10064C0008CF640160030207BF90013F120AD090EB
-:10065C00001A1208CFD39400400890001A74FE12AE
-:10066C0008FC9000191208CFFF90001A1208CFD383
-:10067C009F40219001D8E024C8FF9001D7E03400BE
-:10068C00FEC39001D0E09FEE6480F89001CFE0644F
-:10069C008098504890013F120AD09000191208CF50
-:1006AC00FF90001A1208CFD39F90013F5013120AEB
-:1006BC00D090001AEF12092F90001CE412092F8021
-:1006CC0013120AD090001C740112092F90001A7496
-:1006DC00021208FC90013B7404F0801390013B74EF
-:1006EC0002F090013F120AD090001CE412092FE492
-:1006FC0090010DF0A3F090013F120AD0900014E489
-:10070C0012092F90001C1208CFFF90001A1208CF6C
-:10071C00FD0207A390013F120AD09000161208CFD9
-:10072C006401600D9000151208CF6401600302078C
-:10073C00BF900016E412092F900015E412092F90B7
-:10074C00001A1208CFC3943F500E90013F120AD0EA
-:10075C0090001A74021208FC90013B7404F0900192
-:10076C003F120AD090001B1208CFFF90001A1208FB
-:10077C00CFC39F401390013F120AD090001AEF1282
-:10078C00092F90013B7401F090013F120AD09000A8
-:10079C001A1208CFFDE4FF02005690013BE0D394FF
-:1007AC00024010E4F090013F120AD090001E740138
-:0307BC0012092FF0
-:0107BF002217
-:0E225000900165120AF0900168ECF0A3EDF029
-:10225E0074FFA3F0A3F0A37410F0A37421F0E4A311
-:10226E00F090016874FFF5F01209AF45F0607090C0
-:10227E000165E475F001120AD91208B690016EF0EC
-:10228E00E0FE90016AE06EF0A3E0F0E490016FF0E2
-:10229E00A3F0C3900170E0940890016FE094005099
-:1022AE00C090016AE0FEA3E0FFEE30E719EF25E0F3
-:1022BE00FFEE33FEA3E06EFEA3E06FFF90016AEE29
-:1022CE00F0A3EFF0800D90016BE025E0F090016A35
-:1022DE00E033F090016FE475F00112099980B3902C
-:0722EE00016AE0FEA3E0FF1E
-:0122F50022C6
-:0816610090013FEFF0A3EDF052
-:10166900E4A3F0A3F078437C017D017BFF7A2A791A
-:1016790012FE7F20120890E4900163F0A3F090011C
-:101689004374AAF0900140E0FE900144F090013FBC
-:10169900E0900145F0A3E4F09001F7E0900147F0F4
-:1016A90090013FE0120AF9171F0516E20A17300BDD
-:1016B900173A0D17830E17D80F17301118A91216DC
-:1016C900CF37000017E4E4900148F0A3F07B0678D7
-:1016D90040E4F608DBFC0217E4900148740EF0E4DC
-:1016E900A3F0FB74402BF8E6FD744A2BF582E43431
-:1016F90001F583EDF00BEBB406E9E4FB74462BF836
-:10170900E6FD74502BF582E43401F583EDF00BEB23
-:10171900B408E90217E49001487401F0E4A3F0A2C7
-:101729000F33A3F00217E4E4900148F0A3F0021785
-:10173900E49001487405F0E4A3F0A37410F0F0A359
-:101749007401F07808E65402C4333354C0FD9001A3
-:101759009EE075F005A44D90014CF0EEB42405907F
-:101769000139800A900140E0B4250890013AE090DF
-:10177900014DF0E490014EF08061900148740AF047
-:10178900E4A3F07829E6A3F0E4FBEBFF7829E6FD72
-:101799002FFFE433FED3EF9416EE64809480400F5C
-:1017A900744B2BF582E43401F58374FFF08013ED5B
-:1017B9002B242AF8E6FF744B2BF582E43401F583D8
-:1017C900EFF00BEBB409C37829740926F6800C9065
-:1017D90001487401F0E4A3F0A304F0900149E0FE8C
-:1017E900900148E0FDED2407FFE43EFE900141F041
-:1017F900FCA3EFF0FD7B017A01794312225090019D
-:1018090063EEF0A3EFF0900163E0FEA3E0FD900129
-:1018190041E0FAA3E02443F58274013AF583EDF03F
-:10182900EEFF900141E475F001120999FC7443251A
-:10183900F0F58274013CF583EFF07F0112272290C5
-:101849000140E0FFB4240843BD0253BDFE8016EFFA
-:10185900B4250843BD2053BDEF800AEFB4210643E8
-:10186900BD2253BDEE900142E02402FF900141E008
-:101879003400FE7B017A0179431228E7900140E0A8
-:10188900FFB4240753BDFD43BD0122EFB42507531F
-:10189900BDDF43BD1022EFB4210653BDDF43BD11A7
-:0118A900221C
-:101FAE007851E6C4540FFD540360030220C3EF12B0
-:101FBE000AF920030A20150B20250D20900E20A2D1
-:101FCE000F20B4111FD937000020C3E4FE7855E668
-:101FDE00FFEEC39F500F74572EF8E6FF74402EF895
-:101FEE00A6070E80E8EDB4040690012F0220C090E3
-:101FFE0001300220C0ED7857B40406E6900133F0AC
-:10200E0022E6900134F022EDB4040690013702204E
-:10201E00C09001380220C0ED640478597032E6FE9B
-:10202E00547F900139F0EEC413131354019001053F
-:10203E00F008E6784EF6785BE6FE5401900131F03A
-:10204E00EEC313540190013CF008E6900135F022E6
-:10205E00E6FE547F90013AF0EEC413131354019030
-:10206E000106F008E6784FF6785BE6FE5401900123
-:10207E0032F0EEC313540190013DF008E6900136A4
-:10208E00F022ED7857B40406E690010BF022E690AC
-:10209E00010CF022ED7857B40406E6900107F02209
-:1020AE00E6900108F022EDB404059001078003903C
-:0520BE0001087401F0AF
-:0120C30022FA
-:10267700E490013FF0A3F0A3F0303D4AC23D785605
-:10268700E6FEE42407FFE43EFE18E6FDEF4DFF906B
-:102697000140EEF0FCA3EFF0FD7B007A00795012C9
-:1026A7002250AC06AD07900140A3E0FB2452F8E6A8
-:1026B700FE74512BF8E6FBEBB5050BEEB504077876
-:0626C70052E6FF121FAEF7
-:0126CD0022EA
-:10285200602A019F0BB80BEA0C1C0C800CB20CE432
-:102862000D160D480D7A0DAC0E100E420E740EA60A
-:0E2872000ED80F0A0F3C0F870FD2101D1068F2
-:10239600E4FFEF25E0249FF582E43401F583E0FCB9
-:1023A600A3E0FDC39001D8E09D9001D7E09C4005D5
-:1023B6000FEFB415DD90019EE0FEEFD39E90019DD8
-:1023C600E0400404F0800214F0E5E16008E4F5E181
-:1023D60090019EEFF090019DE0FED394BE5006EE74
-:1023E600C3940A500B90019EEFF090019D7464F027
-:1023F60090019EE0FFD394005002D237EFD39401B0
-:102406005002D233EFD394055002D235EFD3940A5B
-:0C2416005002D234EFD3940F5002D236A3
-:012422002297
-:10248E009001ECE06062E4F0D21F9001EAE004F00B
-:10249E00E0C394054004E4F0D2209001EDE004F096
-:1024AE00E0C3940A4004E4F0D2229001E7E475F010
-:1024BE0001120999C39001E8E094649001E7E09459
-:1024CE00004006E4F0A3F0D21D9001E9E004F0E034
-:1024DE00C394FA4013E4F0D21E9001EBE004F0E056
-:0924EE0094044004E4F0D2212220
-:03000B000229AC1B
-:1029AC00C0E0C083C082C0D074FC258CF58C7466EA
-:1029BC00258AF58A9001EC7401F0D0D0D082D083B6
-:0329CC00D0E03226
-:0E2AE700758901758CFC758A66D2A9D28C2285
-:1027C400EFD39401501675FE0EEF25E02404FE7439
-:1027D40003A806088002C333D8FC801475FE0FEFEB
-:1027E40024FE25E0FE7403A806088002C333D8FC47
-:1027F400F452FFEFB4040C75FE0F53FFF075FE0E98
-:0428040053FF0F224D
-:102A890075FE54EF5407F5FF75FE56AF058FFF75B8
-:062A9900FE5375FF01224F
-:10277300EFD39401501875FE0EEF25E02404FE7488
-:1027830003A806088002C333D8FC42FF801675FEF7
-:102793000FEF24FE25E0FE7403A806088002C3336E
-:1027A300D8FC42FFEF70038DCE22EFB401038DCF2F
-:1027B30022EFB402038DDE22EFB40304AF058FDFF3
-:0127C30022F3
-:032FFD00010102CD
-:1029CF00E4FB7D04FF12000EE4FB7D047F01120087
-:1029DF000EE4FB7D047F0212000EE4FB7D047F03F7
-:0329EF0002000ED5
-:100C6F00302B5AC22BE49001F9F090019DF09001C6
-:100C7F0044F0A3F0FBFAFDFF1224F7E4900144F0D7
-:100C8F00A3F0FBFAFD7F011224F7E4900144F0A3D7
-:100C9F00F0FBFAFD7F021224F7E4900144F0A3F079
-:100CAF00FBFAFD7F031224F79001737402F0900199
-:100CBF0072F0900174F0900171F0D24122201C0F5C
-:100CCF0020380C200D03020D85300E03020D8520F8
-:100CDF002505D225D22B22900173E06402601A9071
-:100CEF000144E4F0A3740AF07B147A007D02E4FF60
-:100CFF001224F79001737403F0900172E0640260A4
-:100D0F001A900144E4F0A3740AF07B147A007D0278
-:100D1F007F011224F79001727403F0900174E06464
-:100D2F0002601A900144E4F0A3740AF07B147A0075
-:100D3F007D027F021224F79001747403F090017109
-:100D4F00E06402601A900144E4F0A3740AF07B148B
-:100D5F007A007D027F031224F79001717403F02053
-:100D6F000D0302103D9001F9E0C394285003020EC9
-:100D7F00BBD20ED22B2230250CC225C227C226C2CF
-:100D8F0029C22AD2427808E6FF7003020E95640347
-:100D9F00705E202707D227C2260229CFE490014494
-:100DAF00F0A3F0FBFA7D01FF1224F7E4900144F069
-:100DBF00A3F0FBFA7D017F011224F7E4900144F0C8
-:100DCF00A3F0FBFA7D017F021224F7E4900144F0B7
-:100DDF00A3F0FBFA7D017F031224F79001737401D6
-:100DEF00F0900172F0900174F0900171F0020E8C8E
-:100DFF0020260DD226C227D22BE49001FAF0807D57
-:100E0F009001F9E0C394015055E004F0A3E01460A1
-:100E1F001A14602714603424037062900173E06425
-:100E2F0004605A7B017D04E4FF802E900172E06420
-:100E3F0004604A7B017D047F01801E900174E06491
-:100E4F0004603A7B017D047F02800E900171E064A3
-:100E5F0004602A7B017D047F0312000E801F900126
-:100E6F00F9E0C3940F5005E004F08011E49001F90C
-:100E7F00F0A3E004F0E0C394044002E4F0C229C2FE
-:100E8F002AC22CD2282230260AC2261229CFD22BD0
-:100E9F00D2422220290C202809202A06202C0302C6
-:100EAF00103D9001F9E0FFC394015004E004F022DB
-:100EBF00EFC394644003020FE89001F9E004F030AF
-:100ECF003537900173E06403700302103DE4900125
-:100EDF0044F0A3F07B64FA7D03FF1224F7900173B3
-:100EEF007404F0E4900144F0A3F0FBFAFD7F0112CB
-:100EFF0024F79001727402802D303441E490014444
-:100F0F00F0A3F0FBFA7D01FF1224F7900173740137
-:100F1F00F0E4900144F0A3F0FBFA7D017F0112246D
-:100F2F00F79001727401F0E4900144F0A3F0FBFA22
-:100F3F00FD7F021224F790017474028043E4900144
-:100F4F0044303653F0A3F0FBFA7D01FF1224F790E3
-:100F5F0001737401F0E4900144F0A3F0FBFA7D01FA
-:100F6F007F011224F79001727401F0E4900144F0B4
-:100F7F00A3F0FBFA7D017F021224F7900174740134
-:100F8F00F0E4900144F0A3F0FBFAFD7F031224F785
-:100F9F009001717402F022F0A3F0FBFA7D01FF12B1
-:100FAF0024F7E4900144F0A3F0FBFA7D017F0112D6
-:100FBF0024F7E4900144F0A3F0FBFA7D017F0212C5
-:100FCF0024F7E4900144F0A3F0FBFA7D017F0312B4
-:100FDF0024F790017374018048C229C228C22AC223
-:100FEF002CE4900144F0A3F0FBFAFDFF1224F7E488
-:100FFF00900144F0A3F0FBFAFD7F011224F7E49077
-:10100F000144F0A3F0FBFAFD7F021224F7E49001F4
-:10101F0044F0A3F0FBFAFD7F031224F790017374E1
-:0E102F0002F0900172F0900174F0900171F0E7
-:01103D002290
-:10231600022AD8E493A3F8E493A34003F68001F2DB
-:1023260008DFF48029E493A3F85407240CC8C333C8
-:10233600C4540F4420C8834004F456800146F6DF97
-:10234600E4800B010204081020408090284CE47EB3
-:10235600019360BCA3FF543F30E509541FFEE4938C
-:10236600A360010ECF54C025E060A840B8E493A353
-:10237600FAE493A3F8E493A3C8C582C8CAC583CA7E
-:10238600F0A3C8C582C8CAC583CADFE9DEE780BE36
-:012880000057
-:1007C000E709F608DFFA8046E709F208DFFA803E1B
-:1007D00088828C83E709F0A3DFFA8032E309F60808
-:1007E000DFFA8078E309F208DFFA807088828C8370
-:1007F000E309F0A3DFFA806489828A83E0A3F60824
-:10080000DFFA805889828A83E0A3F208DFFA804CFD
-:1008100080D280FA80C680D4806980F280338010D4
-:1008200080A680EA809A80A880DA80E280CA80333D
-:1008300089828A83ECFAE493A3C8C582C8CCC583B5
-:10084000CCF0A3C8C582C8CCC583CCDFE9DEE78085
-:100850000D89828A83E493A3F608DFF9ECFAA9F004
-:10086000EDFB2289828A83ECFAE0A3C8C582C8CC5A
-:10087000C583CCF0A3C8C582C8CCC583CCDFEADE73
-:10088000E880DB89828A83E493A3F208DFF980CCD5
-:1008900088F0EF60010E4E60C388F0ED2402B404CE
-:1008A0000050B9F582EB2402B4040050AF23234575
-:0608B00082239008107382
-:1008B600BB010689828A83E0225002E722BBFE0240
-:0908C600E32289828A83E4932273
-:1008CF00BB010CE58229F582E5833AF583E02250DE
-:1008DF0006E92582F8E622BBFE06E92582F8E22228
-:0D08EF00E58229F582E5833AF583E4932242
-:1008FC00BB010FF8E58229F582E5833AF583E02800
-:10090C00F0225009C58229F8E58226F622BBFE09A1
-:10091C00C58229F8E22582F222F8EA2583F583E9DB
-:03092C00932822EB
-:10092F00F8BB010DE58229F582E5833AF583E8F0FE
-:10093F00225006E92582C8F622BBFE05E92582C8AA
-:02094F00F22292
-:10095100EF8DF0A4A8F0CF8CF0A428CE8DF0A42EBA
-:02096100FE2274
-:10096300C2D5EC30E709B2D5E4C39DFDE49CFCEEAF
-:1009730030E715B2D5E4C39FFFE49EFE120B4CC3D0
-:10098300E49DFDE49CFC8003120B4C30D507C3E4CB
-:060993009FFFE49EFE221E
-:10099900C5F0F8A3E028F0C5F0F8E58215827002E9
-:0609A9001583E038F02286
-:1009AF00A3F8E0C5F025F0F0E582158270021583FB
-:0609BF00E0C838F0E82258
-:1009C500BB0110E58229F582E5833AF583E0F5F070
-:1009D500A3E0225009E92582F886F008E622BBFE4D
-:1009E5000AE92582F8E2F5F008E222E5832AF58393
-:0809F500E993F5F0A3E9932258
-:1009FD00BB010A89828A83F0E5F0A3F0225006F745
-:0F0A0D0009A7F01922BBFE06F3E5F009F3192241
-:100A1C00F8BB0111E58229F582E5833AF583E8F00C
-:100A2C00E5F0A3F0225009E92582C8F608A6F022C9
-:0D0A3C00BBFE09E92582C8F2E5F008F222B0
-:100A4900E88FF0A4CC8BF0A42CFCE98EF0A42CFC4C
-:100A59008AF0EDA42CFCEA8EF0A4CDA8F08BF0A4CA
-:100A69002DCC3825F0FDE98FF0A42CCD35F0FCEB29
-:100A79008EF0A4FEA9F0EB8FF0A4CFC5F02ECD39EE
-:0F0A8900FEE43CFCEAA42DCE35F0FDE43CFC225B
-:10280800C2D5E830E70FB2D5E4C39BFBE49AFAE4FB
-:1028180099F9E498F8EC30E717B2D512283E120B74
-:10282800DDE4C39BFBE49AFAE499F9E498F88003A1
-:10283800120BDD30D50DE4C39FFFE49EFEE49DFD41
-:04284800E49CFC22EE
-:100A9800EB9FF5F0EA9E42F0E99D42F0E89C45F0B4
-:010AA800222B
-:100AA900E8600FECC313FCED13FDEE13FEEF13FF2B
-:030AB900D8F1224F
-:100ABC00E86010ECA2E713FCED13FDEE13FEEF1350
-:040ACC00FFD8F0223D
-:090AD000E0FBA3E0FAA3E0F92227
-:100AD900F8E0FBA3A3E0F925F0F0E58215827002A6
-:070AE9001583E0FA38F0224A
-:090AF000EBF0A3EAF0A3E9F02207
-:100AF900D083D082F8E4937012740193700DA3A38C
-:100B090093F8740193F5828883E47374029368609F
-:060B1900EFA3A3A380DF9F
-:100B1F00EC8EF0A4CCC5F0CCCDF8EFA4CEC5F02D63
-:100B2F00FDE43CFCE8A42EC8C5F03DFDE43CFCEF21
-:0D0B3F00A4FFE5F028FEE43DFDE43CFC22AF
-:100B4C00BC000BBE0029EF8DF084FFADF022E4CC8D
-:100B5C00F875F008EF2FFFEE33FEEC33FCEE9DEC56
-:100B6C00984005FCEE9DFE0FD5F0E9E4CEFD22ED9C
-:100B7C00F8F5F0EE8420D21CFEADF075F008EF2FE6
-:100B8C00FFED33FD4007985006D5F0F222C398FDD7
-:050B9C000FD5F0EA2274
-:100BA10075F008758200EF2FFFEE33FECD33CDCC0B
-:100BB10033CCC58233C5829BED9AEC99E58298408E
-:100BC1000CF582EE9BFEED9AFDEC99FC0FD5F0D66B
-:100BD100E4CEFBE4CDFAE4CCF9A88222B800C1B995
-:100BE1000059BA002DEC8BF084CFCECDFCE5F0CBD3
-:100BF100F97818EF2FFFEE33FEED33FDEC33FCEB0C
-:100C010033FB10D703994004EB99FB0FD8E5E4F9C6
-:100C1100FA227818EF2FFFEE33FEED33FDEC33FCB3
-:100C2100C933C910D7059BE99A4007EC9BFCE99AA7
-:100C3100F90FD8E0E4C9FAE4CCFB2275F010EF2FEC
-:100C4100FFEE33FEED33FDCC33CCC833C810D707EC
-:100C51009BEC9AE899400AED9BFDEC9AFCE899F827
-:0E0C61000FD5F0DAE4CDFBE4CCFAE4C8F922BA
-:00000001FF
diff --git a/Out/8837_EVB_250213_1135_9EC6_010102.bin b/Out/8837_EVB_250213_1135_9EC6_010102.bin
deleted file mode 100644
index 5eaeae5..0000000
Binary files a/Out/8837_EVB_250213_1135_9EC6_010102.bin and /dev/null differ
diff --git a/Out/8837_EVB_250214_1117.bin b/Out/8837_EVB_250214_1117.bin
new file mode 100644
index 0000000..f9d6951
Binary files /dev/null and b/Out/8837_EVB_250214_1117.bin differ
diff --git a/Out/8837_EVB_250214_1117.hex b/Out/8837_EVB_250214_1117.hex
new file mode 100644
index 0000000..a79057a
--- /dev/null
+++ b/Out/8837_EVB_250214_1117.hex
@@ -0,0 +1,746 @@
+:0300000002228C4D
+:10228C00758E3075D20078FFE4F6D8FD9000007F93
+:10229C00007E01E4F0A3DFFCDEFA75816F0222E719
+:0F2A5D00122550D2AED2BE1224241228E480F4E7
+:1026640075FE0F43FF8075FE2975FFB575A52175AD
+:10267400FE1E43FF01E5A3540F24F89001B5F0E5D5
+:10268400A3C4540F9001C9F0E5AD540F24F875F0BC
+:102694000AA49001BFF09001C3E5ABF0E5ADC454CA
+:1026A4000F24F875F00AA49001C0F09001C6E5ACBF
+:0426B400F0D2BD2281
+:10186A00900100EFF0203E03021A8B9001BBE0FECC
+:10187A00A3E07803CEC313CE13D8F9F0EE9001BBE0
+:10188A00F09001B8E024FD60491470030219521463
+:10189A0070030219C824FE7003021A392405600372
+:1018AA00021A889001B5E0FF3395E0FEC39001BCAF
+:1018BA00E09FFF9001BBE09EFE9001C4F0A3EFF011
+:1018CA00C3EE648094804003021A88E49001C40243
+:1018DA001A859001BBE0FEA3E0FF7C097DC4120BD0
+:1018EA0000780A120A8A9001BBEEF0A3EFF0900189
+:1018FA00BFE0FD3395E0FCC3EF9DFFEE9CFE339500
+:10190A00E0FDFCE47B64FAF9F8120A3BC006C00762
+:10191A009001C3E075F002A424F4FFE5F03401ABB2
+:10192A0007FA3395E0F9F8D007D00612279E9001FE
+:10193A00B3EEF0A3EFF0C3EE648094804003021A82
+:10194A0088E49001B3021A859001BBE0FEA3E0FF90
+:10195A007C097DC4120B00780A120A8A9001BBEE38
+:10196A00F0A3EFF09001C0E0FD3395E0FCC3EF9DDA
+:10197A00FFEE9CFE3395E0FDFCE47B64FAF9F81275
+:10198A000A3BC006C0079001C6E075F002A424F421
+:10199A00FFE5F03401AB07FA3395E0F9F8D007D048
+:1019AA000612279E9001B6EEF0A3EFF0C3EE648014
+:1019BA0094804003021A88E49001B6021A859001C5
+:1019CA00BBE0FEA3E0FF7C097DC4120B00780A127B
+:1019DA000A8A9001BBEEF0A3EFF0E025E0FE900149
+:1019EA00BBE0339001C1F0A3CEF09001C1E0FEA3A9
+:1019FA00E07802C333CE33CED8F9FDAC069001C9E4
+:101A0A00E0FF3395E0FEEF24F8FFEE34FFFE120903
+:101A1A00437C037DE81209559001C1EE8FF012094B
+:101A2A008BC39001C1E0648094805052E4804C9052
+:101A3A0001B5E0FF3395E0FEC39001BCE09FFF9043
+:101A4A0001BBE09EFEE4FCFD7BC47A09F9F8120AA8
+:101A5A003B780A120A9D9001BBEEF0A3EFF0E02555
+:101A6A00E0FF9001BBE033FE9001B9F0A3EFF0C3B1
+:101A7A00EE648094805007E49001B9F0A3F0C23E6E
+:101A8A0022900100E09001B8F0C454F04401F5A599
+:0C1A9A00E49001BBF0A3F09001C8F02222
+:03006B000223B9B4
+:1023B900C0E0C0F0C083C082C0D075D000C000C0EA
+:1023C90006C007E5F330E03FAFA19001BDE4F0A3FB
+:1023D900EFF0E5A25403FE9001BDE04EF0A3E0F05A
+:1023E9009001C8E0C3940850199001BDE0FEA3E034
+:1023F900FF9001BBEE8FF012098B9001C8E004F049
+:102409008005D23E53A5FE75F301D007D006D00052
+:0B241900D0D0D082D083D0F0D0E032D1
+:1027E2009001F77403F075FE7043FF1853B3F14381
+:1027F200B302E47809F6780BF6E018F6780C760165
+:102802007909E718461846F5B175B201A37410F0BC
+:05281200A37468F02230
+:101C7C00E4FE9001C4E0FCA3E0FDC394E8EC940303
+:101C8C0040037F0022EF7003021D92D3ED940FEC02
+:101C9C0094034003021D70ED94CBEC9400500302AE
+:101CAC001D70D3ED94AAEC94024021D217780A76D9
+:101CBC0001301814D3ED94BFEC94024004C2188088
+:101CCC00079001F7E0780AF6E4FE806ED3ED94AA53
+:101CDC00EC94025041ED9437EC94014039D21890B9
+:101CEC0001F7E0780AF6301711D3ED9493EC9402D7
+:101CFC005004C2178004780A7601780C76013012F1
+:101D0C0011D3ED9451EC94015004C2128004E47888
+:101D1C000CF6E4FE8024D3ED9437EC9401501BD2E6
+:101D2C0012E4780CF6301810ED9426EC9401500463
+:101D3C00C2188004780C7601E4FE301511C3ED94C2
+:101D4C00F3EC94025006C215E4FE80027E013016BC
+:101D5C002FD3ED94DDEC94004006C216E4FE8020F7
+:101D6C007E01801CD3ED940FEC94034006D2157EBB
+:101D7C0001800DD3ED94CBEC94005004D2167E016F
+:101D8C00C213C2148058C215C216D3ED949FEC94A2
+:101D9C00035031ED9471EC94004029301310ED9404
+:101DAC0084EC94035006C213E4FE80027E013014CE
+:101DBC002DD3ED9482EC94004006C214E4FE801EF8
+:101DCC007E01801AD3ED949FEC94034004D21380CF
+:101DDC000BC3ED9471EC94005002D2147E01780C7C
+:051DEC00E6F5B2AF06B0
+:011DF10022CF
+:10206A00E4FBFAE5E65480700753B3FE7808F622DB
+:10207A0078087601E5E830E50575E8208005E5E5AC
+:10208A0030E10453B3FE22E5F230E50475F2202272
+:10209A00E5F2540C601353B3FEE5F354C070030227
+:1020AA00213575F20C75F3C02275F3C07F01121C3D
+:1020BA007CEF600653B3FED21922C219E5F230E46E
+:1020CA00289001F8E0FAA3E0246AFFEA34FFFEC38D
+:1020DA009001C2E09F9001C1E09E500575F2108008
+:1020EA000353B3FE78087603227909E7780B46187A
+:1020FA0046F5B1780CE6F5B243B31190015FE0FF03
+:10210A00D394014002C234EFD394034002C230EFA9
+:10211A00D394074002C232EFD3940C4002C231EF8B
+:0B212A00D394114002C2337808760203
+:012135002287
+:10005600303610EFB4010475B5C02253B5BFED4478
+:0400660080F5B5224A
+:0F2A6C00E5B554806008303605E4F5B5C2362272
+:1025AF00C236E5E520E156E5E230E703D23722E512
+:1025BF00E830E00D301B4675E8017D3FE4FF020077
+:1025CF0056E4FF121C7CEF6006122A6CD23522C231
+:1025DF0035303403022A6CD2363037217808E6B40E
+:1025EF00021BC39001C2E094109001C1E06480947B
+:0E25FF008E4005D236C23722122A6CC2362216
+:10291600E5E25408FF9001FBE06F6021E5E230E359
+:10292600089001FA7401F08005E49001FAF0D23FB4
+:0D293600C20FD226D2289001FBEFF0D24153
+:012943002271
+:101AA600E5E2540270319001E275F00112098B9063
+:101AB60001E2E0FEA3E0FFC39417EE94024004D2D5
+:101AC6002E800EC3EF9487EE94004005202D02D29F
+:101AD6002DD22AC22B8041302A37D241E49001E52B
+:101AE600F0C22AD22B9001E4F09001E2E0FEA3E0DE
+:101AF600FFD3941EEE94005008D229D22CD228800F
+:101B06000EC3EF944FEE94015005302D02D22FC232
+:101B16002DE49001E2F0A3F0302B38303635302F2B
+:101B260029200F0280337F031226B89001E4E0D308
+:101B360094235003021C69C22F9001E57402F0E45D
+:101B46009001E1F09001D2F0A3F0302C02C22CC239
+:101B56002BC20F302E2B200F0A7D3FE4FF120056BA
+:101B6600D20F227F031226B89001E4E0D3942350CB
+:101B760003021C69C22EE49001E6F09001E57403AD
+:101B8600F09001FAE064016003021C7B9001E5E03D
+:101B960064026003021C3E9001E1E0C39401501010
+:101BA6007D257F37121621E49001D2F0A3F08070D4
+:101BB6009001E0E0D39405401CE4F07D257F1112EE
+:101BC60016217D247F11121621E49001E5F0D21032
+:101BD6007F03021C789001D3E0B4010F7D247F0AB5
+:101BE6001216219001D37402F080359001D3E0647F
+:101BF60002702D9001D2E060207D257F0A12162109
+:101C0600E49001D2F0A3F09001E1F09001E0F090B1
+:101C160001E5F0D2107F0480597D247F371216210A
+:101C26009001E1E0D39414400A9001E0E004F0E46E
+:101C3600A3F0229001E1802B9001E5E0640370356A
+:101C4600A3E0FFC394B4501FEF540F70047D2580AA
+:101C56000A9001E6E0540770077D247F0B121621D7
+:101C66009001E6E004F022E49001E5F0D210A3F042
+:051C76007F041226B8F6
+:011C7B002246
+:1028B20075FE0675FF3C75FE0E53FF0F75FE0F5336
+:1028C200FFF075FE0375FFFFE4900134F0900133D1
+:1028D200F0900135F0900132F0C282C283C285C20B
+:0228E20084224E
+:102A0700EF14600D14600D14600D2403700BD28257
+:0A2A170022D28322D28422D285222B
+:0529CA00900100E0FF98
+:1029CF00EF14600D14600D14600D2403700BC282A0
+:0A29DF0022C28322C28422C2852294
+:1024F000E4FF74362FF582E43401F583E4F0743A96
+:102500002FF582E43401F583E4F0EF25E0243EF575
+:1025100082E43401F583E4F0A3F0EF25E02446F5EE
+:1025200082E43401F583E4F0A3F0EF25E0244EF5D6
+:1025300082E43401F583E4F0A3F0EF25E02456F5BE
+:0F25400082E43401F583E4F0A3F00FEFB404A3B9
+:01254F002269
+:10248D00AC0774362CF582E43401F583EDF0EAC324
+:10249D0013FEEB13FFEC25E0243EF582E43401F549
+:1024AD0083EEF0A3EFF0AF03EC25E02446F582E4D4
+:1024BD003401F583EAF0A3EFF0900105E0FEA3E00F
+:1024CD00FFEC25E0244EF582E43401F583EEF0A314
+:1024DD00EFF0EC25E02456F582E43401F583E4F0C9
+:0324ED00A3F02237
+:10000E0074362FF582E43401F583EDF0743A2FF552
+:10001E0082E43401F583EBF0EF25E0243EF582E433
+:10002E003401F583E4F0A37469F0EF25E02456F56E
+:0B003E0082E43401F583E4F0A3F0221B
+:10101F00E4900100F0F0900100E0FFC3940440035E
+:10102F0002136174362FF582E43401F583E06022F8
+:10103F0024FE60241470030211291470030211A0FE
+:10104F00240360030212FD900100E0FF122A070241
+:10105F0012FD1229CA0212FD900100E0FF25E024C3
+:10106F003EF582E43401F583E0FCA3E0FDEF25E0DB
+:10107F002456F582E43401F583E0FEA3E0C39DEE30
+:10108F009C5005122A0780031229CA900100E0FF25
+:10109F0025E02446F582E43401F583E0FCA3E0FD6E
+:1010AF00EF25E02456F582E43401F583E0FEA3E05A
+:1010BF00C39DEE9C50030212FD900100E025E02439
+:1010CF0056F582E43401F583E4F0A3F0EF25E02434
+:1010DF004EF582E43401F583E0FEA3E0D39400EEF5
+:1010EF0094004016900100E025E0244EF582E43490
+:1010FF0001F58374FFF5F012098B900100E0FF25D5
+:10110F00E0244EF582E43401F583E0FCA3E04C606B
+:10111F00030212FD74362F0211BC900100E0FF256F
+:10112F00E0243EF582E43401F583E0FCA3E0FDEF1B
+:10113F0025E02456F582E43401F583E0FEA3E0D3E5
+:10114F009DEE9C5005122A0780031229CA900100B8
+:10115F00E0FF25E02446F582E43401F583E0FCA3AB
+:10116F00E0FDEF25E02456F582E43401F583E0FE3F
+:10117F00A3E0C39DEE9C50030212FD900100E025F9
+:10118F00E02456F582E43401F583E4F0A3F0021273
+:10119F00FD900100E0FF243AF582E43401F583E08D
+:1011AF00701712275AC240900100E02436F582E4EE
+:1011BF003401F583E4F00212FD900100E0FF243AC0
+:1011CF00F582E43401F583E0FE6402704B20401495
+:1011DF00D240EF25E0243EF582E43401F583E4F0BC
+:1011EF00A37469F0900100E0FF25E0243EF582E44E
+:1011FF003401F583E475F00112098BEF25E0243EED
+:10120F00F582E43401F583E0FCA3E0C394FEEC9493
+:10121F000050030212E7804EEE6401705A2040170F
+:10122F00D240900100E025E0243EF582E43401F540
+:10123F0083E4F0A374FEF0900100E0FF25E0243E6C
+:10124F00F582E43401F58374FFF5F012098BEF2575
+:10125F00E0243EF582E43401F583E0FEA3E0D3946D
+:10126F0069EE94005072900100E0243AF582E43464
+:10127F0001F583E4F08061900100E0FF243AF582EC
+:10128F00E43401F583E06403704EEF25E0243EF56E
+:10129F0082E43401F583E0FEA3E0FFC394FEEE94F5
+:1012AF00004004D240800BD3EF946AEE94005002BA
+:1012BF00C240900100E025E0243E30400DF582E46D
+:1012CF003401F58374FFF5F0800BF582E43401F5FA
+:1012DF0083E475F00112098B900100E0FF25E024F3
+:1012EF003EF582E43401F583A3E0FD122709900156
+:1012FF0000E0FF701174362FF582E43401F583E0BE
+:10130F00900134F08043900100E0B401102436F5D1
+:10131F0082E43401F583E0900133F0802C900100DA
+:10132F00E0B402102436F582E43401F583E0900135
+:10133F0035F08015900100E0B4030E2436F582E4F9
+:10134F003401F583E0900132F0900100E004F002E7
+:10135F001025E4900100F0900100E0FFC3940450C9
+:10136F001BEF25E02456F582E43401F583E475F094
+:0C137F000112098B900100E004F080DBFB
+:01138B00223F
+:10284C0075FE1E43FF0275FE2143FF0875D4867585
+:10285C00FE2143FF0475FE2143FF02300E0875FE76
+:10286C002453FFC3800675FE2443FF3C9001FE7485
+:03287C000FF02238
+:10006E00D2AC759A01D2B9D2BDD2A9D2AB75FE2946
+:04007E0043FFB0226A
+:102A3700C2ACE4F59AD2B9C2BDC2A9C2AB75FE2930
+:042A470053FF4F22C8
+:092A9600122A3743870202006E88
+:102A4B00E5E254017006201103304104C241C32258
+:022A5B00D32284
+:1025500075FE01E4F5FF122A89122A7BE4F58675DF
+:10256000B7C375FE6A75FF0475FE6C53FF3043FFF9
+:102570004A12266475FE8043FF0275FE0E53FFFC6F
+:1025800043FF0175FE1775FF3CD2A8D2AF1227E2B8
+:102590007D697F03122A211228B21224F012284CDE
+:0F25A0009001FE740FF0C20F9001F07401F02251
+:03000300020006F2
+:03000600D24132B2
+:03004B00022A9FE7
+:062A9F0075EB3CD2413250
+:03005300022AA5D9
+:062AA50075F302D241327C
+:0D2A890075BB03759DDC759B92439A01227D
+:06287F00900126120AD1AF
+:10288500E4900129F0F0900129E0C39FE49E501CDB
+:102895002039FDD239900126E475F001120ABA12E9
+:0C28A50008A8F59C900129E004F080DAFE
+:0128B1002204
+:0300830002213621
+:10213600C0E0C083C082C0D075D000C000C003C05C
+:1021460005C006C007E59B30E105539BFDC239E596
+:102156009B30E079539BFED2419001F3E01460235B
+:1021660004706AE59C9001F3B4AA127401F0A3E42A
+:10217600F0E0FF04F074502FF8A69C8050E4F0A322
+:10218600F0804A9001F4E0FF04F074502FF8A69C0A
+:10219600E0FDB407177856E6FEE42409FFE43EFEA8
+:1021A60018E6FBEF4BFFA3EEF0A3EFF0EDFF900177
+:1021B600F5E07003A3E06F60099001F4E0D394208A
+:1021C600400B9001F4E4F09001F3F0D23AD007D03E
+:1021D60006D005D003D000D0D0D082D083D0E03254
+:062817004301F00402027F
+:10298A009001C7E0FF04F012186A9001C7E0B4068C
+:10299A000204F09001C7E0C3940840037402F022D5
+:1029E900122916121AA612260D301A11C21A12200D
+:0E29F9006A1225AF12232C120C5012138C22DE
+:101DF200E4900100F09001F0E0FFA3E0FE6F605577
+:101E0200A3EEF09001F0E0A3F024FE603214603FF4
+:101E120024026003021F53900105E4F0A37403F04F
+:101E22007B647A007D02E4FF12248D900105E4F0C8
+:101E3200A37403F07B647A007D027F0102248D206B
+:101E42000E03021F53D23F75E80CC20DC20E229040
+:101E520001FE021EE29001F1E024FE60351460678B
+:101E6200147003021EED24036003021F539001EE5F
+:101E7200E004F0E0C394085003021F539001F07491
+:101E820002F0E49001EEF090015FE06003021F5364
+:101E92008052E5F6700CE5F87008E5FA7004E5E1A9
+:101EA200601E9001F07403F0E5F6540F64087003AD
+:101EB2007404F075E11F75F60F75F8FC75FABC2213
+:101EC2009001F07403F022201E03021F53C21E90E1
+:101ED20001FEE0D39400400CE014F0304173C241A3
+:101EE200740FF0229001F07404F022122A4B505B1E
+:101EF20012284C7F041226B8122A6CE4900105F0D5
+:101F0200A3F0FBFAFDFF12248DE4900105F0A3F08B
+:101F1200FBFAFD7F0112248DE4900105F0A3F0FB92
+:101F2200FAFD7F0212248DE4900105F0A3F0FBFA82
+:101F3200FD7F0312248D9001347402F0900133F07E
+:101F4200900135F0900132F0022A969001F074026D
+:011F5200F09E
+:011F5300226B
+:1028E400301D26C21D9001EFE0FF04F0EF14600CD0
+:1028F40014600E2402701212298A800D1229E980B4
+:1029040008121DF2E49001EFF0301F05C21F1210EF
+:022914001F2280
+:1026B800EF24FE601E14602814602F24FE60352469
+:1026C80005703D43BDAA53BDAA75FE6F53FFF24383
+:1026D800FF092243BDCC75FE6F53FFFE43FF0C225A
+:1026E80053BD7753B7CF43B7302253B7CF43B70360
+:1026F80053BD772253B7CC53BD7775FE6A43FF307D
+:0127080022AE
+:10138C002036030215F1303F59200F0A7D3FE4FF50
+:10139C00120056D20F227F031226B8E490018DF072
+:1013AC0090018BF0A3F0C200C201D20B9001FAE0C5
+:1013BC007020C227D202D203C205C208C204C209DD
+:1013CC00C20AD211C2429001AEF0A3F09001B1F06A
+:1013DC008008C202C203D205C206C20FC20DC20EE1
+:1013EC00C23F90018BE0C394055003021590300B63
+:1013FC0005C20B021564200022D200E5E354A06064
+:10140C0015E5E354A064A09001B070057402F0805F
+:10141C000A7401F08005E49001B0F030057C900175
+:10142C008CE0C3940550077F061226B88027200154
+:10143C003B90018DE0FFD39414501FEF54037004C4
+:10144C007D24800990018DE020E0077D257F0D1221
+:10145C00162190018DE004F080407F041226B8E440
+:10146C0090018DF0D201D210C211802E9001E5E0D6
+:10147C007028301004C2108019E5E354A0FF9001CD
+:10148C008AE06F7001E46012E5E354A06004D22797
+:10149C00D228E5E354A090018AF02002030215EE55
+:1014AC0030423F200F237D3FE4FF120056D20FD273
+:1014BC0011E49001AEF0A3F09001B1F090018BF02B
+:1014CC00C208D20BC200D204227F031226B8C20F6C
+:1014DC00D20390018BE0D394035003021590C242C7
+:1014EC00804F20044C90018CE0FFD39414501CEFDF
+:1014FC00540370047D24800990018CE020E0077D6A
+:10150C00257F0D12162190018C807990018DE0FFC2
+:10151C00D39414501CEF540370047D248009900163
+:10152C008DE020E0077D257F3712162190018D80FC
+:10153C0053E5E8540C6026200E1E90018DE004F05B
+:10154C00E0C394055003021620E4F075E80C7F0309
+:10155C001226B8D20DC211227F040226B8C20DC2C7
+:10156C000E3003097F031226B8C203807520083D94
+:10157C00E5E354AC64AC600330302190018BE0D3D4
+:10158C0094285004E004F022D208E490018EF090EC
+:10159C00018BF0C2097F041226B880469001AFE09F
+:1015AC0070407B017A017991120086803590018E12
+:1015BC00E0FFD39414501FEF540370047D24800972
+:1015CC0090018EE020E0077D257F05121621900109
+:1015DC008EE004F0800C200909D2097F041226B891
+:1015EC00C211C2072220070BD2077F041226B8C2F1
+:1015FC00118019E5E354A0FF90018AE06F7001E4BB
+:10160C006012E5E354A06004D227D228E5E354A08D
+:04161C0090018AF0BF
+:0116200022A7
+:06008600900100120AD1F6
+:10008C009001B1E014700302016714700302023E88
+:10009C001470030202A914700302041524046003F3
+:1000AC00020595900100120AB190001E1208C16061
+:1000BC00030205959001B2E0D3940A5028E004F0B5
+:1000CC0090001A743F120921300C0302059590011F
+:1000DC0000120AB190001A1208C1FDE4FF1200567A
+:1000EC00D20C020595E49001B2F0C20C9001001202
+:1000FC000AB1900016E4120921900015E4120921AE
+:10010C00900013E4120921900012E41209219000CE
+:10011C0011E4120921900010E4120921900018E456
+:10012C00120921900017E412092190000EE4F5F059
+:10013C00120A0E90000CE4F5F0120A0E900019E46D
+:10014C0012092190001B743F1209219001B1740116
+:10015C00F0E490018FF0A3F0020595E5E3540860FC
+:10016C001CE5E354046016900100120AB190001EC5
+:10017C007401120921E49001B1F0020595E5E354F4
+:10018C0008704C9001B6E0FEA3E0FF900100120A4B
+:10019C00B1900002EE8FF0120A0E7C007D05120960
+:1001AC0055EF7802C333CE33CED8F9FF900100124D
+:1001BC000AB1900006EE8FF0120A0E9001B7E025FE
+:1001CC00E0FF9001B6E03390000A8FF0120A0EE5C2
+:1001DC00E3540470519001B3E0FEA3E0FF900100E2
+:1001EC00120AB1EE8FF01209EF9001B3E0FEA3E01A
+:1001FC00FF7C007D05120955EF7802C333CE33CE58
+:10020C00D8F9FF900100120AB1900004EE8FF012A1
+:10021C000A0E9001B4E025E0FF9001B3E0339000AA
+:10022C00088FF0120A0E900100120AB190001D0204
+:10023C00058AD3900190E0940590018FE0940050D2
+:10024C00028069E490018FF0A3F0E5E35408701F7D
+:10025C009001B6E0FEA3E0FF900100120AB19000FD
+:10026C000EEE8FF0120A0E9000187401120921E59F
+:10027C00E35404701F9001B3E0FEA3E0FF90010073
+:10028C00120AB190000CEE8FF0120A0E9000177447
+:10029C00011209219001B17403F0020595D390016C
+:1002AC0090E0940290018FE09400500AE475F00104
+:1002BC0012098B020595E490018FF0A3F0900100D8
+:1002CC00120AB190000A1209B7FFAEF090000E129C
+:1002DC0009B7D39FE5F09E501C900100120AB19013
+:1002EC0000081209B7FFAEF090000C1209B7D39FAB
+:1002FC00E5F09E4011E49001B1F0900100120AB1BA
+:10030C0090001D0203D7900100120AB19000181240
+:10031C0008C16401706D90000E1209B7FFAEF0D3E6
+:10032C009414EE94005031E5E330E31F9000167402
+:10033C000112092190001A1208C1C3943F40449045
+:10034C000100120AB1900018E48035900100120AE5
+:10035C00B190001374018028900100120AB1900032
+:10036C00061209B7FDD3EF9DEE95F0900100400801
+:10037C00120AB19000138006120AB1900016740193
+:10038C00120921900100120AB19000171208C164E1
+:10039C0001600302059590000C1209B7FFAEF0D373
+:1003AC009414EE94005034E5E330E222900015747E
+:1003BC000112092190001A1208C1C3943F50030284
+:1003CC000595900100120AB1900017E48035900158
+:1003DC0000120AB190001274018028900100120AD8
+:1003EC00B19000041209B7FDD3EF9DEE95F090018A
+:1003FC00004008120AB19000128006120AB1900057
+:10040C00157401120921020595D3900190E0941402
+:10041C0090018FE094005031E475F00112098B903B
+:10042C0001B6E0FEA3E0FF900100120AB190000EAD
+:10043C00EE8FF0120A0E9001B3E0FFA3E090000CD7
+:10044C00CF8FF0120A0E020595E490018FF0A3F005
+:10045C00900100120AB19000181208C164016003E7
+:10046C000204F39000171208C16401707A90000620
+:10047C001209B7FFAEF090000E1209B7FDACF0C335
+:10048C009FEC9E4018900100120AB190000A1209CC
+:10049C00B7FFD3ED9FEC95F050030205959001004A
+:1004AC00120AB19000041209B7FFAEF090000C12C2
+:1004BC0009B7FDACF0C39FEC9E4018900100120AE6
+:1004CC00B19000081209B7FFD3ED9FEC95F05003E3
+:1004DC00020595900100120AB190001674011209E0
+:1004EC002190001502058A900100120AB1900018A3
+:1004FC001208C1640170419000061209B7FFAEF0FA
+:10050C0090000E1209B7FDACF0C39FEC9E40159005
+:10051C000100120AB190000A1209B7FFD3ED9FEC4B
+:10052C0095F04014900100120AB19000167401125B
+:10053C0009219001B17402F0900100120AB19000EF
+:10054C00171208C1640170419000081209B7FFAE80
+:10055C00F090000C1209B7FDACF0D39FEC9E501537
+:10056C00900100120AB19000041209B7FFC3ED9F6D
+:10057C00EC95F05014900100120AB1900015740122
+:10058C001209219001B17402F0900100120AB1908D
+:10059C0000181208C1FF6401600D9000171208C109
+:1005AC00640160030207989000131208C1FE6401F5
+:1005BC00600D9000121208C164016003020712EF73
+:1005CC00B4011E9000171208C1B40115EEB401114C
+:1005DC009000131208C1B4010890001474011209A0
+:1005EC00219000181208C1FFB401189000171208CE
+:1005FC00C170109000131208C16401702390001494
+:10060C0004801AEF701A9000171208C1B4011190EF
+:10061C0000121208C1B401089000147401120921CF
+:10062C00900013E4120921900012E41209219000A9
+:10063C00141208C1640160030207B1900100120A90
+:10064C00B190001A1208C1D39400400890001A749B
+:10065C00FE1208EE9000191208C1FF90001A120841
+:10066C00C1D39F40219001C2E024C8FF9001C1E09A
+:10067C003400FEC39001BAE09FEE6480F89001B99B
+:10068C00E06480985048900100120AB19000191251
+:10069C0008C1FF90001A1208C1D39F90010050139B
+:1006AC00120AB190001AEF12092190001CE41209F1
+:1006BC00218013120AB190001C74011209219000C0
+:1006CC001A74021208EE9001B17404F080139001B8
+:1006DC00B17402F0900100120AB190001CE41209EE
+:1006EC0021E490018FF0A3F0900100120AB1900068
+:1006FC0014E412092190001C1208C1FF90001A1278
+:10070C0008C1FD020795900100120AB19000161263
+:10071C0008C16401600D9000151208C164016003EA
+:10072C000207B1900016E4120921900015E4120999
+:10073C002190001A1208C1C3943F500E9001001270
+:10074C000AB190001A74021208EE9001B17404F010
+:10075C00900100120AB190001B1208C1FF90001A00
+:10076C001208C1C39F4013900100120AB190001AE5
+:10077C00EF1209219001B17401F0900100120AB13D
+:10078C0090001A1208C1FDE4FF0200569001B1E07E
+:10079C00D394024010E4F0900100120AB190001EB4
+:0507AC00740112092197
+:0107B1002225
+:10281D00602A01600BB80BEA0C1C0C800CB20CE4A6
+:10282D000D160D480D7A0DAC0E100E420E740EA63F
+:0E283D000ED80F0A0F3C0F870FD2101D106827
+:10232C00E4FFEF25E02460F582E43401F583E0FC62
+:10233C00A3E0FDC39001C2E09D9001C1E09C40056B
+:10234C000FEFB415DD90015FE0FEEFD39E90015EC0
+:10235C00E0400404F0800214F0E5E16008E4F5E1EB
+:10236C0090015FEFF090015EE0FED394BE5006EE5C
+:10237C00C3940A500B90015FEFF090015E7464F00F
+:10238C0090015FE0FFD394005002D234EFD394015C
+:10239C005002D230EFD394055002D232EFD3940ACC
+:0C23AC005002D231EFD3940F5002D23314
+:0123B8002202
+:102424009001ECE06062E4F0D21C9001EAE004F078
+:10243400E0C394054004E4F0D21D9001EDE004F003
+:10244400E0C3940A4004E4F0D21F9001E7E475F07D
+:102454000112098BC39001E8E094649001E7E094D1
+:10246400004006E4F0A3F0D21A9001E9E004F0E0A1
+:10247400C394FA4013E4F0D21B9001EBE004F0E0C3
+:0924840094044004E4F0D21E228D
+:03000B0002294483
+:10294400C0E0C083C082C0D074FC258CF58C746652
+:10295400258AF58A9001EC7401F0D0D0D082D0831E
+:03296400D0E0328E
+:0E2A7B00758901758CFC758A66D2A9D28C22F1
+:10275A00EFD39401501675FE0EEF25E02404FE74A3
+:10276A0003A806088002C333D8FC801475FE0FEF55
+:10277A0024FE25E0FE7403A806088002C333D8FCB1
+:10278A00F452FFEFB4040C75FE0F53FFF075FE0E02
+:04279A0053FF0F22B8
+:102A210075FE54EF5407F5FF75FE56AF058FFF7520
+:062A3100FE5375FF0122B7
+:10270900EFD39401501875FE0EEF25E02404FE74F2
+:1027190003A806088002C333D8FC42FF801675FE61
+:102729000FEF24FE25E0FE7403A806088002C333D8
+:10273900D8FC42FFEF70038DCE22EFB401038DCF99
+:1027490022EFB402038DDE22EFB40304AF058FDF5D
+:01275900225D
+:032FFD00010102CD
+:10296700E4FB7D04FF12000EE4FB7D047F011200EF
+:102977000EE4FB7D047F0212000EE4FB7D047F035F
+:0329870002000E3D
+:100C500030285AC228E49001FCF090015EF0900127
+:100C600005F0A3F0FBFAFDFF12248DE4900105F0DE
+:100C7000A3F0FBFAFD7F0112248DE4900105F0A39F
+:100C8000F0FBFAFD7F0212248DE4900105F0A3F041
+:100C9000FBFAFD7F0312248D9001347402F0900161
+:100CA00033F0900135F0900132F0D2412220190F3B
+:100CB00020350C200D03020D66300E03020D662058
+:100CC0002205D222D22822900134E06402601A90D8
+:100CD0000105E4F0A3740AF07B147A007D02E4FFBE
+:100CE00012248D9001347403F0900133E0640260AB
+:100CF0001A900105E4F0A3740AF07B147A007D02D7
+:100D00007F0112248D9001337403F0900135E0646B
+:100D100002601A900105E4F0A3740AF07B147A00D3
+:100D20007D027F0212248D9001357403F090013210
+:100D3000E06402601A900105E4F0A3740AF07B14E9
+:100D40007A007D027F0312248D9001327403F0201B
+:100D50000D0302101E9001FCE0C394285003020E04
+:100D60009CD20ED2282230220CC222C224C223C21C
+:100D700026C227D2427808E6FF7003020E7664038B
+:100D8000705E202407D224C223022967E490010563
+:100D9000F0A3F0FBFA7D01FF12248DE4900105F031
+:100DA000A3F0FBFA7D017F0112248DE4900105F090
+:100DB000A3F0FBFA7D017F0212248DE4900105F07F
+:100DC000A3F0FBFA7D017F0312248D90013474019E
+:100DD000F0900133F0900135F0900132F0020E6D89
+:100DE00020230DD223C224D228E49001FDF0807D7F
+:100DF0009001FCE0C394015055E004F0A3E01460BE
+:100E00001A14602714603424037062900134E06483
+:100E100004605A7B017D04E4FF802E900133E0647E
+:100E200004604A7B017D047F01801E900135E064EF
+:100E300004603A7B017D047F02800E900132E06401
+:100E400004602A7B017D047F0312000E801F900145
+:100E5000FCE0C3940F5005E004F08011E49001FC25
+:100E6000F0A3E004F0E0C394044002E4F0C226C220
+:100E700027C229D2252230230AC223122967D22869
+:100E8000D2422220260C20250920270620290302F1
+:100E9000101E9001FCE0FFC394015004E004F02216
+:100EA000EFC394644003020FC99001FCE004F030EA
+:100EB0003237900134E06403700302101EE49001A5
+:100EC00005F0A3F07B64FA7D03FF12248D900134BA
+:100ED0007404F0E4900105F0A3F0FBFAFD7F011229
+:100EE000248D9001337402802D303141E49001054E
+:100EF000F0A3F0FBFA7D01FF12248D900134740100
+:100F0000F0E4900105F0A3F0FBFA7D017F011224CB
+:100F10008D9001337401F0E4900105F0A3F0FBFA29
+:100F2000FD7F0212248D90013574028043E490010C
+:100F300005303353F0A3F0FBFA7D01FF12248D90AE
+:100F400001347401F0E4900105F0A3F0FBFA7D0197
+:100F50007F0112248D9001337401F0E4900105F0BB
+:100F6000A3F0FBFA7D017F0212248D9001357401FC
+:100F7000F0E4900105F0A3F0FBFAFD7F0312248D4D
+:100F80009001327402F022F0A3F0FBFA7D01FF120F
+:100F9000248DE4900105F0A3F0FBFA7D017F01129E
+:100FA000248DE4900105F0A3F0FBFA7D017F02128D
+:100FB000248DE4900105F0A3F0FBFA7D017F03127C
+:100FC000248D90013474018048C226C225C227C2F4
+:100FD00029E4900105F0A3F0FBFAFDFF12248DE453
+:100FE000900105F0A3F0FBFAFD7F0112248DE4903F
+:100FF0000105F0A3F0FBFAFD7F0212248DE49001BD
+:1010000005F0A3F0FBFAFD7F0312248D90013474E8
+:0E10100002F0900133F0900135F0900132F0C3
+:01101E0022AF
+:1029AA00000000000000000000000000000000001D
+:1029BA00000000000000000000000000000000000D
+:0E21E600900126120AD1900129ECF0A3EDF031
+:1021F40074FFA3F0A3F0A37410F0A37421F0E4A37C
+:10220400F090012974FFF5F01209A145F060709077
+:102214000126E475F001120ABA1208A890012FF001
+:10222400E0FE90012BE06EF0A3E0F0E4900130F0CA
+:10223400A3F0C3900131E09408900130E094005081
+:10224400C090012BE0FEA3E0FFEE30E719EF25E09C
+:10225400FFEE33FEA3E06EFEA3E06FFF90012BEED2
+:10226400F0A3EFF0800D90012CE025E0F090012B1D
+:10227400E033F0900130E475F00112098B80B390E3
+:07228400012BE0FEA3E0FFC7
+:01228B002230
+:08162100900100EFF0A3EDF0D1
+:10162900E4A3F0A3F078047C017D017BFF7A29799A
+:10163900AAFE7F20120882E4900124F0A3F0900111
+:101649000474AAF0900101E0FE900105F0900100F8
+:10165900E0900106F0A3E4F09001FAE0900108F0AF
+:10166900900100E0120ADA16DF0516A20A16F00B3D
+:1016790016FA0D17430E17980F16F011186912165E
+:101689008F37000017A4E4900109F0A3F07B0678D6
+:1016990040E4F608DBFC0217A4900109740EF0E49B
+:1016A900A3F0FB74402BF8E6FD740B2BF582E434B0
+:1016B90001F583EDF00BEBB406E9E4FB74462BF876
+:1016C900E6FD74112BF582E43401F583EDF00BEBA3
+:1016D900B408E90217A49001097401F0E4A3F0A287
+:1016E9003B33A3F00217A4E4900109F0A3F0021719
+:1016F900A49001097405F0E4A3F0A37410F0F0A319
+:101709007401F07808E65402C4333354C0FD9001E3
+:101719005FE075F005A44D90010DF0EEB42405903D
+:1017290001DC800A900101E0B425089001DDE09018
+:10173900010EF0E490010FF08061900109740AF044
+:10174900E4A3F07829E6A3F0E4FBEBFF7829E6FDB2
+:101759002FFFE433FED3EF9416EE64809480400F9C
+:10176900740C2BF582E43401F58374FFF08013EDDA
+:101779002B242AF8E6FF740C2BF582E43401F58357
+:10178900EFF00BEBB409C37829740926F6800C90A5
+:1017990001097401F0E4A3F0A304F090010AE0FE4A
+:1017A900900109E0FDED2407FFE43EFE900102F0FF
+:1017B900FCA3EFF0FD7B017A0179041221E6900187
+:1017C90024EEF0A3EFF0900124E0FEA3E0FD9001E8
+:1017D90002E0FAA3E02404F58274013AF583EDF0FE
+:1017E900EEFF900102E475F00112098BFC740425E7
+:1017F900F0F58274013CF583EFF07F011226B89071
+:101809000101E0FFB4240843BD0253BDFE8016EF79
+:10181900B4250843BD2053BDEF800AEFB421064328
+:10182900BD2253BDEE900103E02402FF900102E0C6
+:101839003400FE7B017A01790412287F900101E0CE
+:10184900FFB4240753BDFD43BD0122EFB42507535F
+:10185900BDDF43BD1022EFB4210653BDDF43BD11E7
+:01186900225C
+:101F54007851E6C4540FFD54036003022069EF1264
+:101F64000ADA1FA90A1FBB0B1FCB0D20360E20480F
+:101F74000F205A111F7F3700002069E4FE7855E6D0
+:101F8400FFEEC39F500F74572EF8E6FF74402EF8EF
+:101F9400A6070E80E8EDB404069001D202206690F4
+:101FA40001D3022066ED7857B40406E69001D6F01A
+:101FB40022E69001D7F022EDB404069001DA022063
+:101FC400669001DB022066ED640478597032E6FE07
+:101FD400547F9001DCF0EEC413131354019001CA32
+:101FE400F008E6784EF6785BE6FE54019001D4F0F2
+:101FF400EEC31354019001DEF008E69001D8F022FC
+:10200400E6FE547F9001DDF0EEC4131313540190E7
+:1020140001CBF008E6784FF6785BE6FE54019001B8
+:10202400D5F0EEC31354019001DFF008E69001D916
+:10203400F022ED7857B40406E69001D0F022E69041
+:1020440001D1F022ED7857B40406E69001CCF022D9
+:10205400E69001CDF022EDB404059001CC8003900C
+:0520640001CD7401F044
+:012069002254
+:10260D00E4900100F0A3F0A3F0303A4AC23A7856B4
+:10261D00E6FEE42407FFE43EFE18E6FDEF4DFF90D5
+:10262D000101EEF0FCA3EFF0FD7B007A0079501272
+:10263D0021E6AC06AD07900101A3E0FB2452F8E6BC
+:10264D00FE74512BF8E6FBEBB5050BEEB5040778E0
+:06265D0052E6FF121F54BB
+:012663002254
+:1022AC00022A5DE493A3F8E493A34003F68001F2C1
+:1022BC0008DFF48029E493A3F85407240CC8C33333
+:1022CC00C4540F4420C8834004F456800146F6DF02
+:1022DC00E4800B0102040810204080902817E47E53
+:1022EC00019360BCA3FF543F30E509541FFEE493F7
+:1022FC00A360010ECF54C025E060A840B8E493A3BE
+:10230C00FAE493A3F8E493A3C8C582C8CAC583CAE8
+:10231C00F0A3C8C582C8CAC583CADFE9DEE780BEA0
+:01284B00008C
+:1007B200E709F608DFFA8046E709F208DFFA803E29
+:1007C20088828C83E709F0A3DFFA8032E309F60816
+:1007D200DFFA8078E309F208DFFA807088828C837E
+:1007E200E309F0A3DFFA806489828A83E0A3F60832
+:1007F200DFFA805889828A83E0A3F208DFFA804C0C
+:1008020080D280FA80C680D4806980F280338010E2
+:1008120080A680EA809A80A880DA80E280CA80334B
+:1008220089828A83ECFAE493A3C8C582C8CCC583C3
+:10083200CCF0A3C8C582C8CCC583CCDFE9DEE78093
+:100842000D89828A83E493A3F608DFF9ECFAA9F012
+:10085200EDFB2289828A83ECFAE0A3C8C582C8CC68
+:10086200C583CCF0A3C8C582C8CCC583CCDFEADE81
+:10087200E880DB89828A83E493A3F208DFF980CCE3
+:1008820088F0EF60010E4E60C388F0ED2402B404DC
+:100892000050B9F582EB2402B4040050AF23234583
+:0608A2008223900802739E
+:1008A800BB010689828A83E0225002E722BBFE024E
+:0908B800E32289828A83E4932281
+:1008C100BB010CE58229F582E5833AF583E02250EC
+:1008D10006E92582F8E622BBFE06E92582F8E22236
+:0D08E100E58229F582E5833AF583E4932250
+:1008EE00BB010FF8E58229F582E5833AF583E0280E
+:1008FE00F0225009C58229F8E58226F622BBFE09B0
+:10090E00C58229F8E22582F222F8EA2583F583E9E9
+:03091E00932822F9
+:10092100F8BB010DE58229F582E5833AF583E8F00C
+:10093100225006E92582C8F622BBFE05E92582C8B8
+:02094100F222A0
+:10094300EF8DF0A4A8F0CF8CF0A428CE8DF0A42EC8
+:02095300FE2282
+:10095500C2D5EC30E709B2D5E4C39DFDE49CFCEEBD
+:1009650030E715B2D5E4C39FFFE49EFE120B2DC3FD
+:10097500E49DFDE49CFC8003120B2D30D507C3E4F8
+:060985009FFFE49EFE222C
+:10098B00C5F0F8A3E028F0C5F0F8E58215827002F7
+:06099B001583E038F02294
+:1009A100A3F8E0C5F025F0F0E58215827002158309
+:0609B100E0C838F0E82266
+:1009B700BB0110E58229F582E5833AF583E0F5F07E
+:1009C700A3E0225009E92582F886F008E622BBFE5B
+:1009D7000AE92582F8E2F5F008E222E5832AF583A1
+:0809E700E993F5F0A3E9932266
+:1009EF00BB010A89828A83F0E5F0A3F0225006F753
+:0F09FF0009A7F01922BBFE06F3E5F009F3192250
+:100A0E00F8BB0111E58229F582E5833AF583E8F01A
+:100A1E00E5F0A3F0225009E92582C8F608A6F022D7
+:0D0A2E00BBFE09E92582C8F2E5F008F222BE
+:100A3B00E88FF0A4CC8BF0A42CFCE98EF0A42CFC5A
+:100A4B008AF0EDA42CFCEA8EF0A4CDA8F08BF0A4D8
+:100A5B002DCC3825F0FDE98FF0A42CCD35F0FCEB37
+:100A6B008EF0A4FEA9F0EB8FF0A4CFC5F02ECD39FC
+:0F0A7B00FEE43CFCEAA42DCE35F0FDE43CFC2269
+:10279E00C2D5E830E70FB2D5E4C39BFBE49AFAE466
+:1027AE0099F9E498F8EC30E717B2D51227D4120B4A
+:1027BE00BEE4C39BFBE49AFAE499F9E498F880032B
+:1027CE00120BBE30D50DE4C39FFFE49EFEE49DFDCB
+:0427DE00E49CFC2259
+:100A8A00E8600FECC313FCED13FDEE13FEEF13FF4A
+:030A9A00D8F1226E
+:100A9D00E86010ECA2E713FCED13FDEE13FEEF136F
+:040AAD00FFD8F0225C
+:090AB100E0FBA3E0FAA3E0F92246
+:100ABA00F8E0FBA3A3E0F925F0F0E58215827002C5
+:070ACA001583E0FA38F02269
+:090AD100EBF0A3EAF0A3E9F02226
+:100ADA00D083D082F8E4937012740193700DA3A3AB
+:100AEA0093F8740193F5828883E4737402936860BF
+:060AFA00EFA3A3A380DFBF
+:100B0000EC8EF0A4CCC5F0CCCDF8EFA4CEC5F02D82
+:100B1000FDE43CFCE8A42EC8C5F03DFDE43CFCEF40
+:0D0B2000A4FFE5F028FEE43DFDE43CFC22CE
+:100B2D00BC000BBE0029EF8DF084FFADF022E4CCAC
+:100B3D00F875F008EF2FFFEE33FEEC33FCEE9DEC75
+:100B4D00984005FCEE9DFE0FD5F0E9E4CEFD22EDBB
+:100B5D00F8F5F0EE8420D21CFEADF075F008EF2F05
+:100B6D00FFED33FD4007985006D5F0F222C398FDF6
+:050B7D000FD5F0EA2293
+:100B820075F008758200EF2FFFEE33FECD33CDCC2A
+:100B920033CCC58233C5829BED9AEC99E5829840AD
+:100BA2000CF582EE9BFEED9AFDEC99FC0FD5F0D68A
+:100BB200E4CEFBE4CDFAE4CCF9A88222B800C1B9B4
+:100BC2000059BA002DEC8BF084CFCECDFCE5F0CBF2
+:100BD200F97818EF2FFFEE33FEED33FDEC33FCEB2B
+:100BE20033FB10D703994004EB99FB0FD8E5E4F9E6
+:100BF200FA227818EF2FFFEE33FEED33FDEC33FCD3
+:100C0200C933C910D7059BE99A4007EC9BFCE99AC6
+:100C1200F90FD8E0E4C9FAE4CCFB2275F010EF2F0B
+:100C2200FFEE33FEED33FDCC33CCC833C810D7070B
+:100C32009BEC9AE899400AED9BFDEC9AFCE899F846
+:0E0C42000FD5F0DAE4CDFBE4CCFAE4C8F922D9
+:00000001FF
diff --git a/Out/8837_EVB_250214_1117_5C91_010102.bin b/Out/8837_EVB_250214_1117_5C91_010102.bin
new file mode 100644
index 0000000..27a2031
Binary files /dev/null and b/Out/8837_EVB_250214_1117_5C91_010102.bin differ
diff --git a/Project/SY8837_Demo.uvgui.GH b/Project/SY8837_Demo.uvgui.GH
index 6452b0e..81369ff 100644
--- a/Project/SY8837_Demo.uvgui.GH
+++ b/Project/SY8837_Demo.uvgui.GH
@@ -6,7 +6,7 @@
### uVision Project, (C) Keil Software
- E:\todaywork\20241202_tp3410\SY8837_Demo\UsrSrc\display
+ E:\todaywork\20241202_tp3410\SY8837_Demo\UsrSrc\comm
@@ -93,8 +93,8 @@
2
3
- -32000
- -32000
+ -1
+ -1
-1
@@ -110,8 +110,8 @@
0
- 1585
- 010000000400000001000000010000000100000001000000000000000200000000000000010000000100000000000000280000002800000001000000100000000F0000000100000036453A5C746F646179776F726B5C32303234313230325F7470333431305C5359383833375F44656D6F5C5573725372635C6D61696E2E6300000000066D61696E2E6300000000C5D4F200FFFFFFFF40453A5C746F646179776F726B5C32303234313230325F7470333431305C5359383833375F44656D6F5C5573725372635C766F785C766F785F6D6F64756C652E63000000000C766F785F6D6F64756C652E6300000000FFDC7800FFFFFFFF4C453A5C746F646179776F726B5C32303234313230325F7470333431305C5359383833375F44656D6F5C5573725372635C6469736368617267655C6469736368617267655F6D6F64756C652E6300000000126469736368617267655F6D6F64756C652E6300000000BECEA100FFFFFFFF41453A5C746F646179776F726B5C32303234313230325F7470333431305C5359383833375F44656D6F5C5573725372635C757365726170705C757365726170702E630000000009757365726170702E6300000000F0A0A100FFFFFFFF40453A5C746F646179776F726B5C32303234313230325F7470333431305C5359383833375F44656D6F5C5372635C737461727475705C535441525455502E413531000000000B535441525455502E41353100000000BCA8E100FFFFFFFF3B453A5C746F646179776F726B5C32303234313230325F7470333431305C5359383833375F44656D6F5C557372496E635C757365725C757365722E680000000006757365722E68000000009CC1B600FFFFFFFF39453A5C746F646179776F726B5C32303234313230325F7470333431305C5359383833375F44656D6F5C5573725372635C6B65795C6B65792E6300000000056B65792E6300000000F7B88600FFFFFFFF3C453A5C746F646179776F726B5C32303234313230325F7470333431305C5359383833375F44656D6F5C557372496E635C696E635C636F6E6669672E680000000008636F6E6669672E6800000000D9ADC200FFFFFFFF48453A5C746F646179776F726B5C32303234313230325F7470333431305C5359383833375F44656D6F5C557372496E635C636861726765725C636861726765725F6D6F64756C652E680000000010636861726765725F6D6F64756C652E6800000000A5C2D700FFFFFFFF40453A5C746F646179776F726B5C32303234313230325F7470333431305C5359383833375F44656D6F5C557372496E635C766F785C766F785F6D6F64756C652E68000000000C766F785F6D6F64756C652E6800000000B3A6BE00FFFFFFFF39453A5C746F646179776F726B5C32303234313230325F7470333431305C5359383833375F44656D6F5C5573725372635C6164635C6164632E6300000000056164632E6300000000EAD6A300FFFFFFFF39453A5C746F646179776F726B5C32303234313230325F7470333431305C5359383833375F44656D6F5C5573725372635C6C65645C6C65642E6300000000056C65642E6300000000F6FA7D00FFFFFFFF3B453A5C746F646179776F726B5C32303234313230325F7470333431305C5359383833375F44656D6F5C5573725372635C68616C6C5C68616C6C2E63000000000668616C6C2E6300000000B5E99D00FFFFFFFF3B453A5C746F646179776F726B5C32303234313230325F7470333431305C5359383833375F44656D6F5C5573725372635C756172745C756172742E630000000006756172742E63000000005FC3CF00FFFFFFFF39453A5C746F646179776F726B5C32303234313230325F7470333431305C5359383833375F44656D6F5C557372496E635C6164635C6164632E6800000000056164632E6800000000C1838300FFFFFFFF3F453A5C746F646179776F726B5C32303234313230325F7470333431305C5359383833375F44656D6F5C5573725372635C73797374656D5C73797374656D2E63000000000873797374656D2E6300000000CACAD500FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000F40000006600000080070000C3020000
+ 1767
+ 01000000040000000100000001000000010000000100000000000000020000000000000001000000010000000000000028000000280000000100000012000000030000000100000036453A5C746F646179776F726B5C32303234313230325F7470333431305C5359383833375F44656D6F5C5573725372635C6D61696E2E6300000000066D61696E2E6300000000C5D4F200FFFFFFFF40453A5C746F646179776F726B5C32303234313230325F7470333431305C5359383833375F44656D6F5C5573725372635C766F785C766F785F6D6F64756C652E63000000000C766F785F6D6F64756C652E6300000000FFDC7800FFFFFFFF4C453A5C746F646179776F726B5C32303234313230325F7470333431305C5359383833375F44656D6F5C5573725372635C6469736368617267655C6469736368617267655F6D6F64756C652E6300000000126469736368617267655F6D6F64756C652E6300000000BECEA100FFFFFFFF41453A5C746F646179776F726B5C32303234313230325F7470333431305C5359383833375F44656D6F5C5573725372635C757365726170705C757365726170702E630000000009757365726170702E6300000000F0A0A100FFFFFFFF40453A5C746F646179776F726B5C32303234313230325F7470333431305C5359383833375F44656D6F5C5372635C737461727475705C535441525455502E413531000000000B535441525455502E41353100000000BCA8E100FFFFFFFF3B453A5C746F646179776F726B5C32303234313230325F7470333431305C5359383833375F44656D6F5C557372496E635C757365725C757365722E680000000006757365722E68000000009CC1B600FFFFFFFF39453A5C746F646179776F726B5C32303234313230325F7470333431305C5359383833375F44656D6F5C5573725372635C6B65795C6B65792E6300000000056B65792E6300000000F7B88600FFFFFFFF3C453A5C746F646179776F726B5C32303234313230325F7470333431305C5359383833375F44656D6F5C557372496E635C696E635C636F6E6669672E680000000008636F6E6669672E6800000000D9ADC200FFFFFFFF48453A5C746F646179776F726B5C32303234313230325F7470333431305C5359383833375F44656D6F5C557372496E635C636861726765725C636861726765725F6D6F64756C652E680000000010636861726765725F6D6F64756C652E6800000000A5C2D700FFFFFFFF40453A5C746F646179776F726B5C32303234313230325F7470333431305C5359383833375F44656D6F5C557372496E635C766F785C766F785F6D6F64756C652E68000000000C766F785F6D6F64756C652E6800000000B3A6BE00FFFFFFFF39453A5C746F646179776F726B5C32303234313230325F7470333431305C5359383833375F44656D6F5C5573725372635C6164635C6164632E6300000000056164632E6300000000EAD6A300FFFFFFFF39453A5C746F646179776F726B5C32303234313230325F7470333431305C5359383833375F44656D6F5C5573725372635C6C65645C6C65642E6300000000056C65642E6300000000F6FA7D00FFFFFFFF3B453A5C746F646179776F726B5C32303234313230325F7470333431305C5359383833375F44656D6F5C5573725372635C68616C6C5C68616C6C2E63000000000668616C6C2E6300000000B5E99D00FFFFFFFF3B453A5C746F646179776F726B5C32303234313230325F7470333431305C5359383833375F44656D6F5C5573725372635C756172745C756172742E630000000006756172742E63000000005FC3CF00FFFFFFFF39453A5C746F646179776F726B5C32303234313230325F7470333431305C5359383833375F44656D6F5C557372496E635C6164635C6164632E6800000000056164632E6800000000C1838300FFFFFFFF3F453A5C746F646179776F726B5C32303234313230325F7470333431305C5359383833375F44656D6F5C5573725372635C73797374656D5C73797374656D2E63000000000873797374656D2E6300000000CACAD500FFFFFFFF3F453A5C746F646179776F726B5C32303234313230325F7470333431305C5359383833375F44656D6F5C557372496E635C636F6D6D5C766F785F636F6D6D2E68000000000A766F785F636F6D6D2E6800000000C5D4F200FFFFFFFF3F453A5C746F646179776F726B5C32303234313230325F7470333431305C5359383833375F44656D6F5C5573725372635C636F6D6D5C766F785F636F6D6D2E63000000000A766F785F636F6D6D2E6300000000FFDC7800FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000F40000006600000080070000C3020000
@@ -1838,7 +1838,7 @@
Debug
2373
- 00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720000000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000003400000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7200000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720000000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720000000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730000000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72000000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000
+ 00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720100000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000003400000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7201000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72010000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000
898
@@ -3603,7 +3603,7 @@
0
100
- 15
+ 3
..\UsrSrc\main.c
0
@@ -3633,9 +3633,9 @@
..\UsrSrc\userapp\userapp.c
- 4
- 121
- 140
+ 24
+ 109
+ 127
1
0
@@ -3661,8 +3661,8 @@
..\UsrSrc\key\key.c
24
- 246
- 278
+ 247
+ 279
1
0
@@ -3688,8 +3688,8 @@
..\UsrInc\vox\vox_module.h
0
- 461
- 491
+ 1
+ 1
1
0
@@ -3741,9 +3741,27 @@
..\UsrSrc\system\system.c
- 16
+ 37
140
- 158
+ 159
+ 1
+
+ 0
+
+
+ ..\UsrInc\comm\vox_comm.h
+ 8
+ 122
+ 139
+ 1
+
+ 0
+
+
+ ..\UsrSrc\comm\vox_comm.c
+ 0
+ 428
+ 429
1
0
diff --git a/Project/SY8837_Demo.uvopt b/Project/SY8837_Demo.uvopt
index 0cec4d0..3bdeaca 100644
--- a/Project/SY8837_Demo.uvopt
+++ b/Project/SY8837_Demo.uvopt
@@ -404,6 +404,18 @@
0
0
+
+ 2
+ 20
+ 1
+ 0
+ 0
+ 0
+ ..\UsrSrc\comm\vox_comm.c
+ vox_comm.c
+ 0
+ 0
+
diff --git a/Project/SY8837_Demo.uvproj b/Project/SY8837_Demo.uvproj
index 1ef9222..2dc1d48 100644
--- a/Project/SY8837_Demo.uvproj
+++ b/Project/SY8837_Demo.uvproj
@@ -324,7 +324,7 @@
- ..\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
+ ..\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;..\UsrInc\comm
@@ -476,6 +476,11 @@
1
..\UsrSrc\display\display_ui.c
+
+ vox_comm.c
+ 1
+ ..\UsrSrc\comm\vox_comm.c
+
diff --git a/SY8837_Demo.si4project/SY8837_Demo.SearchResults b/SY8837_Demo.si4project/SY8837_Demo.SearchResults
index 6f22cdc..e4d1a29 100644
--- a/SY8837_Demo.si4project/SY8837_Demo.SearchResults
+++ b/SY8837_Demo.si4project/SY8837_Demo.SearchResults
@@ -1,20 +1,4 @@
----- gCharge_Cfg Matches (23 in 1 files) ----
-charger_module.c (UsrSrc\charger) line 51 : s_gCharger_Cfg gCharge_Cfg;
-Charger_Init in charger_module.c (UsrSrc\charger) : gCharge_Cfg.nTrickle_Cur = TRICKLE_CUR_SET;
-Charger_Init in charger_module.c (UsrSrc\charger) : gCharge_Cfg.nIterm_Cur = ITERM_CUR_SET;
-Charger_Init in charger_module.c (UsrSrc\charger) : gCharge_Cfg.nConstant_Cur = gConstant_Cur_Max_Setting;
-Charger_Init in charger_module.c (UsrSrc\charger) : gCharge_Cfg.nVFloat = VFLOAT_SET;
-Charger_Init in charger_module.c (UsrSrc\charger) : REG_CHG1 = gCharge_Cfg.nTrickle_Cur | gCharge_Cfg.nIterm_Cur | gCharge_Cfg.nConstant_Cur ; //璁剧疆Charger鐨勬稉娴佸厖鐢电數娴併佹埅姝㈠厖鐢电數娴併佹亽娴丆C銆
-Charger_Init in charger_module.c (UsrSrc\charger) : REG_CHG2 = gCharge_Cfg.nVFloat;
-PMU_NTC_Handle in charger_module.c (UsrSrc\charger) : gCharge_Cfg.nConstant_Cur = gConstant_Cur_Max_Setting / 2;
-PMU_NTC_Handle in charger_module.c (UsrSrc\charger) : gCharge_Cfg.nConstant_Cur = gConstant_Cur_Max_Setting;
-PMU_NTC_Handle in charger_module.c (UsrSrc\charger) : gCharge_Cfg.nConstant_Cur = gConstant_Cur_Max_Setting;
-PMU_NTC_Handle in charger_module.c (UsrSrc\charger) : gCharge_Cfg.nConstant_Cur = gConstant_Cur_Max_Setting / 2;
-PMU_NTC_Handle in charger_module.c (UsrSrc\charger) : gCharge_Cfg.nVFloat = VFLOAT_SET;
-PMU_NTC_Handle in charger_module.c (UsrSrc\charger) : gCharge_Cfg.nVFloat = VFLOAT_JEITA_HOT;
-PMU_NTC_Handle in charger_module.c (UsrSrc\charger) : gCharge_Cfg.nVFloat = VFLOAT_JEITA_HOT;
-PMU_NTC_Handle in charger_module.c (UsrSrc\charger) : gCharge_Cfg.nVFloat = VFLOAT_SET;
-PMU_NTC_Handle in charger_module.c (UsrSrc\charger) : REG_CHG2 = gCharge_Cfg.nVFloat;
-Charger_Handler in charger_module.c (UsrSrc\charger) : if( gCharge_Cfg.nVFloat == CHG_VFLOAT_4_200V )
-Charger_Handler in charger_module.c (UsrSrc\charger) : REG_CHG1 = gCharge_Cfg.nTrickle_Cur | gCharge_Cfg.nIterm_Cur | gCharge_Cfg.nConstant_Cur ; //璁剧疆Charger鐨勬稉娴佸厖鐢电數娴併佹埅姝㈠厖鐢电數娴併佹亽娴丆C銆
-Charger_Handler in charger_module.c (UsrSrc\charger) : REG_CHG2 = gCharge_Cfg.nVFloat; //璁剧疆CV鐢靛帇闃堝笺
+---- MAX_PACKET_SIZE Matches (3 in 1 files) ----
+vox_comm.c (UsrSrc\comm) line 31 : #define MAX_PACKET_SIZE 0x20
+HandleTxCommand in vox_comm.c (UsrSrc\comm) : tx_pData[3] = MAX_PACKET_SIZE;
+HandleTxCommand in vox_comm.c (UsrSrc\comm) : tx_pData[7] = MAX_PACKET_SIZE; //max_packet_size:0x20
diff --git a/SY8837_Demo.si4project/SY8837_Demo.sip_sym b/SY8837_Demo.si4project/SY8837_Demo.sip_sym
index b6941c7..a65b76f 100644
Binary files a/SY8837_Demo.si4project/SY8837_Demo.sip_sym and b/SY8837_Demo.si4project/SY8837_Demo.sip_sym differ
diff --git a/SY8837_Demo.si4project/SY8837_Demo.sip_xab b/SY8837_Demo.si4project/SY8837_Demo.sip_xab
index 4791cdb..ae6f7cb 100644
Binary files a/SY8837_Demo.si4project/SY8837_Demo.sip_xab and b/SY8837_Demo.si4project/SY8837_Demo.sip_xab differ
diff --git a/SY8837_Demo.si4project/SY8837_Demo.sip_xad b/SY8837_Demo.si4project/SY8837_Demo.sip_xad
index bb4f344..8981593 100644
Binary files a/SY8837_Demo.si4project/SY8837_Demo.sip_xad and b/SY8837_Demo.si4project/SY8837_Demo.sip_xad differ
diff --git a/SY8837_Demo.si4project/SY8837_Demo.sip_xm b/SY8837_Demo.si4project/SY8837_Demo.sip_xm
index 5d81c4c..bdc045a 100644
Binary files a/SY8837_Demo.si4project/SY8837_Demo.sip_xm and b/SY8837_Demo.si4project/SY8837_Demo.sip_xm differ
diff --git a/SY8837_Demo.si4project/SY8837_Demo.sip_xsb b/SY8837_Demo.si4project/SY8837_Demo.sip_xsb
index 9f496f6..f14643d 100644
Binary files a/SY8837_Demo.si4project/SY8837_Demo.sip_xsb and b/SY8837_Demo.si4project/SY8837_Demo.sip_xsb differ
diff --git a/SY8837_Demo.si4project/SY8837_Demo.sip_xsd b/SY8837_Demo.si4project/SY8837_Demo.sip_xsd
index aaa1c3d..7f90381 100644
Binary files a/SY8837_Demo.si4project/SY8837_Demo.sip_xsd and b/SY8837_Demo.si4project/SY8837_Demo.sip_xsd differ
diff --git a/SY8837_Demo.si4project/SY8837_Demo.siwork b/SY8837_Demo.si4project/SY8837_Demo.siwork
index c182d2e..1555447 100644
Binary files a/SY8837_Demo.si4project/SY8837_Demo.siwork and b/SY8837_Demo.si4project/SY8837_Demo.siwork differ
diff --git a/UsrInc/adc/adc.h b/UsrInc/adc/adc.h
index 31380c2..3551a1e 100644
--- a/UsrInc/adc/adc.h
+++ b/UsrInc/adc/adc.h
@@ -29,7 +29,7 @@
Macro definitions
\******************************************************************************/
-#define VREF 1000
+#define VREF (1000UL)
/******************************************************************************\
Variables definitions
diff --git a/UsrInc/charger/charger_module.h b/UsrInc/charger/charger_module.h
index 1905187..091c0ad 100644
--- a/UsrInc/charger/charger_module.h
+++ b/UsrInc/charger/charger_module.h
@@ -48,15 +48,15 @@ typedef struct {
/* CHG Control Register-CHG_CTL */
#define CHG_END_Sel_Pos (7U)
-#define CHG_END_Sel_Pos_Msk (0x1UL << CHG_END_Sel_Pos)
+#define CHG_END_Sel_Pos_Msk (0x1U << CHG_END_Sel_Pos)
#define CHG_END_Sel CHG_END_Sel_Pos_Msk
#define CHG_SafyTmr_EN_Pos (4U)
-#define CHG_SafyTmr_EN_Pos_Msk (0x1UL << CHG_SafyTmr_EN_Pos)
+#define CHG_SafyTmr_EN_Pos_Msk (0x1U << CHG_SafyTmr_EN_Pos)
#define CHG_SafyTmr_EN CHG_SafyTmr_EN_Pos_Msk
#define PRECHG_TMR_EN_Pos (3U)
-#define PRECHG_TMR_EN_Pos_Msk (0x1UL << PRECHG_TMR_EN_Pos)
+#define PRECHG_TMR_EN_Pos_Msk (0x1U << PRECHG_TMR_EN_Pos)
#define PRECHG_TMR_EN_2H PRECHG_TMR_EN_Pos_Msk
#define PRECHG_TMR_EN_1H 0x00
@@ -66,7 +66,7 @@ typedef struct {
#define FASTCHG_TMR_SET_13H 0x03
#define CHG_EN_Pos (0U)
-#define CHG_EN_Pos_Msk (0x1UL << CHG_EN_Pos)
+#define CHG_EN_Pos_Msk (0x1U << CHG_EN_Pos)
#define CHG_EN CHG_EN_Pos_Msk
/* Charger Parements Config. */
@@ -126,60 +126,60 @@ typedef struct {
/*5、CHG 配置寄存器 - REG_CHG0 */
#define DPM_Sel_Pos (6U)
-#define DPM_Sel_Pos_Msk (0x1UL << DPM_Sel_Pos)
+#define DPM_Sel_Pos_Msk (0x1U << DPM_Sel_Pos)
#define DPM_Sel DPM_Sel_Pos_Msk
#define R_Set1_Pos (4U)
-#define R_Set1_Pos_Msk (0x1UL << R_Set1_Pos)
+#define R_Set1_Pos_Msk (0x1U << R_Set1_Pos)
#define R_Set1 R_Set1_Pos_Msk
#define R_Set0_Pos (3U)
-#define R_Set0_Pos_Msk (0x1UL << R_Set0_Pos)
+#define R_Set0_Pos_Msk (0x1U << R_Set0_Pos)
#define R_Set0 R_Set0_Pos_Msk
#define CHG_VDPM_En_Pos (2U)
-#define CHG_VDPM_En_Pos_Msk (0x1UL << CHG_VDPM_En_Pos)
+#define CHG_VDPM_En_Pos_Msk (0x1U << CHG_VDPM_En_Pos)
#define CHG_VDPM_En CHG_VDPM_En_Pos_Msk
#define CHG_TEMP_En_Pos (1U)
-#define CHG_TEMP_En_Pos_Msk (0x1UL << CHG_TEMP_En_Pos)
+#define CHG_TEMP_En_Pos_Msk (0x1U << CHG_TEMP_En_Pos)
#define CHG_TEMP_En CHG_TEMP_En_Pos_Msk
#define CHG_CV_En_Pos (0U)
-#define CHG_CV_En_Pos_Msk (0x1UL << CHG_CV_En_Pos)
+#define CHG_CV_En_Pos_Msk (0x1U << CHG_CV_En_Pos)
#define CHG_CV_En CHG_CV_En_Pos_Msk
/* Charger 状态寄存器 - CHIP_STA4 */
#define VIN_PG_Pos (7U)
-#define VIN_PG_Pos_Msk (0x1UL << VIN_PG_Pos)
+#define VIN_PG_Pos_Msk (0x1U << VIN_PG_Pos)
#define VIN_PG VIN_PG_Pos_Msk
#define STATE_VDPM_Pos (6U)
-#define STATE_VDPM_Pos_Msk (0x1UL << STATE_VDPM_Pos)
+#define STATE_VDPM_Pos_Msk (0x1U << STATE_VDPM_Pos)
#define STATE_VDPM STATE_VDPM_Pos_Msk
#define STATE_TPL_Pos (5U)
-#define STATE_TPL_Pos_Msk (0x1UL << STATE_TPL_Pos)
+#define STATE_TPL_Pos_Msk (0x1U << STATE_TPL_Pos)
#define STATE_TPL STATE_TPL_Pos_Msk
#define STATE_BATOV_Pos (4U)
-#define STATE_BATOV_Pos_Msk (0x1UL << STATE_BATOV_Pos)
+#define STATE_BATOV_Pos_Msk (0x1U << STATE_BATOV_Pos)
#define STATE_BATOV STATE_BATOV_Pos_Msk
#define CHG_END_Pos (3U)
-#define CHG_END_Pos_Msk (0x1UL << CHG_END_Pos)
+#define CHG_END_Pos_Msk (0x1U << CHG_END_Pos)
#define CHG_END CHG_END_Pos_Msk
#define STATE_CV_Pos (2U)
-#define STATE_CV_Pos_Msk (0x1UL << STATE_CV_Pos)
+#define STATE_CV_Pos_Msk (0x1U << STATE_CV_Pos)
#define STATE_CV STATE_CV_Pos_Msk
#define STATE_CC_Pos (1U)
-#define STATE_CC_Pos_Msk (0x1UL << STATE_CC_Pos)
+#define STATE_CC_Pos_Msk (0x1U << STATE_CC_Pos)
#define STATE_CC STATE_CC_Pos_Msk
#define STATE_TC_Pos (0U)
-#define STATE_TC_Pos_Msk (0x1UL << STATE_TC_Pos)
+#define STATE_TC_Pos_Msk (0x1U << STATE_TC_Pos)
#define STATE_TC STATE_TC_Pos_Msk
extern void Charger_Init(void);
diff --git a/UsrInc/comm/vox_comm.h b/UsrInc/comm/vox_comm.h
new file mode 100644
index 0000000..e907738
--- /dev/null
+++ b/UsrInc/comm/vox_comm.h
@@ -0,0 +1,190 @@
+/*
+ ******************************************************************************
+ *
+ * @file vox_comm.h
+ * @brief VOX Communicate module
+ * @ic sy8837/8/9
+ *
+ * @version 1.0
+ * @date 2025/02/13 017:40:40
+ * @author Alex Xu
+ *
+ * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
+ * All Rights Reserved
+ *
+ * History:
+ * Revision Date Author Desc
+ * 1.0.0 2025/02/13 Alex build this file
+ ******************************************************************************
+ */
+#ifndef __VOX_COMM_H__
+#define __VOX_COMM_H__
+
+ /*_____ I N C L U D E S ____________________________________________________*/
+
+#include "define.h"
+
+
+/******************************************************************************\
+ Macro definitions
+\******************************************************************************/
+
+/*耳机通道选择*/
+
+#define TWS_VOL 0x04
+#define TWS_VOR 0x05
+#define TWS_BOX 0x02
+#define TWS_PC 0x03
+
+/******************************************************************************\
+ Typedef definitions
+\******************************************************************************/
+
+#if JIELI
+
+/*耳机通道选择*/
+typedef enum {
+
+ VOL_CHAN = 0x00,
+
+ VOR_CHAN = 0x01,
+
+ VOX_BOTH = 0xFF,
+
+}e_Vox_Chan;
+
+/*耳机和充电仓进行双向通讯的协议命令ID。*/
+ typedef enum _VOX_BES_COMMAND_E
+{
+
+ VHOUSE_CMD_PAIR = 0x01, //充电仓发起的配对信息
+
+ VHOUSE_CMD_EXCH_TWS_BTADDR = 0x02, //交换对耳的蓝牙地址信息。
+
+ VHOUSE_CMD_CLEAR_PAIR = 0x03, //清配对信息
+
+ VHOUSE_CMD_OPEN_BOX = 0x06, //开盖获取电量包
+
+ VHOUSE_CMD_CLOSE_WIN_GET_VBAT = 0x07, //关盖获取电量包
+
+ VHOUSE_CMD_RST = 0x08, //
+
+ VHOUSE_CMD_PWROFF = 0x80, //关机消息
+
+ VHOUSE_CMD_CLOSE_BOX = 0x81,
+
+ BES_RESET = 0xE1,
+
+}VOX_BES_COMMAND_E;
+
+#elif ZHONGKE
+
+ /*耳机通道选择*/
+ typedef enum {
+
+ VOL_CHAN = 0x11,
+
+ VOR_CHAN = 0x22,
+
+ VOX_BOTH = 0xff,
+
+ }e_Vox_Chan;
+
+ /*耳机和充电仓进行双向通讯的协议命令ID。*/
+typedef enum _VOX_BES_COMMAND_E
+{
+ VHOUSE_CMD_GET_VBAT = 0x01, //获取电池电量,也可作为开始标志
+
+ VHOUSE_CMD_PAIR, //充电仓发起的配对信息
+
+ VHOUSE_CMD_GET_TWS_BTADDR, //获取对耳的蓝牙地址信息,充电仓无需使用本命令,本命令为对耳相互转发,充电仓只作转发缓存,收到该命令后,copy给另一只对耳即可。
+
+ VHOUSE_CMD_CLEAR_PAIR, //清除配对信息
+
+ VHOUSE_CMD_PWROFF, //关机消息
+
+ VHOUSE_CMD_ERR, //接收消息错误
+
+ VHOUSE_CMD_SUCCESS, //成功响应
+
+ VHOUSE_CMD_CLOSE_WINDOW, //关盖
+
+ VHOUSE_CMD_OPEN_WINDOW, //开盖
+
+ VHOUSE_CMD_CLOSE_WIN_GET_VBAT, //关盖获取电量包
+
+ VHOUSE_CMD_ENABLE_POPUP = 0x80, //开关弹窗功能控制
+
+ VHOUSE_CMD_CUSTOM_RESV1 = 0xE0, //客户保留指令
+
+ BES_RESET = 0xE1,
+
+ VHOUSE_CMD_CUSTOM_RESV_END = 0xEF,
+
+ VHOUSE_CMD_SYS_RST = 0xFF, //系统复位指令
+
+}VOX_BES_COMMAND_E;
+
+#elif XUANHENG
+
+ /*耳机通道选择*/
+
+#define TWS_VOL 0x04
+#define TWS_VOR 0x05
+#define TWS_BOX 0x02
+#define TWS_PC 0x03
+
+typedef enum {
+
+ VOL_CHAN = 0x24,
+
+ VOR_CHAN = 0x25,
+
+ VOX_BOTH = 0x21,
+
+}e_Vox_Chan;
+
+ /*耳机和充电仓进行双向通讯的协议命令ID。*/
+typedef enum _VOX_BES_COMMAND_E
+{
+ CMD_SHUT_DOWN = 0x0005, //关机
+
+ CMD_TWS_GET_BTADDR = 0x0037, //获取对耳MAC地址
+
+ CMD_TWS_SET_BTADDR = 0x000A, //写入对耳MAC地址
+
+ CMD_CLEAR_PAIR = 0x000B, //清除配对记录
+
+ CMD_HEARTBEAT = 0x000D, //心跳包
+
+ CMD_SN = 0x000E, //写入SN码到耳机
+
+ CMD_GET_INTO_PAIR = 0x000F, //耳机进入配对状态
+
+ CMD_PAIRING_IMD = 0x0011, //立即执行TWS配对
+
+ BES_RESET, //耳机复位Pattern
+
+}VOX_BES_COMMAND_E;
+
+#endif
+
+
+/******************************************************************************\
+ Global variables and functions
+\******************************************************************************/
+#ifdef VOX_RX
+
+extern uint8_t Vox_Get_Vbat_Flag[2]; //耳机配对状态,VOL:低4bit;VOR:高4bit。0是无效,1是正在配对,2是配对成功,3不处理,保持当前状态。
+
+extern uint8_t Vox_Get_BES_Addr_Flag[2] ;
+
+#endif
+
+extern void HandleTxCommand(VOX_BES_COMMAND_E TxCommand, e_Vox_Chan nVox_Chn_Select);
+
+
+extern void HandleVoxCommMsg(void);
+
+
+#endif
diff --git a/UsrInc/discharge/discharge_module.h b/UsrInc/discharge/discharge_module.h
index 753037b..11e4261 100644
--- a/UsrInc/discharge/discharge_module.h
+++ b/UsrInc/discharge/discharge_module.h
@@ -32,11 +32,11 @@
/* Boost VOUT Control Register */
#define Boost_En_Pos (7U)
-#define Boost_En_Msk (0x1UL << Boost_En_Pos)
+#define Boost_En_Msk (0x1U << Boost_En_Pos)
#define Boost_En Boost_En_Msk
#define Boost_DirIn_Pos (6U)
-#define Boost_DirIn_Msk (0x1UL << Boost_DirIn_Pos)
+#define Boost_DirIn_Msk (0x1U << Boost_DirIn_Pos)
#define Boost_DirIn Boost_DirIn_Msk
#define Boost_Vout_3_65V (0x00)
diff --git a/UsrInc/inc/config.h b/UsrInc/inc/config.h
index 9f83173..7903be8 100644
--- a/UsrInc/inc/config.h
+++ b/UsrInc/inc/config.h
@@ -274,8 +274,12 @@
#define CONSTANT_CUR_SET CHG_ICC_2_00MA //配置恒流充电流。
+#define CONSTANT_JEITA_COLD CHG_ICC_1_00MA //配置JEITA低温限流充电电流。
+
#define VFLOAT_SET CHG_VFLOAT_4_200V //配置浮充电压。
+#define VFLOAT_VOLTAGE_SET (4200UL) //配置浮充电压实际电压值,用于仓复充,单位:mv。
+
#define PRECHG_TIM_SET PRECHG_TMR_EN_1H //配置涓流充超时时间。
#define FASTCHG_TMR_SET FASTCHG_TMR_SET_5H //配置恒流和恒压超时时间。
@@ -286,13 +290,13 @@
/* Vox Config Setting. */
-#define VOX_ADT_CUR_SET VOX_ADT_Cur_4_5UA //配置VOX负载识别电流阈值。
+#define VOX_ADT_CUR_SET VOX_ADT_CUR_4_5UA //配置VOX负载识别电流阈值。
-#define VOX_IOFF_CUR_SET Vox_Ioff_3mA << 6 //配置VOX IOFF检测阈值。
+#define VOX_IOFF_CUR_SET ( VOX_IOFF_3MA << 6 ) //配置VOX IOFF检测阈值。
-#define VOX_LIGHT_TO_HAVEY_DEB VOX_LIGHT_TO_HAVEY_128 //配置VOX 轻载转重载滤波时间。
+#define VOX_LIGHT_TO_HAVEY_DEB VOX_LIGHT_TO_HAVEY_128MS //配置VOX 轻载转重载滤波时间。
-#define VOX_HAVEY_TO_LIGHT_DEB VOX_HAVEY_TO_LIGHT_8 //配置VOX 重载转轻载滤波时间。
+#define VOX_HAVEY_TO_LIGHT_DEB VOX_HAVEY_TO_LIGHT_8MS //配置VOX 重载转轻载滤波时间。
#define VOX_COMM_VOLTAGE_SET Vox_COMM_PULL_Vol_3_0 //配置VOX 通讯电平(1.8v/2.5V/3.0V/5.0)。
@@ -336,13 +340,13 @@
#define VOUT_MIN_THD Boost_Vout_3_65V //VOX VOUT输出最小阈值。
-#define IVOL_Threshold_Neg(Ivol) ( Ivol / 5 ) << 2 //VOL 调压下限阈值电流,80% * Ivol,IVOL≥这个值,则降压。
+#define IVOL_Threshold_Neg(Ivol) ( ( Ivol / 5 ) << 2 ) //VOL 调压下限阈值电流,80% * Ivol,IVOL≥这个值,则降压。
-#define IVOR_Threshold_Neg(Ivor) ( Ivor / 5 ) << 2 //VOR 调压下限阈值电流,80% * Ivor,IVOR≥这个值,则降压。
+#define IVOR_Threshold_Neg(Ivor) ( ( Ivor / 5 ) << 2 ) //VOR 调压下限阈值电流,80% * Ivor,IVOR≥这个值,则降压。
-#define IVOL_Threshold_Pos(Ivol) ( Ivol ) << 1 //VOL 调压上限阈值电流,2倍 * Ivol,当Ivol大于THP阈值电流,则说明耳机状态发生改变(TC跳转到CC或Recharge复充),需要重启跟随充。
+#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复充),需要重启跟随充。
+#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,
diff --git a/UsrInc/inc/define.h b/UsrInc/inc/define.h
index 8b3c67e..cb51823 100644
--- a/UsrInc/inc/define.h
+++ b/UsrInc/inc/define.h
@@ -23,7 +23,7 @@
#include "config.h"
/*Function Select,功能选择宏定义*/
-//#define SY8838 //合封芯片SY8838
+//#define SY8837 //合封芯片SY8838
#define TIMER1_ENABLE 0 //Timer1 定时周期1ms。(120Bytes)
diff --git a/UsrInc/system/system.h b/UsrInc/system/system.h
index e4a1626..df6c503 100644
--- a/UsrInc/system/system.h
+++ b/UsrInc/system/system.h
@@ -30,144 +30,144 @@
\******************************************************************************/
/* Boost/Hall/Key/VBUS状态寄存器 - CHIP_STA0 */
#define BOOST_BATUV_Pos (7U)
-#define BOOST_BATUV_Pos_Msk (0x1UL << BOOST_BATUV_Pos)
+#define BOOST_BATUV_Pos_Msk (0x1U << BOOST_BATUV_Pos)
#define BOOST_BATUV BOOST_BATUV_Pos_Msk
#define BOOST_SHORT_Pos (6U)
-#define BOOST_SHORT_Pos_Msk (0x1UL << BOOST_SHORT_Pos)
+#define BOOST_SHORT_Pos_Msk (0x1U << BOOST_SHORT_Pos)
#define BOOST_SHORT BOOST_SHORT_Pos_Msk
#define HALL_STATOK_Pos (4U)
-#define HALL_STATOK_Pos_Msk (0x1UL << HALL_STATOK_Pos)
+#define HALL_STATOK_Pos_Msk (0x1U << HALL_STATOK_Pos)
#define HALL_STATOK HALL_STATOK_Pos_Msk
#define HALL_STAT_Pos (3U)
-#define HALL_STAT_Pos_Msk (0x1UL << HALL_STAT_Pos)
+#define HALL_STAT_Pos_Msk (0x1U << HALL_STAT_Pos)
#define HALL_STAT HALL_STAT_Pos_Msk
#define HALL_PRE_Pos (2U)
-#define HALL_PRE_Pos_Msk (0x1UL << HALL_PRE_Pos)
+#define HALL_PRE_Pos_Msk (0x1U << HALL_PRE_Pos)
#define HALL_PRE HALL_PRE_Pos_Msk
#define KEY_STAT_Pos (1U)
-#define KEY_STAT_Pos_Msk (0x1UL << KEY_STAT_Pos)
+#define KEY_STAT_Pos_Msk (0x1U << KEY_STAT_Pos)
#define KEY_STAT KEY_STAT_Pos_Msk
#define VIN_PRESENT_Pos (0U)
-#define VIN_PRESENT_Pos_Msk (0x1UL << VIN_PRESENT_Pos)
+#define VIN_PRESENT_Pos_Msk (0x1U << VIN_PRESENT_Pos)
#define VIN_PRESENT VIN_PRESENT_Pos_Msk
/* Abnormal Interrupt Flag Register-IRQ_FLAG0 */
#define DIE_TO_Pos (6U)
-#define DIE_TO_Pos_Msk (0x1UL << DIE_TO_Pos)
+#define DIE_TO_Pos_Msk (0x1U << DIE_TO_Pos)
#define DIE_TO DIE_TO_Pos_Msk
#define VBUS_OverVol_Pos (5U)
-#define VBUS_OverVol_Pos_Msk (0x1UL << VBUS_OverVol_Pos)
+#define VBUS_OverVol_Pos_Msk (0x1U << VBUS_OverVol_Pos)
#define VBUS_OverVol VBUS_OverVol_Pos_Msk
#define BAT_Low_Pos (4U)
-#define BAT_Low_Pos_Msk (0x1UL << BAT_Low_Pos)
+#define BAT_Low_Pos_Msk (0x1U << BAT_Low_Pos)
#define BAT_Low BAT_Low_Pos_Msk
#define VOR_OutPut_Short_Pos (3U)
-#define VOR_OutPut_Short_Pos_Msk (0x1UL << VOR_OutPut_Short_Pos)
+#define VOR_OutPut_Short_Pos_Msk (0x1U << VOR_OutPut_Short_Pos)
#define VOR_OutPut_Short VOR_OutPut_Short_Pos_Msk
#define VOL_OutPut_Short_Pos (2U)
-#define VOL_OutPut_Short_Pos_Msk (0x1UL << VOL_OutPut_Short_Pos)
+#define VOL_OutPut_Short_Pos_Msk (0x1U << VOL_OutPut_Short_Pos)
#define VOL_OutPut_Short VOL_OutPut_Short_Pos_Msk
#define Boost_UVLO_Pos (1U)
-#define Boost_UVLO_Pos_Msk (0x1UL << Boost_UVLO_Pos)
+#define Boost_UVLO_Pos_Msk (0x1U << Boost_UVLO_Pos)
#define Boost_UVLO Boost_UVLO_Pos_Msk
#define Boost_OutPut_Short_Pos (0U)
-#define Boost_OutPut_Short_Pos_Msk (0x1UL << Boost_OutPut_Short_Pos)
+#define Boost_OutPut_Short_Pos_Msk (0x1U << Boost_OutPut_Short_Pos)
#define Boost_OutPut_Short Boost_OutPut_Short_Pos_Msk
/* Charger Interrupt Flag Register-IRQ_FALG9 */
#define VIN_DPM_Pos (7U)
-#define VIN_DPM_Pos_Msk (0x1UL << VIN_DPM_Pos)
+#define VIN_DPM_Pos_Msk (0x1U << VIN_DPM_Pos)
#define VIN_DPM VIN_DPM_Pos_Msk
#define Temp_Loop_Pos (6U)
-#define Temp_Loop_Pos_Msk (0x1UL << Temp_Loop_Pos)
+#define Temp_Loop_Pos_Msk (0x1U << Temp_Loop_Pos)
#define Temp_Loop Temp_Loop_Pos_Msk
#define BAT_OverVol_Pos (5U)
-#define BAT_OverVol_Pos_Msk (0x1UL << BAT_OverVol_Pos)
+#define BAT_OverVol_Pos_Msk (0x1U << BAT_OverVol_Pos)
#define BAT_OverVol BAT_OverVol_Pos_Msk
#define CHG_Complete_Pos (4U)
-#define CHG_Complete_Pos_Msk (0x1UL << CHG_Complete_Pos)
+#define CHG_Complete_Pos_Msk (0x1U << CHG_Complete_Pos)
#define CHG_Complete CHG_Complete_Pos_Msk
#define CHG_FastChgTmr_Pos (3U)
-#define CHG_FastChgTmr_Pos_Msk (0x1UL << CHG_FastChgTmr_Pos)
+#define CHG_FastChgTmr_Pos_Msk (0x1U << CHG_FastChgTmr_Pos)
#define CHG_FastChgTmr CHG_FastChgTmr_Pos_Msk
#define CHG_TricleChgTmr_Pos (2U)
-#define CHG_TricleChgTmr_Pos_Msk (0x1UL << CHG_TricleChgTmr_Pos)
+#define CHG_TricleChgTmr_Pos_Msk (0x1U << CHG_TricleChgTmr_Pos)
#define CHG_TricleChgTmr CHG_TricleChgTmr_Pos_Msk
#define VBUS_PG_NEG_Pos (1U)
-#define VBUS_PG_NEG_Pos_Msk (0x1UL << VBUS_PG_NEG_Pos)
+#define VBUS_PG_NEG_Pos_Msk (0x1U << VBUS_PG_NEG_Pos)
#define VBUS_PG_NEG VBUS_PG_NEG_Pos_Msk
#define VBUS_PG_POS_Pos (0U)
-#define VBUS_PG_POS_Pos_Msk (0x1UL << VBUS_PG_POS_Pos)
+#define VBUS_PG_POS_Pos_Msk (0x1U << VBUS_PG_POS_Pos)
#define VBUS_PG_POS VBUS_PG_POS_Pos_Msk
/* VBUS/HALL and ADC Data Ready Interrupt Flag Register-IRQ_FLAG10 */
#define VBUS_PLUG_OUT_Pos (7U)
-#define VBUS_PLUG_OUT_Pos_Msk (0x1UL << VBUS_PLUG_OUT_Pos)
+#define VBUS_PLUG_OUT_Pos_Msk (0x1U << VBUS_PLUG_OUT_Pos)
#define VBUS_PLUG_OUT VBUS_PLUG_OUT_Pos_Msk
#define VBUS_PLUG_IN_Pos (6U)
-#define VBUS_PLUG_IN_Pos_Msk (0x1UL << VBUS_PLUG_IN_Pos)
+#define VBUS_PLUG_IN_Pos_Msk (0x1U << VBUS_PLUG_IN_Pos)
#define VBUS_PLUG_IN VBUS_PLUG_IN_Pos_Msk
#define HALL_NEG_Pos (3U)
-#define HALL_NEG_Pos_Msk (0x1UL << HALL_NEG_Pos)
+#define HALL_NEG_Pos_Msk (0x1U << HALL_NEG_Pos)
#define HALL_NEG HALL_NEG_Pos_Msk
#define HALL_POS_Pos (2U)
-#define HALL_POS_Pos_Msk (0x1UL << HALL_POS_Pos)
+#define HALL_POS_Pos_Msk (0x1U << HALL_POS_Pos)
#define HALL_POS HALL_POS_Pos_Msk
#define Standby_Tmr_WkUp_Pos (1U)
-#define Standby_Tmr_WkUp_Msk (0x1UL << Standby_Tmr_WkUp_Pos)
+#define Standby_Tmr_WkUp_Msk (0x1U << Standby_Tmr_WkUp_Pos)
#define Standby_Tmr_WkUp Standby_Tmr_WkUp_Msk
#define ADC_Data_Ready_Pos (0U)
-#define ADC_Data_Ready_Msk (0x1UL << ADC_Data_Ready_Pos)
+#define ADC_Data_Ready_Msk (0x1U << ADC_Data_Ready_Pos)
#define ADC_Data_Ready ADC_Data_Ready_Msk
/* Boost/Hall/Key/VBUS Wakeup Flag - WKUP_FLAG0 */
#define TMR_WK_FLAG_Pos (3U)
-#define TMR_WK_FLAG_Pos_Msk (0x1UL << TMR_WK_FLAG_Pos)
+#define TMR_WK_FLAG_Pos_Msk (0x1U << TMR_WK_FLAG_Pos)
#define TMR_WK_FLAG TMR_WK_FLAG_Pos_Msk
#define HALL_WK_FLAG_Pos (2U)
-#define HALL_WK_FLAG_Pos_Msk (0x1UL << HALL_WK_FLAG_Pos)
+#define HALL_WK_FLAG_Pos_Msk (0x1U << HALL_WK_FLAG_Pos)
#define HALL_WK_FLAG HALL_WK_FLAG_Pos_Msk
#define KEY_WK_FLAG_Pos (1U)
-#define KEY_WK_FLAG_Pos_Msk (0x1UL << KEY_WK_FLAG_Pos)
+#define KEY_WK_FLAG_Pos_Msk (0x1U << KEY_WK_FLAG_Pos)
#define KEY_WK_FLAG KEY_WK_FLAG_Pos_Msk
#define VIN_PRESENT_WK_FLAG_Pos (0U)
-#define VIN_PRESENT_WK_FLAG_Pos_Msk (0x1UL << VIN_PRESENT_WK_FLAG_Pos)
+#define VIN_PRESENT_WK_FLAG_Pos_Msk (0x1U << VIN_PRESENT_WK_FLAG_Pos)
#define VIN_PRESENT_WK_FLAG VIN_PRESENT_WK_FLAG_Pos_Msk
/* Standby 定时唤醒控制寄存器--STB_TIM_CTL */
#define EN_FORCE_LOSC_Pos (7U)
-#define EN_FORCE_LOSC_Pos_Msk (0x1UL << EN_FORCE_LOSC_Pos)
+#define EN_FORCE_LOSC_Pos_Msk (0x1U << EN_FORCE_LOSC_Pos)
#define EN_FORCE_LOSC EN_FORCE_LOSC_Pos_Msk
#define STB_TMR_EN_Pos (2U)
-#define STB_TMR_EN_Pos_Msk (0x1UL << STB_TMR_EN_Pos)
+#define STB_TMR_EN_Pos_Msk (0x1U << STB_TMR_EN_Pos)
#define STB_TMR_EN STB_TMR_EN_Pos_Msk
#define STB_TMR_SET_2S (0U)
diff --git a/UsrInc/vox/vox_module.h b/UsrInc/vox/vox_module.h
index a3942b6..b3f4ef2 100644
--- a/UsrInc/vox/vox_module.h
+++ b/UsrInc/vox/vox_module.h
@@ -40,21 +40,11 @@ extern bit Vox_Output_Short_Flag;
#define IVOX_THP 200 //耳机跟随充电流上升阈值
-#define VOL_TYPE 0x00
+#define VOL_TYPE 0x00
-#define VOR_TYPE 0x01
+#define VOR_TYPE 0x01
-#define VOX_MAX_CHAN 0x02
-
- typedef enum {
-
- VOX_NONE_IN_BOX = 0, //空仓
-
- VOX_GET_INTO_BOX, //耳机入仓
-
- VOX_STAY_IN_BOX, //耳机在仓
-
- }Vox_State_e;
+#define VOX_MAX_CHAN 0x02
/*耳机配对状态*/
typedef enum {
@@ -79,23 +69,35 @@ extern bit Vox_Output_Short_Flag;
}e_Vox_Paired_State;
#ifdef VOX_COVER_ENABLE
-
- extern bit Vox_Vout_Enable; //Vox功率输出标志位
-
+
+extern bit Vox_Vout_Enable; //Vox功率输出标志位
+
+extern uint8_t EarPhone_Num;
+
#else
-
- extern bit Vor_Vout_Enable; //Vor功率输出标志位
-
- extern bit Vol_Vout_Enable; //Vol功率输出标志位
-
- extern bit Vor_GetOut_Box_Flag;
-
- extern bit Vol_GetOut_Box_Flag;
-
- extern Vox_State_e Vor_State;
-
- extern Vox_State_e Vol_State;
-
+
+typedef enum {
+
+ VOX_NONE_IN_BOX = 0, //空仓
+
+ VOX_GET_INTO_BOX, //耳机入仓
+
+ VOX_STAY_IN_BOX, //耳机在仓
+
+}Vox_State_e;
+
+extern bit Vor_Vout_Enable; //Vor功率输出标志位
+
+extern bit Vol_Vout_Enable; //Vol功率输出标志位
+
+extern bit Vor_GetOut_Box_Flag;
+
+extern bit Vol_GetOut_Box_Flag;
+
+extern Vox_State_e Vor_State;
+
+extern Vox_State_e Vol_State;
+
#endif
#if VOX_ENABLE
@@ -106,65 +108,65 @@ extern bit Vox_Output_Short_Flag;
/*CHIP_STA1*/
#define VOX_Sta_Vol_Output_Short_Pos (0U)
-#define VOX_Sta_Vol_Output_Short_Pos_Msk (0x1UL << VOX_Sta_Vol_Output_Short_Pos)
+#define VOX_Sta_Vol_Output_Short_Pos_Msk (0x1U << VOX_Sta_Vol_Output_Short_Pos)
#define VOL_Output_Short VOX_Sta_Vol_Output_Short_Pos_Msk
#define VOX_Sta_Vor_Output_Short_Pos (1U)
-#define VOX_Sta_Vor_Output_Short_Pos_Msk (0x1UL << VOX_Sta_Vor_Output_Short_Pos)
+#define VOX_Sta_Vor_Output_Short_Pos_Msk (0x1U << VOX_Sta_Vor_Output_Short_Pos)
#define VOR_Output_Short VOX_Sta_Vor_Output_Short_Pos_Msk
#define VOX_Sta_Vol_Ioff_Pos (2U)
-#define VOX_Sta_Vol_Ioff_Pos_Msk (0x1UL << VOX_Sta_Vol_Ioff_Pos)
+#define VOX_Sta_Vol_Ioff_Pos_Msk (0x1U << VOX_Sta_Vol_Ioff_Pos)
#define VOL_Ioff VOX_Sta_Vol_Ioff_Pos_Msk
#define VOX_Sta_Vor_Ioff_Pos (3U)
-#define VOX_Sta_Vor_Ioff_Pos_Msk (0x1UL << VOX_Sta_Vor_Ioff_Pos)
+#define VOX_Sta_Vor_Ioff_Pos_Msk (0x1U << VOX_Sta_Vor_Ioff_Pos)
#define VOR_Ioff VOX_Sta_Vor_Ioff_Pos_Msk
#define VOX_Sta_Vol_Loadon_Pos (5U)
-#define VOX_Sta_Vol_Loadon_Pos_Msk (0x1UL << VOX_Sta_Vol_Loadon_Pos)
+#define VOX_Sta_Vol_Loadon_Pos_Msk (0x1U << VOX_Sta_Vol_Loadon_Pos)
#define VOL_LoadOn VOX_Sta_Vol_Loadon_Pos_Msk
#define VOX_Sta_Vor_Loadon_Pos (7U)
-#define VOX_Sta_Vor_Loadon_Pos_Msk (0x1UL << VOX_Sta_Vor_Loadon_Pos)
+#define VOX_Sta_Vor_Loadon_Pos_Msk (0x1U << VOX_Sta_Vor_Loadon_Pos)
#define VOR_LoadOn VOX_Sta_Vor_Loadon_Pos_Msk
/* VOL/R Control Register - VOX_CTL0 */
#define EN_VOL_ADTL_Pos (0U)
-#define EN_VOL_ADTL_Pos_Msk (0x1UL << EN_VOL_ADTL_Pos)
+#define EN_VOL_ADTL_Pos_Msk (0x1U << EN_VOL_ADTL_Pos)
#define EN_VOL_ADTL EN_VOL_ADTL_Pos_Msk
#define EN_VOR_ADTR_Pos (1U)
-#define EN_VOR_ADTR_Pos_Msk (0x1UL << EN_VOR_ADTR_Pos)
+#define EN_VOR_ADTR_Pos_Msk (0x1U << EN_VOR_ADTR_Pos)
#define EN_VOR_ADTR EN_VOR_ADTR_Pos_Msk
#define EN_VOL_PU_Pos (2U)
-#define EN_VOL_PU_Pos_Msk (0x1UL << EN_VOL_PU_Pos)
+#define EN_VOL_PU_Pos_Msk (0x1U << EN_VOL_PU_Pos)
#define EN_VOL_PU EN_VOL_PU_Pos_Msk
#define EN_VOR_PU_Pos (3U)
-#define EN_VOR_PU_Pos_Msk (0x1UL << EN_VOR_PU_Pos)
+#define EN_VOR_PU_Pos_Msk (0x1U << EN_VOR_PU_Pos)
#define EN_VOR_PU EN_VOR_PU_Pos_Msk
#define EN_VOL_VOUT_Pos (4U)
-#define EN_VOL_VOUT_Pos_Msk (0x1UL << EN_VOL_VOUT_Pos)
+#define EN_VOL_VOUT_Pos_Msk (0x1U << EN_VOL_VOUT_Pos)
#define EN_VOL_VOUT EN_VOL_VOUT_Pos_Msk
#define EN_VOR_VOUT_Pos (5U)
-#define EN_VOR_VOUT_Pos_Msk (0x1UL << EN_VOR_VOUT_Pos)
+#define EN_VOR_VOUT_Pos_Msk (0x1U << EN_VOR_VOUT_Pos)
#define EN_VOR_VOUT EN_VOR_VOUT_Pos_Msk
#define EN_VOL_VDS_Pos (6U)
-#define EN_VOL_VDS_Pos_Msk (0x1UL << EN_VOL_VDS_Pos)
+#define EN_VOL_VDS_Pos_Msk (0x1U << EN_VOL_VDS_Pos)
#define EN_VOL_VDS EN_VOL_VDS_Pos_Msk
#define EN_VOR_VDS_Pos (7U)
-#define EN_VOR_VDS_Pos_Msk (0x1UL << EN_VOR_VDS_Pos)
+#define EN_VOR_VDS_Pos_Msk (0x1U << EN_VOR_VDS_Pos)
#define EN_VOR_VDS EN_VOR_VDS_Pos_Msk
/* VOL/R ADT Config Register,VOX_CON0<6Ah> */
#define Vox_Pull_Up_Pos (7U)
-#define Vox_Pull_Up_Pos_Msk (0x1UL << Vox_Pull_Up_Pos)
+#define Vox_Pull_Up_Pos_Msk (0x1U << Vox_Pull_Up_Pos)
#define Vox_Pull_Up Vox_Pull_Up_Pos_Msk
#define Vox_Pull_Up_Deb_Pos (6U)
@@ -176,22 +178,22 @@ extern bit Vox_Output_Short_Flag;
#define Vox_Pull_Up_Deb_16Ms (Vox_Pull_Up_Deb_16Ms_Pos_Msk << Vox_Pull_Up_Deb_Pos)
#define Vor_Pull_Down_Pos (5U)
-#define Vor_Pull_Down_Pos_Msk (0x1UL << Vor_Pull_Down_Pos)
+#define Vor_Pull_Down_Pos_Msk (0x1U << Vor_Pull_Down_Pos)
#define Vor_Pull_Down Vor_Pull_Down_Pos_Msk
#define Vol_Pull_Down_Pos (4U)
-#define Vol_Pull_Down_Pos_Msk (0x1UL << Vol_Pull_Down_Pos)
+#define Vol_Pull_Down_Pos_Msk (0x1U << Vol_Pull_Down_Pos)
#define Vol_Pull_Down Vol_Pull_Down_Pos_Msk
/*自动识别负载电流阈值。*/
-#define VOX_ADT_Cur_0_5UA (0x00UL)
-#define VOX_ADT_Cur_1_5UA (0x01UL)
-#define VOX_ADT_Cur_2_5UA (0x02UL)
-#define VOX_ADT_Cur_3_5UA (0x03UL)
-#define VOX_ADT_Cur_4_5UA (0x04UL)
-#define VOX_ADT_Cur_5_5UA (0x05UL)
-#define VOX_ADT_Cur_6_5UA (0x06UL)
-#define VOX_ADT_Cur_7_5UA (0x07UL)
+#define VOX_ADT_CUR_0_5UA (0x00U)
+#define VOX_ADT_CUR_1_5UA (0x01U)
+#define VOX_ADT_CUR_2_5UA (0x02U)
+#define VOX_ADT_CUR_3_5UA (0x03U)
+#define VOX_ADT_CUR_4_5UA (0x04U)
+#define VOX_ADT_CUR_5_5UA (0x05U)
+#define VOX_ADT_CUR_6_5UA (0x06U)
+#define VOX_ADT_CUR_7_5UA (0x07U)
/*
VOX过流档位设置,在系统初始化中(Vox_init())通过配置VOX_CON0,
@@ -204,80 +206,80 @@ SFRDATA |= (VOX_LIGHT_TO_HAVEY_128 << 2) | VOX_HAVEY_TO_LIGHT_8;
*/
/* VOL/R Misc Config Register,VOX_CON2<6Ch> */
-#define Vox_Ioff_2mA (0x00UL)
-#define Vox_Ioff_3mA (0x01UL)
-#define Vox_Ioff_4mA (0x02UL)
-#define Vox_Ioff_5mA (0x03UL)
+#define VOX_IOFF_2MA (0x00U)
+#define VOX_IOFF_3MA (0x01U)
+#define VOX_IOFF_4MA (0x02U)
+#define VOX_IOFF_5MA (0x03U)
/*轻载转重载滤波时间配置。*/
-#define VOX_LIGHT_TO_HAVEY_1 (0x00UL)
-#define VOX_LIGHT_TO_HAVEY_8 (0x01UL)
-#define VOX_LIGHT_TO_HAVEY_128 (0x02UL)
-#define VOX_LIGHT_TO_HAVEY_256 (0x03UL)
+#define VOX_LIGHT_TO_HAVEY_1MS (0x00U)
+#define VOX_LIGHT_TO_HAVEY_8MS (0x01U)
+#define VOX_LIGHT_TO_HAVEY_128MS (0x02U)
+#define VOX_LIGHT_TO_HAVEY_256MS (0x03U)
/*重载转轻载滤波时间配置。*/
-#define VOX_HAVEY_TO_LIGHT_0_125 (0x00UL)
-#define VOX_HAVEY_TO_LIGHT_1 (0x01UL)
-#define VOX_HAVEY_TO_LIGHT_8 (0x02UL)
-#define VOX_HAVEY_TO_LIGHT_64 (0x03UL)
+#define VOX_HAVEY_TO_LIGHT_0_125MS (0x00U)
+#define VOX_HAVEY_TO_LIGHT_1MS (0x01U)
+#define VOX_HAVEY_TO_LIGHT_8MS (0x02U)
+#define VOX_HAVEY_TO_LIGHT_64MS (0x03U)
/* VOL/R Comm Control Register,COMM_CTL */
#define Vor_EN_COMR_Pos (7U)
-#define Vor_EN_COMR_Pos_Msk (0x1UL << Vor_EN_COMR_Pos)
+#define Vor_EN_COMR_Pos_Msk (0x1U << Vor_EN_COMR_Pos)
#define Vor_EN_COMR Vor_EN_COMR_Pos_Msk
#define Vor_SW_MD_Pos (6U)
-#define Vor_SW_MD_Pos_Msk (0x1UL << Vor_SW_MD_Pos)
+#define Vor_SW_MD_Pos_Msk (0x1U << Vor_SW_MD_Pos)
#define Vor_SW_MD Vor_SW_MD_Pos_Msk
#define Vor_SWDT_Pos (5U)
-#define Vor_SWDT_Pos_Msk (0x1UL << Vor_SWDT_Pos)
+#define Vor_SWDT_Pos_Msk (0x1U << Vor_SWDT_Pos)
#define Vor_SWDT Vor_SWDT_Pos_Msk
#define Vor_SWDR_Pos (4U)
-#define Vor_SWDR_Pos_Msk (0x1UL << Vor_SWDR_Pos)
+#define Vor_SWDR_Pos_Msk (0x1U << Vor_SWDR_Pos)
#define Vor_SWDR Vor_SWDR_Pos_Msk
#define Vol_EN_COMR_Pos (3U)
-#define Vol_EN_COMR_Pos_Msk (0x1UL << Vol_EN_COMR_Pos)
+#define Vol_EN_COMR_Pos_Msk (0x1U << Vol_EN_COMR_Pos)
#define Vol_EN_COMR Vol_EN_COMR_Pos_Msk
#define Vol_SW_MD_Pos (2U)
-#define Vol_SW_MD_Pos_Msk (0x1UL << Vol_SW_MD_Pos)
+#define Vol_SW_MD_Pos_Msk (0x1U << Vol_SW_MD_Pos)
#define Vol_SW_MD Vol_SW_MD_Pos_Msk
#define Vol_SWDT_Pos (1U)
-#define Vol_SWDT_Pos_Msk (0x1UL << Vol_SWDT_Pos)
+#define Vol_SWDT_Pos_Msk (0x1U << Vol_SWDT_Pos)
#define Vol_SWDT Vol_SWDT_Pos_Msk
#define Vol_SWDR_Pos (0U)
-#define Vol_SWDR_Pos_Msk (0x1UL << Vol_SWDR_Pos)
+#define Vol_SWDR_Pos_Msk (0x1U << Vol_SWDR_Pos)
#define Vol_SWDR Vol_SWDR_Pos_Msk
/* VOL/R Comm TRx Data Register,COMM_DAT */
#define Vor_COMR_RX_Pos (5U)
-#define Vor_COMR_RX_Pos_Msk (0x1UL << Vor_COMR_RX_Pos)
+#define Vor_COMR_RX_Pos_Msk (0x1U << Vor_COMR_RX_Pos)
#define Vor_COMR_RX Vor_COMR_RX_Pos_Msk
#define Vol_COML_RX_Pos (4U)
-#define Vol_COML_RX_Pos_Msk (0x1UL << Vol_COML_RX_Pos)
+#define Vol_COML_RX_Pos_Msk (0x1U << Vol_COML_RX_Pos)
#define Vol_COML_RX Vol_COML_RX_Pos_Msk
#define Vor_COMR_DT_Pos (1U)
-#define Vor_COMR_DT_Pos_Msk (0x1UL << Vor_COMR_DT_Pos)
+#define Vor_COMR_DT_Pos_Msk (0x1U << Vor_COMR_DT_Pos)
#define Vor_COMR_DT Vor_COMR_DT_Pos_Msk
#define Vol_COML_DT_Pos (0U)
-#define Vol_COML_DT_Pos_Msk (0x1UL << Vol_COML_DT_Pos)
+#define Vol_COML_DT_Pos_Msk (0x1U << Vol_COML_DT_Pos)
#define Vol_COML_DT Vol_COML_DT_Pos_Msk
/* VOL/R Comm Config Register,COMM_CON<6Fh> */
#define Vox_COMM_PULL_Vol_Pos (2U)
-#define Vox_COMM_PULL_Vol_1_8_Pos_Msk (0x00UL)
-#define Vox_COMM_PULL_Vol_2_5_Pos_Msk (0x01UL)
-#define Vox_COMM_PULL_Vol_3_0_Pos_Msk (0x02UL)
-#define Vox_COMM_PULL_Vol_5_0_Pos_Msk (0x03UL)
+#define Vox_COMM_PULL_Vol_1_8_Pos_Msk (0x00U)
+#define Vox_COMM_PULL_Vol_2_5_Pos_Msk (0x01U)
+#define Vox_COMM_PULL_Vol_3_0_Pos_Msk (0x02U)
+#define Vox_COMM_PULL_Vol_5_0_Pos_Msk (0x03U)
#define Vox_COMM_PULL_Vol_1_8 (Vox_COMM_PULL_Vol_1_8_Pos_Msk << Vox_COMM_PULL_Vol_Pos)
#define Vox_COMM_PULL_Vol_2_5 (Vox_COMM_PULL_Vol_2_5_Pos_Msk << Vox_COMM_PULL_Vol_Pos)
@@ -285,179 +287,34 @@ SFRDATA |= (VOX_LIGHT_TO_HAVEY_128 << 2) | VOX_HAVEY_TO_LIGHT_8;
#define Vox_COMM_PULL_Vol_5_0 (Vox_COMM_PULL_Vol_5_0_Pos_Msk << Vox_COMM_PULL_Vol_Pos)
#define Vox_Pull_Up_50k_Pos (0U)
-#define Vox_Pull_Up_50k_Pos_Msk (0x1UL << Vox_Pull_Up_50k_Pos)
+#define Vox_Pull_Up_50k_Pos_Msk (0x1U << Vox_Pull_Up_50k_Pos)
#define Vox_Pull_Up_50k Vox_Pull_Up_50k_Pos_Msk
+
#if XUANHENG
-#define BOXHEADER 0xAA //VOX通讯数据包头
+#define BOXHEADER (0xAAU) //VOX通讯数据包头
#else
-#define BOXHEADER 0x55AA //VOX通讯数据包头
+#define BOXHEADER (0x55AAUL) //VOX通讯数据包头
-#define EARPHONE_HEADER_HIGH 0x55
-#define EARPHONE_HEADER_LOW 0xAA
+#define EARPHONE_HEADER_HIGH (0x55U)
+#define EARPHONE_HEADER_LOW (0xAAU)
-#define BOXIDCODE 0xFF //VOX通讯耳机->仓数据包头
+#define BOXIDCODE (0xFFU) //VOX通讯耳机->仓数据包头
#endif
-#define Vox_TX_Interval 2 //Vox定时发送指令时间间隔
+#define Vox_TX_Interval (2U) //Vox定时发送指令时间间隔
-#define Vox_TX_Interval_2 4
+#define Vox_TX_Interval_2 (4U)
-#define TIM_SHUTDOWN_DEBOUNCE 600 //关机前debounce时间
+#define TIM_SHUTDOWN_DEBOUNCE (600UL) //关机前debounce时间
/******************************************************************************\
Variables definitions
\******************************************************************************/
-/*耳机通道选择*/
-
-#define TWS_VOL 0x04
-#define TWS_VOR 0x05
-#define TWS_BOX 0x02
-#define TWS_PC 0x03
-
-#if JIELI
-
-/*耳机通道选择*/
-typedef enum {
-
- VOL_CHAN = 0x00,
-
- VOR_CHAN = 0x01,
-
- VOX_BOTH = 0xFF,
-
-}e_Vox_Chan;
-
-/*耳机和充电仓进行双向通讯的协议命令ID。*/
- typedef enum _VOX_BES_COMMAND_E
-{
-
- VHOUSE_CMD_PAIR = 0x01, //充电仓发起的配对信息
-
- VHOUSE_CMD_EXCH_TWS_BTADDR = 0x02, //交换对耳的蓝牙地址信息。
-
- VHOUSE_CMD_CLEAR_PAIR = 0x03, //清配对信息
-
- VHOUSE_CMD_OPEN_BOX = 0x06, //开盖获取电量包
-
- VHOUSE_CMD_CLOSE_WIN_GET_VBAT = 0x07, //关盖获取电量包
-
- VHOUSE_CMD_RST = 0x08, //
-
- VHOUSE_CMD_PWROFF = 0x80, //关机消息
-
- VHOUSE_CMD_CLOSE_BOX = 0x81,
-
- BES_RESET = 0xE1,
-
-}VOX_BES_COMMAND_E;
-
-#elif ZHONGKE
-
- /*耳机通道选择*/
- typedef enum {
-
- VOL_CHAN = 0x11,
-
- VOR_CHAN = 0x22,
-
- VOX_BOTH = 0xff,
-
- }e_Vox_Chan;
-
- /*耳机和充电仓进行双向通讯的协议命令ID。*/
-typedef enum _VOX_BES_COMMAND_E
-{
- VHOUSE_CMD_GET_VBAT = 0x01, //获取电池电量,也可作为开始标志
-
- VHOUSE_CMD_PAIR, //充电仓发起的配对信息
-
- VHOUSE_CMD_GET_TWS_BTADDR, //获取对耳的蓝牙地址信息,充电仓无需使用本命令,本命令为对耳相互转发,充电仓只作转发缓存,收到该命令后,copy给另一只对耳即可。
-
- VHOUSE_CMD_CLEAR_PAIR, //清除配对信息
-
- VHOUSE_CMD_PWROFF, //关机消息
-
- VHOUSE_CMD_ERR, //接收消息错误
-
- VHOUSE_CMD_SUCCESS, //成功响应
-
- VHOUSE_CMD_CLOSE_WINDOW, //关盖
-
- VHOUSE_CMD_OPEN_WINDOW, //开盖
-
- VHOUSE_CMD_CLOSE_WIN_GET_VBAT, //关盖获取电量包
-
- VHOUSE_CMD_ENABLE_POPUP = 0x80, //开关弹窗功能控制
-
- VHOUSE_CMD_CUSTOM_RESV1 = 0xE0, //客户保留指令
-
- BES_RESET = 0xE1,
-
- VHOUSE_CMD_CUSTOM_RESV_END = 0xEF,
-
- VHOUSE_CMD_SYS_RST = 0xFF, //系统复位指令
-
-}VOX_BES_COMMAND_E;
-
-#elif XUANHENG
-
- /*耳机通道选择*/
-
-#define TWS_VOL 0x04
-#define TWS_VOR 0x05
-#define TWS_BOX 0x02
-#define TWS_PC 0x03
-
-typedef enum {
-
- VOL_CHAN = 0x24,
-
- VOR_CHAN = 0x25,
-
- VOX_BOTH = 0x21,
-
-}e_Vox_Chan;
-
- /*耳机和充电仓进行双向通讯的协议命令ID。*/
-typedef enum _VOX_BES_COMMAND_E
-{
- CMD_SHUT_DOWN = 0x0005, //关机
-
- CMD_TWS_GET_BTADDR = 0x0037, //获取对耳MAC地址
-
- CMD_TWS_SET_BTADDR = 0x000A, //写入对耳MAC地址
-
- CMD_CLEAR_PAIR = 0x000B, //清除配对记录
-
- CMD_HEARTBEAT = 0x000D, //心跳包
-
- CMD_SN = 0x000E, //写入SN码到耳机
-
- CMD_GET_INTO_PAIR = 0x000F, //耳机进入配对状态
-
- CMD_PAIRING_IMD = 0x0011, //立即执行TWS配对
-
- BES_RESET, //耳机复位Pattern
-
-}VOX_BES_COMMAND_E;
-
-#endif
-
-/* Vox Channel Select. */
-typedef enum {
-
- VOL_CHAN_SET = 0x00,
-
- VOR_CHAN_SET = 0x01,
-
- VOX_BOTH_SET = 0x02,
-
-}e_Vox_Chan_Set;
/* Vox Follow Charge State. */
typedef enum {
@@ -496,18 +353,11 @@ typedef enum {
extern bit Cover_Open_Flag;
extern bit Vox_Ocp_Flag;
+
extern bit Boost_Open_Flag;
extern bit OpenCover_TX_Cmd_Flag;
-#ifdef VOX_RX
-
-extern uint8_t Vox_Get_Vbat_Flag[2]; //耳机配对状态,VOL:低4bit;VOR:高4bit。0是无效,1是正在配对,2是配对成功,3不处理,保持当前状态。
-
-extern uint8_t Vox_Get_BES_Addr_Flag[2] ;
-
-#endif
-
#if VOX_FOLLOW_CHG
typedef struct {
@@ -551,11 +401,10 @@ extern g_Vox_Fllow_Chg_Cfg xdata Vox_Fllow_Chg;
UserCfg.Functions definitions
\******************************************************************************/
-extern void HandleTxCommand(VOX_BES_COMMAND_E TxCommand, e_Vox_Chan nVox_Chn_Select);
-
#ifdef VOX_ADT_ENABLE
extern void Vol_Det_Machine(void);
+
extern void Vor_Det_Machine(void);
#else
@@ -565,18 +414,23 @@ extern void Vox_Det_Machine(void);
#endif
#if VOX_FOLLOW_CHG
+
extern void Vox_Follow_Chg( g_Vox_Fllow_Chg_Cfg *n_Vox_Fllow_Chg );
+
#endif
#ifdef VOX_ADT_ENABLE
+
extern void VOL_EN_Type(VOX_Enable_Mode_e VOX_Enable_Mode);
+
extern void VOR_EN_Type(VOX_Enable_Mode_e VOX_Enable_Mode);
+
#else
+
extern void VOX_EN_Type(VOX_Enable_Mode_e VOX_Enable_Mode);
+
#endif
-#ifdef VOX_RX
-extern void HandleVoxCommMsg(void);
-#endif
+
#endif
diff --git a/UsrSrc/charger/charger_module.c b/UsrSrc/charger/charger_module.c
index 5f69b84..b7e2d0c 100644
--- a/UsrSrc/charger/charger_module.c
+++ b/UsrSrc/charger/charger_module.c
@@ -50,6 +50,8 @@ uint8_t gConstant_Cur_Max_Setting; //Charge
idata s_gCharger_Cfg gCharge_Cfg;
+uint16_t VFloat_Value;
+
/******************************************************************************\
Functions definitions
\******************************************************************************/
@@ -71,17 +73,11 @@ idata s_gCharger_Cfg gCharge_Cfg;
void Charger_Init(void)
{
-
- SFRADDR = PMU_CTL7; //开启VBUS OV检测使能
- SFRDATA |= 0x20;
-#ifdef SY8838Q //合封OVP芯片SY8838Q
+#ifdef SY8837 //非合封OVP芯片SY8837
SFRADDR = PMU_CTL7; //合封芯片关闭VBUS OV检测使能
- SFRDATA &= ~0x20;
-
- SFRADDR = REG_CHG0;
- SFRDATA |= CHG_VDPM_En; //合封关VDPM环
+ SFRDATA |= 0x20;
#endif
@@ -99,11 +95,13 @@ void Charger_Init(void)
gCharge_Cfg.nConstant_Cur = gConstant_Cur_Max_Setting;
- gCharge_Cfg.nVFloat = VFLOAT_SET;
+ gCharge_Cfg.nVFloat = VFLOAT_SET;
REG_CHG1 = gCharge_Cfg.nTrickle_Cur | gCharge_Cfg.nIterm_Cur | gCharge_Cfg.nConstant_Cur ; //设置Charger的涓流充电电流、截止充电电流、恒流CC。
REG_CHG2 = gCharge_Cfg.nVFloat;
+
+ VFloat_Value = VFLOAT_VOLTAGE_SET;
}
#ifdef NTC_ENABLE
@@ -164,7 +162,7 @@ uint8_t PMU_NTC_Handle(uint8_t Charge_sta)
{
NTC_250mA_Chg_Flag = TRUE;
- gCharge_Cfg.nConstant_Cur = gConstant_Cur_Max_Setting / 2;
+ gCharge_Cfg.nConstant_Cur = CONSTANT_JEITA_COLD;
if( NTC_500mA_Chg_Flag )
{
@@ -199,7 +197,7 @@ uint8_t PMU_NTC_Handle(uint8_t Charge_sta)
}
else
{
- gCharge_Cfg.nConstant_Cur = gConstant_Cur_Max_Setting / 2;
+ gCharge_Cfg.nConstant_Cur = CONSTANT_JEITA_COLD;
}
}
@@ -579,14 +577,8 @@ void Charger_Handler(void)
if( IRQ_FLAG9 & CHG_Complete ) //Charg complete interrupt
{
#if ADC_ENABLE
- if( gCharge_Cfg.nVFloat == CHG_VFLOAT_4_200V )
- {
- nCVFloat = 4200;
- }
- else
- {
- nCVFloat = 4000;
- }
+
+ nCVFloat = VFloat_Value; //浮充电压实际电压值。
if( g_Vbat_Adc < ( nCVFloat - BAT_RECHARG_THD ) ) //仓复充
{
diff --git a/UsrSrc/comm/vox_comm.c b/UsrSrc/comm/vox_comm.c
new file mode 100644
index 0000000..0067f89
--- /dev/null
+++ b/UsrSrc/comm/vox_comm.c
@@ -0,0 +1,970 @@
+/*
+ ******************************************************************************
+ *
+ * @file vox_comm.c
+ * @brief VOX Communicate module
+ * @ic sy8837/8/9
+ *
+ * @version 1.0
+ * @date 2025/02/13 017:40:40
+ * @author Alex Xu
+ *
+ * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
+ * All Rights Reserved
+ *
+ * History:
+ * Revision Date Author Desc
+ * 1.0.0 2025/02/13 Alex build this file
+ ******************************************************************************
+ */
+ /*_____ I N C L U D E S ____________________________________________________*/
+#include "vox_module.h"
+#include "vox_comm.h"
+#include "system.h"
+#include "vox_comm.h"
+#include "bat.h"
+#include "hall.h"
+
+/******************************************************************************\
+ Macro definitions
+\******************************************************************************/
+#define MAX_PACKET_SIZE 0x20
+
+/******************************************************************************\
+ Variables definitions
+\******************************************************************************/
+
+#if XUANHENG
+
+idata uint8_t Vox_Pairing_State[2]; //耳机配对状态,0是无效,1是正在配对,2是配对成功,3不处理,保持当前状态。
+
+uint8_t Vox_Set_BES_Addr_Flag[2];
+
+idata uint8_t BES_Addr[6]; //蓝牙耳机地址,Vox_Bes_Addr[0][6]:VOL;Vox_Bes_Addr[1][6]:VOR
+
+idata uint8_t Random_Data[8];
+
+uint8_t Bes_Bet_Level[2]; //对耳电池电量信息,Bes_Bet_Level[0]:左耳;Bes_Bet_Level[1]:右耳
+
+uint8_t Bes_Chg_Full[2]; //对耳硬件是否满电:0非满电;1:满电。
+
+uint8_t Tws_Paired_Record[2]; //TWS配对记录;0:有TWS配对记录;1:没有TWS配对记录;
+
+uint8_t Phone_Paired_Record[2]; //手机配对记录;0:有与手机配对记录;1:没有和手机配对记录。
+
+uint8_t Bes_OTA_State[2]; //耳机静默升级状态;1:有;0:没有
+
+uint8_t Bes_Set_SN_State[2]; //耳机应答仓写入SN是否成功。1:成功;0:失败
+
+uint8_t Bes_In_Pair_State[2]; //耳机进入配对状态标志位
+
+uint8_t Vox_Clear_Pair_Flag[2];
+
+bit Vol_Bes_Addr_Flag;
+
+bit Vor_Bes_Addr_Flag;
+
+idata uint8_t SN_Num[22]; //SN码,需要从OTP的固定位置获取。
+
+idata uint8_t SN_Num_Start; //SN码发送起始位置,有开盖动作时清零。
+
+bit gShip_Mode_Flag; //船运模式标志位:0:正常关机;1:船运模式
+
+#elif JIELI
+
+uint8_t Vox_Type;
+
+uint8_t Net_Info[2][13];
+
+idata uint8_t MAC_Addr[2][18];
+
+uint8_t Earphone_Vbat[2]; //对耳电量
+
+#endif
+
+
+#ifdef VOX_RX
+
+uint8_t Vox_Get_Vbat_Flag[2]; //耳机配对状态,VOL:低4bit;VOR:高4bit。0是无效,1是正在配对,2是配对成功,3不处理,保持当前状态。
+uint8_t Vox_Get_BES_Addr_Flag[2];
+//idata uint8_t BES_Addr[6] = {0}; //蓝牙耳机地址,Vox_Bes_Addr[0][6]:VOL;Vox_Bes_Addr[1][6]:VOR
+
+#endif
+
+/******************************************************************************\
+ Functions definitions
+\******************************************************************************/
+#if XUANHENG
+
+ /*
+ *******************************************************************************
+ * u16 CalCheckCrc16(u8 * pucFrame, u16 usLen)
+ *
+ * Description : 校验和的计算(CRC-16-CCITT-FALSE)
+ *
+ *
+ * Arguments : u8 *pucFrame: 数据存放地址
+ u16 usLen: 数据长度, 以byte为单位
+
+ * Returns :
+ *
+ * Notes :
+ *
+ *******************************************************************************
+ */
+
+ uint16_t CalCheckCrc16(uint8_t *pucFrame, unsigned int usLen)
+{
+ uint16_t wCRCin = 0xFFFF;
+ uint16_t wCPoly = 0x1021;
+ uint8_t wChar = 0;
+ unsigned int i;
+
+ while (usLen--)
+ {
+
+ wChar = *(pucFrame++);
+
+ wCRCin ^= (wChar << 8);
+
+ for(i = 0;i < 8;i++)
+ {
+ if(wCRCin & 0x8000)
+ {
+ wCRCin = (wCRCin << 1) ^ wCPoly;
+ }
+ else
+ {
+ wCRCin = wCRCin << 1;
+ }
+ }
+ }
+
+ return (wCRCin);
+}
+
+#else
+
+ /*
+ *******************************************************************************
+ * uint8_t Crc8Maxim(u8 *buf, u8 length)
+ *
+ * Description : 校验和的计算
+ *
+ *
+ * Arguments : u8 *buf: 数据存放地址
+ u8 length: 数据长度, 以byte为单位
+
+ * Returns :
+ *
+ * Notes :
+ *
+ *******************************************************************************
+ */
+ uint8_t Crc8Maxim(u8 *buf, u8 length)
+ {
+ u8 i;
+ u8 crc = 0;
+ while(length--)
+ {
+ crc ^= *buf++;
+ for(i=0;i<8;i++)
+ {
+ if( crc&1 )
+ {
+ crc = (crc >> 1)^0x8c;
+ }
+ else
+ {
+ crc >>= 1;
+ }
+ }
+ }
+ return crc;
+ }
+
+#endif
+
+#ifdef VOX_TX
+/*
+ *******************************************************************************
+ * void HandleTxCommand(VOX_BES_COMMAND_E RxCommand, e_Vox_Chan nVox_Chn_Select)
+ *
+ * Description : 发送数据包的封装,并打开相应的双向通信通道
+ * Command payload
+ * Header checksum side cmd len Data
+ * 1bytes 1byte 1byte 1byte 1byte Len bytes
+
+ *
+ * Arguments : VOX_BES_COMMAND_E TxCommand: , e_Vox_Chan nVox_Chn_Select
+
+ * Returns :
+ *
+ * Notes :
+ *
+ *******************************************************************************
+*/
+void HandleTxCommand(VOX_BES_COMMAND_E TxCommand, e_Vox_Chan nVox_Chn_Select)
+{
+ uint16_t dataLen = 0;
+
+ uint8_t tx_pData[COM1_Data_Lenth] = 0;
+
+ uint8_t i = 0;
+
+#if JIELI
+
+ /*数据包头*/
+ tx_pData[0] = 0x00;
+ tx_pData[1] = BOXHEADER>>8;
+ tx_pData[2] = BOXHEADER;
+ /*指令编号*/
+ tx_pData[4] = TxCommand;
+
+ Vox_Type = nVox_Chn_Select;
+
+ switch(TxCommand)
+ {
+ case VHOUSE_CMD_PAIR:
+ /*Data Length*/
+ tx_pData[3] = 0x02;
+
+ if( nVox_Chn_Select == VOL_CHAN )
+ {
+ tx_pData[5] = 0x02;
+
+ Vox_Get_BES_Addr_Flag[VOL_TYPE] = 0;
+ }
+ else
+ if( nVox_Chn_Select == VOR_CHAN )
+ {
+ tx_pData[5] = 0x01;
+
+ Vox_Get_BES_Addr_Flag[VOR_TYPE] = 0;
+ }
+
+ break;
+
+ case VHOUSE_CMD_EXCH_TWS_BTADDR:
+ /*Data Length*/
+ tx_pData[3] = MAX_PACKET_SIZE;
+
+ for(i=5;i<18;i++)
+ {
+ tx_pData[i] = MAC_Addr[nVox_Chn_Select][i];
+ }
+
+ for(i=23;i<13;i++)
+ {
+ tx_pData[i] = Net_Info[nVox_Chn_Select][i];
+ }
+
+ break;
+
+ case VHOUSE_CMD_CLEAR_PAIR:
+ /*Data Length*/
+ tx_pData[3] = 0x02;
+
+ tx_pData[5] = 0x03;
+
+ break;
+
+ case VHOUSE_CMD_CLOSE_WIN_GET_VBAT: //和开盖命令一样。
+
+ case VHOUSE_CMD_OPEN_BOX: //开盖获取电量命令
+ /*Data Length*/
+ tx_pData[3] = 0x05;
+
+ tx_pData[5] = FW_VER; //Version
+
+ tx_pData[6] = bat_level * 5; //电仓电量值 0~100;
+
+ tx_pData[7] = MAX_PACKET_SIZE; //max_packet_size:0x20
+
+ if( nVox_Chn_Select == VOL_CHAN )
+ {
+ if( Earphone_Vbat[VOL_CHAN] == 0 )
+ {
+ tx_pData[8] = 0xFF;
+ }
+ else
+ {
+ tx_pData[8] = Earphone_Vbat[VOR_CHAN];
+ }
+ }
+ else
+ if( nVox_Chn_Select == VOR_CHAN )
+ {
+ if( Earphone_Vbat[VOR_CHAN] == 0 )
+ {
+ tx_pData[8] = 0xFF;
+ }
+ else
+ {
+ tx_pData[8] = Earphone_Vbat[VOL_CHAN];
+ }
+ }
+
+ break;
+
+ case VHOUSE_CMD_PWROFF:
+ /*Data Length*/
+ tx_pData[3] = 0x01;
+
+ break;
+
+ case VHOUSE_CMD_CLOSE_BOX: //关盖指令
+ /*Data Length*/
+ tx_pData[3] = 0x02;
+ tx_pData[5] = EarPhone_Num; //耳机个数
+
+ break;
+
+ default:
+ break;
+ }
+
+ dataLen = 4 + tx_pData[3];
+
+ tx_pData[dataLen] = Crc8Maxim(tx_pData,dataLen);
+
+#elif ZHONGKE
+
+ /*数据包头*/
+ tx_pData[0] = BOXHEADER>>8;
+ tx_pData[1] = BOXHEADER;
+ /*充电仓识别码*/
+ tx_pData[2] = BOXIDCODE;
+ /*耳机通道*/
+ tx_pData[5] = nVox_Chn_Select;
+ /*指令编号*/
+ tx_pData[3] = TxCommand;
+
+ switch(TxCommand)
+ {
+ case VHOUSE_CMD_GET_VBAT:
+
+ case VHOUSE_CMD_OPEN_WINDOW:
+
+ case VHOUSE_CMD_CLOSE_WIN_GET_VBAT:
+
+ /*Data Length*/
+ tx_pData[4] = 0x03;
+
+ tx_pData[6] = ( ( ChgStatus & CHG_STA_ING ) << 6 ) | bat_level; //bit 0~6 表示充电仓电量值 0~100;bit 7 为 1 表示在给充电仓充电,为 0 表示没有给充电仓充电;
+
+ tx_pData[7] = 0x00;
+
+ break;
+
+ case VHOUSE_CMD_PAIR: //长按充电仓按键3s,充电仓发送配对指令。
+ /*
+ 发送给右耳 CMD2,右耳接收到,发送 CMD3 指令给充电仓,充电仓 copy 该指令给
+ 左耳,充电仓可随即发送 CMD2 指令给左耳,左耳会发送 CMD=0x03 给充电仓,充电仓直接
+ copy CMD3 给右耳即可,右耳接收到发送 VHOUSE_CMD_SUCCES 指令给充电仓。
+ */
+ /*Data Length*/
+ tx_pData[4] = 0x01;
+
+ break;
+
+ case VHOUSE_CMD_GET_TWS_BTADDR: //将收到的CMD3转发给对耳。
+#ifdef VOX_RX
+ for(i=0;i> 8; /*小端模式:低字节在前
+ Bit0-7:命令号
+ Bit8-14:预留
+ Bit15:包类型
+ 0:REQ
+ 1:ACK
+ */
+ tx_pData[4] = CoverStatus; //开关盒状态
+
+ switch(TxCommand)
+ {
+ case CMD_TWS_GET_BTADDR: //获取耳机MAC地址
+ /*Data Length*/
+ tx_pData[5] = 0x00; //小端模式,低位在前,长2Bytes。
+ tx_pData[6] = 0x00;
+#ifdef VOX_RX
+ for(i=0;i<6;i++)
+ {
+ BES_Addr[i] = 0; //清本地耳机蓝牙地址。
+ }
+#endif
+ break;
+
+ case CMD_TWS_SET_BTADDR:
+ /*Data Length*/
+ tx_pData[5] = 0x0E; //小端模式,低位在前,长2Bytes。
+ tx_pData[6] = 0x00;
+#ifdef VOX_RX
+ for(i=0;i<6;i++)
+ {
+ tx_pData[7+i] = BES_Addr[i]; //发送耳机蓝牙地址。
+ }
+#endif
+ for(i=0;i<8;i++)
+ {
+ tx_pData[13+i] = Random_Data[i]; //发送随机数。
+ }
+
+ break;
+
+ case CMD_SHUT_DOWN:
+ /*Data Length*/
+ tx_pData[5] = 0x01; //小端模式,低位在前,长2Bytes。
+ tx_pData[6] = 0x00;
+
+ tx_pData[7] = gShip_Mode_Flag; //船运模式:0:正常关机;1:船运模式
+
+ break;
+
+ case CMD_PAIRING_IMD: //立即执行TWS配对
+ /*Data Length*/
+ tx_pData[5] = 0x00; //小端模式,低位在前,长2Bytes。
+ tx_pData[6] = 0x00;
+
+ break;
+
+ case CMD_CLEAR_PAIR:
+ /*Data Length*/
+ tx_pData[5] = 0x00; //小端模式,低位在前,长2Bytes。
+ tx_pData[6] = 0x00;
+ break;
+
+ case CMD_HEARTBEAT:
+ /*Data Length*/
+ tx_pData[5] = 0x05; //小端模式,低位在前,长2Bytes。
+ tx_pData[6] = 0x00;
+ /*
+ data定义:
+ 1、D0、D1(2Bytes)构成充电盒的版本信息,D0的高4bit为充电盒硬件PCBA版本号,D0低4bit和D1构成充电盒软件版本号。
+ 2、D2(1Byte)构成充电盒电量和充电状态,D2的bit7为是否有PG接入;D2的低7位表示充电盒电量信息,范围0-100;
+ 3、D3(1Byte)构成对耳电量信息,根据协议中的Side信息区分左右耳电量信息。
+ 4、D4(1Byte)耳机静默升级,充电盒默认发0x00
+ */
+ tx_pData[7] = HW_VER << 4;
+ tx_pData[7] |= FW_VER >> 8;
+ tx_pData[8] = FW_VER;
+
+ tx_pData[9] = ( ( ChgStatus & CHG_STA_ING ) << 6 ) | ( 5 * bat_level );
+
+ if(nVox_Chn_Select == VOL_CHAN)
+ {
+ tx_pData[10] = Bes_Bet_Level[0];
+ }
+ else
+ if(nVox_Chn_Select == VOR_CHAN)
+ {
+ tx_pData[10] = Bes_Bet_Level[1];
+ }
+
+ tx_pData[11] = 0x00;
+
+ break;
+
+ case CMD_SN: //由于SN码较长,充电盒需分多次发送,D0表示充第几位开始发送,一次固定发送9Bytes。最后一包SN数据不够9Bytes的补0或0xff。
+ /*Data Length*/
+ tx_pData[5] = 0x0A; //小端模式,低位在前,长2Bytes。
+ tx_pData[6] = 0x00;
+
+ tx_pData[7] = SN_Num_Start;
+
+ for(i=0;i<9;i++)
+ {
+ if( (SN_Num_Start + i) > 22 )
+ {
+ tx_pData[8+i] = 0xFF;
+ }
+ else
+ {
+ tx_pData[8+i] = SN_Num[ SN_Num_Start + i ]; //发送随机数。
+ }
+ }
+
+ SN_Num_Start += 9;
+
+ break;
+
+ case CMD_GET_INTO_PAIR:
+ /*Data Length*/
+ tx_pData[5] = 0x01; //小端模式,低位在前,长2Bytes。
+ tx_pData[6] = 0x00;
+
+ tx_pData[7] = 0x01; //01进入配对状态
+ break;
+
+ case BES_RESET: //复位patten
+
+ return;
+
+ default:
+ break;
+ }
+
+ dataLen = (uint16_t)( tx_pData[5] | ( tx_pData[6] << 8 ) ) + 7;
+
+ Checksum = CalCheckCrc16( tx_pData, dataLen ); //计算检验和
+
+ tx_pData[ dataLen ] = Checksum;
+
+ tx_pData[ ++dataLen ] = Checksum >> 8;
+
+#endif
+
+ /* vor、vol都使用uart1进行分时通讯,设置TX模式*/
+#ifdef VOX_ADT_ENABLE
+
+ if(nVox_Chn_Select == VOL_CHAN)
+ {
+ VOL_EN_Type( VOX_COMM_Mode_Uart );
+ }
+ else
+ {
+ VOR_EN_Type( VOX_COMM_Mode_Uart );
+ }
+
+#else
+
+ VOX_EN_Type( VOX_COMM_Mode_Uart );
+
+#endif
+
+ if(nVox_Chn_Select == VOL_CHAN)
+ {
+ COMM_CTL |= Vol_SWDT;
+
+ COMM_CTL &= ~Vol_SWDR;
+ }
+ else
+ if(nVox_Chn_Select == VOR_CHAN)
+ {
+ COMM_CTL |= Vor_SWDT;
+
+ COMM_CTL &= ~Vor_SWDR;
+ }
+ else
+ if(nVox_Chn_Select == VOX_BOTH)
+ {
+ COMM_CTL |= Vor_SWDT | Vol_SWDT;
+
+ COMM_CTL &= ~( Vor_SWDR |Vol_SWDR );
+ }
+
+#if UART1_ENABLE
+ Uart1SendPacket(dataLen + 2, tx_pData);
+#endif
+
+ /* 设置RX模式。 */
+ if(nVox_Chn_Select == VOL_CHAN)
+ {
+ COMM_CTL &= ~ Vol_SWDT;
+
+ COMM_CTL |= Vol_SWDR;
+ }
+ else
+ if(nVox_Chn_Select == VOR_CHAN)
+ {
+ COMM_CTL &= ~Vor_SWDT;
+
+ COMM_CTL |= Vor_SWDR;
+ }
+ else
+ if(nVox_Chn_Select == VOX_BOTH)
+ {
+ COMM_CTL &= ~Vor_SWDT | Vol_SWDT;
+
+ COMM_CTL |= ( Vor_SWDR |Vol_SWDR );
+ }
+}
+
+#endif
+
+
+#ifdef VOX_RX
+ /*
+ *******************************************************************************
+ * void HandleRxCommand(VOX_BES_COMMAND_E RxCommand)
+ *
+ * Description : 耳机端发送的数据包的解析及处理
+ * Ack payload:
+ * Header checksum side cmd len Data
+ * 1bytes 1byte 1byte 1byte 1byte Len bytes
+ *
+ * Arguments : VOX_BES_COMMAND_E RxCommand:
+
+ * Returns :
+ *
+ * Notes :
+ *
+ *******************************************************************************
+*/
+static void HandleRxMsg(VOX_BES_COMMAND_E RxCommand)
+{
+ uint8_t i = 0;
+
+#if JIELI
+
+ switch(RxCommand)
+ {
+ case VHOUSE_CMD_PAIR:
+
+ for(i=0;i<18;i++)
+ {
+ MAC_Addr[Vox_Type][i] = RX1_Buffer[4+i];
+ }
+
+ for(i=0;i<8;i++)
+ {
+ Net_Info[Vox_Type][i] = RX1_Buffer[22+i];
+ }
+
+ if( Vox_Type == VOL_CHAN ) //根据耳机Side参数
+ {
+ Vox_Get_BES_Addr_Flag[VOL_TYPE] = 1; //获取左耳机发的CMD3
+ }
+ else
+ {
+ Vox_Get_BES_Addr_Flag[VOR_TYPE] = 1; //获取右耳机发的CMD3
+ }
+
+ break;
+
+ case VHOUSE_CMD_EXCH_TWS_BTADDR:
+
+ break;
+
+ case VHOUSE_CMD_OPEN_BOX:
+
+ case VHOUSE_CMD_CLOSE_WIN_GET_VBAT:
+
+ if( RX1_Buffer[4] == 0xE3 ) //根据耳机Side参数
+ {
+ Vox_Get_Vbat_Flag[VOL_TYPE] = 1; //获取左耳机发的Vbat
+
+ Earphone_Vbat[VOL_CHAN] = RX1_Buffer[5];
+ }
+ else
+ {
+ Vox_Get_Vbat_Flag[VOR_TYPE] = 1; //获取右耳机发的Vbat
+
+ Earphone_Vbat[VOR_CHAN] = RX1_Buffer[5];
+ }
+
+ break;
+
+ case VHOUSE_CMD_CLOSE_BOX:
+
+ break;
+
+ case VHOUSE_CMD_PWROFF:
+
+ break;
+
+ default:
+ break;
+ }
+
+#elif ZHONGKE
+
+ switch(RxCommand)
+ {
+ case VHOUSE_CMD_GET_VBAT:
+
+ case VHOUSE_CMD_CLOSE_WINDOW:
+
+ case VHOUSE_CMD_OPEN_WINDOW:
+
+ case VHOUSE_CMD_CLOSE_WIN_GET_VBAT:
+
+ break;
+
+ case VHOUSE_CMD_SUCCESS:
+
+ break;
+
+ case VHOUSE_CMD_GET_TWS_BTADDR:
+
+ if( RX1_Buffer[5] == VOL_CHAN ) //根据耳机Side参数
+ {
+ Vox_Get_BES_Addr_Flag[VOL_TYPE] = 1; //获取左耳机发的CMD3
+ }
+ else
+ {
+ Vox_Get_BES_Addr_Flag[VOR_TYPE] = 1; //获取右耳机发的CMD3
+ }
+
+ break;
+
+ case VHOUSE_CMD_SYS_RST: //系统复位,耳机->充电仓
+
+ break;
+
+ default:
+ break;
+ }
+
+#elif XUANHENG
+
+ uint8_t CMD_Type = 0;
+
+ CMD_Type = RX1_Buffer[1] >> 4;
+ if( CMD_Type & TWS_PC ) //PC/工装->盒子
+ {
+
+ }
+ else //耳机->盒子
+ {
+ switch(RxCommand)
+ {
+ case CMD_TWS_GET_BTADDR:
+
+ for(i=0;i> 7; //获取耳机是否满电
+
+ Vox_Pairing_State[VOL_TYPE] = RX1_Buffer[10]; //获取耳机配对状态;
+
+ Tws_Paired_Record[VOL_TYPE] = RX1_Buffer[11] & 0x01; //bit0:0:有TWS配对记录;1:没有TWS配对记录;bit1:0:有与手机配对记录;1:没有和手机配对记录。
+
+ Phone_Paired_Record[VOL_TYPE] = ( RX1_Buffer[11] >> 1 ) & 0x01;
+
+ Bes_OTA_State[VOL_TYPE] = RX1_Buffer[12];
+ }
+ else
+ {
+ Bes_Bet_Level[VOR_TYPE] = RX1_Buffer[9] & 0x7F;
+
+ Bes_Chg_Full[VOR_TYPE] = RX1_Buffer[9] >> 7;
+
+ Vox_Pairing_State[VOR_TYPE] = RX1_Buffer[10];
+
+ Tws_Paired_Record[VOR_TYPE] = RX1_Buffer[11] & 0x01;
+
+ Phone_Paired_Record[VOR_TYPE] = (RX1_Buffer[11] >> 1) & 0x01;
+
+ Bes_OTA_State[VOR_TYPE] = RX1_Buffer[12];
+ }
+
+ break;
+
+ case CMD_SN:
+
+ if( CMD_Type == TWS_VOL ) //根据耳机Side参数
+ {
+ Bes_Set_SN_State[VOL_TYPE] = RX1_Buffer[7]; //左耳机SN写入是否成功状态标志
+ }
+ else
+ {
+ Bes_Set_SN_State[VOR_TYPE] = RX1_Buffer[7]; //右耳机SN写入是否成功状态标志
+ }
+
+ break;
+
+ case CMD_GET_INTO_PAIR:
+ if( CMD_Type == TWS_VOL ) //根据耳机Side参数
+ {
+ Bes_In_Pair_State[VOL_TYPE] = RX1_Buffer[7]; //左耳机是否进入配对状态成功状态标志
+ }
+ else
+ {
+ Bes_In_Pair_State[VOR_TYPE] = RX1_Buffer[7]; //右耳机是否进入配对状态成功状态标志
+ }
+
+ break;
+ case CMD_PAIRING_IMD:
+ if( CMD_Type == TWS_VOL ) //根据耳机Side参数
+ {
+ Bes_In_Pair_State[VOL_TYPE] = 1; //左耳机是否进入配对状态成功状态标志
+ }
+ else
+ {
+ Bes_In_Pair_State[VOR_TYPE] = 1; //右耳机是否进入配对状态成功状态标志
+ }
+
+ break;
+ default:
+ break;
+ }
+ }
+
+#endif
+
+}
+
+/*
+*******************************************************************************
+* void HandleVoxCommMsg(void)
+*
+* Description : Vox 通讯功能处理函数,100ms定时调用。由于和耳机通信前需要打开耳机端的TRX功能,并且每次通信只能一只耳机。通过切换VOL/VOR通信开关进行通信
+*
+* Arguments : NONE
+
+* Returns : NONE
+
+* Notes : NONE
+*
+*******************************************************************************
+*/
+
+void HandleVoxCommMsg(void)
+{
+ uint8_t i = 0;
+
+#if XUANHENG
+
+ uint16_t CrcCheckSum = 0;
+
+ uint16_t Data_Len = 0;
+
+#else
+
+ uint8_t CrcCheckSum = 0;
+
+#endif
+ /*RX数据处理*/
+ if( Uart1_RX_Finish_Flag )
+ {
+ Uart1_RX_Finish_Flag = FALSE;
+
+#ifdef _DEBUG_VOX
+ printf("RX1_Buffer[0]:0x%x,RX1_Buffer[1]:0x%x,RX1_Buffer[2]:0x%x,RX1_Buffer[3]:0x%x,RX1_Buffer[4]:0x%x,RX1_Buffer[5]:0x%x,RX1_Buffer[6]:0x%x,line:%d\r\n",(u16)RX1_Buffer[0],(u16)RX1_Buffer[1],(u16)RX1_Buffer[2],(u16)RX1_Buffer[3],(u16)RX1_Buffer[4],(u16)RX1_Buffer[5],(u16)RX1_Buffer[6],(u16)__LINE__);
+#endif
+
+#if JIELI
+
+ CrcCheckSum = Crc8Maxim(RX1_Buffer, RX1_Buffer[2] + 3); //求校验和
+
+ if( CrcCheckSum == RX1_Buffer[RX1_Buffer[2] + 3] )
+
+#elif ZHONGKE
+
+ CrcCheckSum = Crc8Maxim( RX1_Buffer, RX1_Buffer[4] + 5 );
+
+ if( CrcCheckSum == RX1_Buffer[ RX1_Buffer[4] + 5 ] )
+
+#elif XUANHENG
+
+ Data_Len = RX1_Buffer[5] | ( RX1_Buffer[6] << 8 ) + 7;
+
+ CrcCheckSum = CalCheckCrc16( RX1_Buffer, Data_Len); //计算检验和
+
+ if( CrcCheckSum == (uint16_t)(RX1_Buffer[ Data_Len + 1 ] | RX1_Buffer[ Data_Len + 2 ] << 8) ) //校验和小端模式,低位在前。
+
+#endif
+ {
+#if XUANHENG
+
+ HandleRxMsg((VOX_BES_COMMAND_E)RX1_Buffer[2]);
+
+#else
+
+ HandleRxMsg((VOX_BES_COMMAND_E)RX1_Buffer[3]);
+
+#endif
+ }
+ else
+ {
+ return;
+ }
+ }
+}
+
+
+#endif
diff --git a/UsrSrc/key/key.c b/UsrSrc/key/key.c
index 5f8d96c..a2b4bf3 100644
--- a/UsrSrc/key/key.c
+++ b/UsrSrc/key/key.c
@@ -28,6 +28,7 @@
#include "hall.h"
#include "discharge_module.h"
#include "display_ui.h"
+#include "vox_comm.h"
#if KEY_ENABLE
/******************************************************************************\
diff --git a/UsrSrc/system/system.c b/UsrSrc/system/system.c
index 5348d2f..ebf32d3 100644
--- a/UsrSrc/system/system.c
+++ b/UsrSrc/system/system.c
@@ -163,12 +163,15 @@ void System_Init(void)
WakeUp_Init_Set();
#endif
Decnt_SleepDelay = ENTER_STANDBYMODE_CNT;
+
Boost_Open_Flag = FALSE;
+
#ifdef VOX_ADT_ENABLE
Vol_GetOut_Box_Flag = TRUE;
Vor_GetOut_Box_Flag = TRUE;
#endif
+
Systerm_State.Next_State = POWER_ON_STATE;
}
diff --git a/UsrSrc/userapp/userapp.c b/UsrSrc/userapp/userapp.c
index 830e9e1..d56b0b0 100644
--- a/UsrSrc/userapp/userapp.c
+++ b/UsrSrc/userapp/userapp.c
@@ -31,6 +31,7 @@
#include "led.h"
#include "vox_module.h"
#include "display_ui.h"
+#include "vox_comm.h"
/******************************************************************************\
Macro definitions
diff --git a/UsrSrc/vox/vox_module.c b/UsrSrc/vox/vox_module.c
index 87f6d24..a3d84da 100644
--- a/UsrSrc/vox/vox_module.c
+++ b/UsrSrc/vox/vox_module.c
@@ -1,4 +1,4 @@
-/*
+#include "vox_comm.h"/*
******************************************************************************
*
* @file vox_module.c
@@ -26,9 +26,9 @@
#include "hall.h"
#include "key.h"
#include "sys_tim.h"
-#include "sys_tim.h"
#include "adc.h"
#include "userapp.h"
+#include "vox_comm.h"
#ifdef VOX_COVER_ENABLE
@@ -58,8 +58,6 @@ bit Vox_Output_Short_Flag;
#define Vox_COM_MSG_Tim 20
-#define MAX_PACKET_SIZE 0x20
-
#if VOX_FOLLOW_CHG
#define VOX_FOLLOW_CHG_NOWCURCHK_CNT 5
@@ -82,68 +80,12 @@ e_Vox_Follow_Chg_Sta Follow_Chg_Sta;
#endif
-#ifdef VOX_RX
-
-uint8_t Vox_Get_Vbat_Flag[2]; //耳机配对状态,VOL:低4bit;VOR:高4bit。0是无效,1是正在配对,2是配对成功,3不处理,保持当前状态。
-uint8_t Vox_Get_BES_Addr_Flag[2];
-//idata uint8_t BES_Addr[6] = {0}; //蓝牙耳机地址,Vox_Bes_Addr[0][6]:VOL;Vox_Bes_Addr[1][6]:VOR
-
-#endif
-
uint8_t EarPhone_Num;
bit Vox_Ocp_Flag;
bit OpenCover_TX_Cmd_Flag;
-#if XUANHENG
-
-idata uint8_t Vox_Pairing_State[2]; //耳机配对状态,0是无效,1是正在配对,2是配对成功,3不处理,保持当前状态。
-
-uint8_t Vox_Set_BES_Addr_Flag[2];
-
-idata uint8_t BES_Addr[6]; //蓝牙耳机地址,Vox_Bes_Addr[0][6]:VOL;Vox_Bes_Addr[1][6]:VOR
-
-idata uint8_t Random_Data[8];
-
-uint8_t Bes_Bet_Level[2]; //对耳电池电量信息,Bes_Bet_Level[0]:左耳;Bes_Bet_Level[1]:右耳
-
-uint8_t Bes_Chg_Full[2]; //对耳硬件是否满电:0非满电;1:满电。
-
-uint8_t Tws_Paired_Record[2]; //TWS配对记录;0:有TWS配对记录;1:没有TWS配对记录;
-
-uint8_t Phone_Paired_Record[2]; //手机配对记录;0:有与手机配对记录;1:没有和手机配对记录。
-
-uint8_t Bes_OTA_State[2]; //耳机静默升级状态;1:有;0:没有
-
-uint8_t Bes_Set_SN_State[2]; //耳机应答仓写入SN是否成功。1:成功;0:失败
-
-uint8_t Bes_In_Pair_State[2]; //耳机进入配对状态标志位
-
-uint8_t Vox_Clear_Pair_Flag[2];
-
-bit Vol_Bes_Addr_Flag;
-
-bit Vor_Bes_Addr_Flag;
-
-idata uint8_t SN_Num[22]; //SN码,需要从OTP的固定位置获取。
-
-idata uint8_t SN_Num_Start; //SN码发送起始位置,有开盖动作时清零。
-
-bit gShip_Mode_Flag; //船运模式标志位:0:正常关机;1:船运模式
-
-#elif JIELI
-
-uint8_t Vox_Type;
-
-uint8_t Net_Info[2][13];
-
-idata uint8_t MAC_Addr[2][18];
-
-uint8_t Earphone_Vbat[2]; //对耳电量
-
-#endif
-
/******************************************************************************\
Functions definitions
\******************************************************************************/
@@ -179,8 +121,8 @@ uint8_t Earphone_Vbat[2]; //
case VOX_COMM_Mode_Uart:
- COMM_CTL |= Vol_EN_COMR | Vol_SWDR; //开启VOX通讯使能,选择UART通讯模式。
- COMM_CTL &= ~( Vol_SW_MD | Vol_SWDT );
+ COMM_CTL |= Vol_EN_COMR | Vol_SWDT; //开启VOX通讯使能,选择UART通讯模式。
+ COMM_CTL &= ~( Vol_SW_MD | Vol_SWDR);
SFRADDR = COMM_CON; //Vox通讯电平选择,3.0V,打开50K上拉电阻。
SFRDATA &= ~0x0D;
@@ -266,8 +208,8 @@ uint8_t Earphone_Vbat[2]; //
case VOX_COMM_Mode_Uart:
- COMM_CTL |= Vor_EN_COMR | Vor_SWDR ; //开启VOX通讯使能,选择UART通讯模式。
- COMM_CTL &= ~( Vor_SW_MD | Vor_SWDT );
+ COMM_CTL |= Vor_EN_COMR | Vor_SWDT; //开启VOX通讯使能,选择UART通讯模式。
+ COMM_CTL &= ~( Vor_SW_MD | Vor_SWDR );
SFRADDR = COMM_CON; //Vox通讯电平选择,3.0V,打开50K上拉电阻。
SFRDATA &= ~0x0D;
@@ -353,8 +295,8 @@ uint8_t Earphone_Vbat[2]; //
case VOX_COMM_Mode_Uart:
- COMM_CTL |= Vor_EN_COMR | Vol_EN_COMR | Vol_SWDR | Vor_SWDR ; //开启VOX通讯使能,选择UART通讯模式。
- COMM_CTL &= ~( Vor_SW_MD | Vol_SW_MD | Vol_SWDT | Vor_SWDT );
+ COMM_CTL |= Vor_EN_COMR | Vol_EN_COMR | Vol_SWDT | Vor_SWDT; //开启VOX通讯使能,选择UART通讯模式。
+ COMM_CTL &= ~( Vor_SW_MD | Vol_SW_MD | Vol_SWDR | Vor_SWDR );
SFRADDR = COMM_CON; //Vox通讯电平选择,3.0V,打开50K上拉电阻。
SFRDATA &= ~0x0D;
@@ -773,7 +715,7 @@ void Vor_Det_Machine(void)
case VOX_STAY_IN_BOX: //耳机在仓
- if ( ( CHIP_STA1 & ( VOR_LoadOn | VOR_Ioff ) ) == VOR_Ioff ) //充电过程中出现只有IOFF,则出现如下三种情况:1、耳机出仓;2、耳机电池充满;3、耳机电池锂保。
+ if ( ( CHIP_STA1 & ( VOR_LoadOn | VOR_Ioff ) ) == ( VOR_LoadOn | VOR_Ioff ) ) //充电过程中出现只有IOFF,则出现如下三种情况:1、耳机出仓;2、耳机电池充满;3、耳机电池锂保。
{
if( nVor_Intobox_Disp_Flag ) //Vor耳机在正常充电过程中,被拔出。
{
@@ -2025,879 +1967,5 @@ void Vox_Follow_Chg( g_Vox_Fllow_Chg_Cfg *n_Vox_Fllow_Chg )
#endif
-#if XUANHENG
-
- /*
- *******************************************************************************
- * u16 CalCheckCrc16(u8 * pucFrame, u16 usLen)
- *
- * Description : 校验和的计算(CRC-16-CCITT-FALSE)
- *
- *
- * Arguments : u8 *pucFrame: 数据存放地址
- u16 usLen: 数据长度, 以byte为单位
-
- * Returns :
- *
- * Notes :
- *
- *******************************************************************************
- */
-
- uint16_t CalCheckCrc16(uint8_t *pucFrame, unsigned int usLen)
-{
- uint16_t wCRCin = 0xFFFF;
- uint16_t wCPoly = 0x1021;
- uint8_t wChar = 0;
- unsigned int i;
-
- while (usLen--)
- {
-
- wChar = *(pucFrame++);
-
- wCRCin ^= (wChar << 8);
-
- for(i = 0;i < 8;i++)
- {
- if(wCRCin & 0x8000)
- {
- wCRCin = (wCRCin << 1) ^ wCPoly;
- }
- else
- {
- wCRCin = wCRCin << 1;
- }
- }
- }
-
- return (wCRCin);
-}
-
-#else
-
- /*
- *******************************************************************************
- * uint8_t Crc8Maxim(u8 *buf, u8 length)
- *
- * Description : 校验和的计算
- *
- *
- * Arguments : u8 *buf: 数据存放地址
- u8 length: 数据长度, 以byte为单位
-
- * Returns :
- *
- * Notes :
- *
- *******************************************************************************
- */
- uint8_t Crc8Maxim(u8 *buf, u8 length)
- {
- u8 i;
- u8 crc = 0;
- while(length--)
- {
- crc ^= *buf++;
- for(i=0;i<8;i++)
- {
- if( crc&1 )
- {
- crc = (crc >> 1)^0x8c;
- }
- else
- {
- crc >>= 1;
- }
- }
- }
- return crc;
- }
-
-#endif
-
-#ifdef VOX_TX
-/*
- *******************************************************************************
- * void HandleTxCommand(VOX_BES_COMMAND_E RxCommand, e_Vox_Chan nVox_Chn_Select)
- *
- * Description : 发送数据包的封装,并打开相应的双向通信通道
- * Command payload
- * Header checksum side cmd len Data
- * 1bytes 1byte 1byte 1byte 1byte Len bytes
-
- *
- * Arguments : VOX_BES_COMMAND_E TxCommand: , e_Vox_Chan nVox_Chn_Select
-
- * Returns :
- *
- * Notes :
- *
- *******************************************************************************
-*/
-void HandleTxCommand(VOX_BES_COMMAND_E TxCommand, e_Vox_Chan nVox_Chn_Select)
-{
- uint16_t dataLen = 0;
-
- uint8_t tx_pData[COM1_Data_Lenth] = 0;
-
- uint8_t i = 0;
-
-#if JIELI
-
- /*数据包头*/
- tx_pData[0] = 0x00;
- tx_pData[1] = BOXHEADER>>8;
- tx_pData[2] = BOXHEADER;
- /*指令编号*/
- tx_pData[4] = TxCommand;
-
- Vox_Type = nVox_Chn_Select;
-
- switch(TxCommand)
- {
- case VHOUSE_CMD_PAIR:
- /*Data Length*/
- tx_pData[3] = 0x02;
-
- if( nVox_Chn_Select == VOL_CHAN )
- {
- tx_pData[5] = 0x02;
-
- Vox_Get_BES_Addr_Flag[VOL_TYPE] = 0;
- }
- else
- if( nVox_Chn_Select == VOR_CHAN )
- {
- tx_pData[5] = 0x01;
-
- Vox_Get_BES_Addr_Flag[VOR_TYPE] = 0;
- }
-
- break;
-
- case VHOUSE_CMD_EXCH_TWS_BTADDR:
- /*Data Length*/
- tx_pData[3] = MAX_PACKET_SIZE;
-
- for(i=5;i<18;i++)
- {
- tx_pData[i] = MAC_Addr[nVox_Chn_Select][i];
- }
-
- for(i=23;i<13;i++)
- {
- tx_pData[i] = Net_Info[nVox_Chn_Select][i];
- }
-
- break;
-
- case VHOUSE_CMD_CLEAR_PAIR:
- /*Data Length*/
- tx_pData[3] = 0x02;
-
- tx_pData[5] = 0x03;
-
- break;
-
- case VHOUSE_CMD_CLOSE_WIN_GET_VBAT: //和开盖命令一样。
-
- case VHOUSE_CMD_OPEN_BOX: //开盖获取电量命令
- /*Data Length*/
- tx_pData[3] = 0x05;
-
- tx_pData[5] = FW_VER; //Version
-
- tx_pData[6] = bat_level * 5; //电仓电量值 0~100;
-
- tx_pData[7] = MAX_PACKET_SIZE; //max_packet_size:0x20
-
- if( nVox_Chn_Select == VOL_CHAN )
- {
- if( Earphone_Vbat[VOL_CHAN] == 0 )
- {
- tx_pData[8] = 0xFF;
- }
- else
- {
- tx_pData[8] = Earphone_Vbat[VOR_CHAN];
- }
- }
- else
- if( nVox_Chn_Select == VOR_CHAN )
- {
- if( Earphone_Vbat[VOR_CHAN] == 0 )
- {
- tx_pData[8] = 0xFF;
- }
- else
- {
- tx_pData[8] = Earphone_Vbat[VOL_CHAN];
- }
- }
-
- break;
-
- case VHOUSE_CMD_PWROFF:
- /*Data Length*/
- tx_pData[3] = 0x01;
-
- break;
-
- case VHOUSE_CMD_CLOSE_BOX: //关盖指令
- /*Data Length*/
- tx_pData[3] = 0x02;
- tx_pData[5] = EarPhone_Num; //耳机个数
-
- break;
-
- default:
- break;
- }
-
- dataLen = 4 + tx_pData[3];
-
- tx_pData[dataLen] = Crc8Maxim(tx_pData,dataLen);
-
-#elif ZHONGKE
-
- /*数据包头*/
- tx_pData[0] = BOXHEADER>>8;
- tx_pData[1] = BOXHEADER;
- /*充电仓识别码*/
- tx_pData[2] = BOXIDCODE;
- /*耳机通道*/
- tx_pData[5] = nVox_Chn_Select;
- /*指令编号*/
- tx_pData[3] = TxCommand;
-
- switch(TxCommand)
- {
- case VHOUSE_CMD_GET_VBAT:
-
- case VHOUSE_CMD_OPEN_WINDOW:
-
- case VHOUSE_CMD_CLOSE_WIN_GET_VBAT:
-
- /*Data Length*/
- tx_pData[4] = 0x03;
-
- tx_pData[6] = ( ( ChgStatus & CHG_STA_ING ) << 6 ) | bat_level; //bit 0~6 表示充电仓电量值 0~100;bit 7 为 1 表示在给充电仓充电,为 0 表示没有给充电仓充电;
-
- tx_pData[7] = 0x00;
-
- break;
-
- case VHOUSE_CMD_PAIR: //长按充电仓按键3s,充电仓发送配对指令。
- /*
- 发送给右耳 CMD2,右耳接收到,发送 CMD3 指令给充电仓,充电仓 copy 该指令给
- 左耳,充电仓可随即发送 CMD2 指令给左耳,左耳会发送 CMD=0x03 给充电仓,充电仓直接
- copy CMD3 给右耳即可,右耳接收到发送 VHOUSE_CMD_SUCCES 指令给充电仓。
- */
- /*Data Length*/
- tx_pData[4] = 0x01;
-
- break;
-
- case VHOUSE_CMD_GET_TWS_BTADDR: //将收到的CMD3转发给对耳。
-#ifdef VOX_RX
- for(i=0;i> 8; /*小端模式:低字节在前
- Bit0-7:命令号
- Bit8-14:预留
- Bit15:包类型
- 0:REQ
- 1:ACK
- */
- tx_pData[4] = CoverStatus; //开关盒状态
-
- switch(TxCommand)
- {
- case CMD_TWS_GET_BTADDR: //获取耳机MAC地址
- /*Data Length*/
- tx_pData[5] = 0x00; //小端模式,低位在前,长2Bytes。
- tx_pData[6] = 0x00;
-#ifdef VOX_RX
- for(i=0;i<6;i++)
- {
- BES_Addr[i] = 0; //清本地耳机蓝牙地址。
- }
-#endif
- break;
-
- case CMD_TWS_SET_BTADDR:
- /*Data Length*/
- tx_pData[5] = 0x0E; //小端模式,低位在前,长2Bytes。
- tx_pData[6] = 0x00;
-#ifdef VOX_RX
- for(i=0;i<6;i++)
- {
- tx_pData[7+i] = BES_Addr[i]; //发送耳机蓝牙地址。
- }
-#endif
- for(i=0;i<8;i++)
- {
- tx_pData[13+i] = Random_Data[i]; //发送随机数。
- }
-
- break;
-
- case CMD_SHUT_DOWN:
- /*Data Length*/
- tx_pData[5] = 0x01; //小端模式,低位在前,长2Bytes。
- tx_pData[6] = 0x00;
-
- tx_pData[7] = gShip_Mode_Flag; //船运模式:0:正常关机;1:船运模式
-
- break;
-
- case CMD_PAIRING_IMD: //立即执行TWS配对
- /*Data Length*/
- tx_pData[5] = 0x00; //小端模式,低位在前,长2Bytes。
- tx_pData[6] = 0x00;
-
- break;
-
- case CMD_CLEAR_PAIR:
- /*Data Length*/
- tx_pData[5] = 0x00; //小端模式,低位在前,长2Bytes。
- tx_pData[6] = 0x00;
- break;
-
- case CMD_HEARTBEAT:
- /*Data Length*/
- tx_pData[5] = 0x05; //小端模式,低位在前,长2Bytes。
- tx_pData[6] = 0x00;
- /*
- data定义:
- 1、D0、D1(2Bytes)构成充电盒的版本信息,D0的高4bit为充电盒硬件PCBA版本号,D0低4bit和D1构成充电盒软件版本号。
- 2、D2(1Byte)构成充电盒电量和充电状态,D2的bit7为是否有PG接入;D2的低7位表示充电盒电量信息,范围0-100;
- 3、D3(1Byte)构成对耳电量信息,根据协议中的Side信息区分左右耳电量信息。
- 4、D4(1Byte)耳机静默升级,充电盒默认发0x00
- */
- tx_pData[7] = HW_VER << 4;
- tx_pData[7] |= FW_VER >> 8;
- tx_pData[8] = FW_VER;
-
- tx_pData[9] = ( ( ChgStatus & CHG_STA_ING ) << 6 ) | ( 5 * bat_level );
-
- if(nVox_Chn_Select == VOL_CHAN)
- {
- tx_pData[10] = Bes_Bet_Level[0];
- }
- else
- if(nVox_Chn_Select == VOR_CHAN)
- {
- tx_pData[10] = Bes_Bet_Level[1];
- }
-
- tx_pData[11] = 0x00;
-
- break;
-
- case CMD_SN: //由于SN码较长,充电盒需分多次发送,D0表示充第几位开始发送,一次固定发送9Bytes。最后一包SN数据不够9Bytes的补0或0xff。
- /*Data Length*/
- tx_pData[5] = 0x0A; //小端模式,低位在前,长2Bytes。
- tx_pData[6] = 0x00;
-
- tx_pData[7] = SN_Num_Start;
-
- for(i=0;i<9;i++)
- {
- if( (SN_Num_Start + i) > 22 )
- {
- tx_pData[8+i] = 0xFF;
- }
- else
- {
- tx_pData[8+i] = SN_Num[ SN_Num_Start + i ]; //发送随机数。
- }
- }
-
- SN_Num_Start += 9;
-
- break;
-
- case CMD_GET_INTO_PAIR:
- /*Data Length*/
- tx_pData[5] = 0x01; //小端模式,低位在前,长2Bytes。
- tx_pData[6] = 0x00;
-
- tx_pData[7] = 0x01; //01进入配对状态
- break;
-
- case BES_RESET: //复位patten
-
- return;
-
- default:
- break;
- }
-
- dataLen = (uint16_t)( tx_pData[5] | ( tx_pData[6] << 8 ) ) + 7;
-
- Checksum = CalCheckCrc16( tx_pData, dataLen ); //计算检验和
-
- tx_pData[ dataLen ] = Checksum;
-
- tx_pData[ ++dataLen ] = Checksum >> 8;
-
-#endif
-
- /* vor、vol都使用uart1进行分时通讯,设置TX模式*/
-#ifdef VOX_ADT_ENABLE
-
- if(nVox_Chn_Select == VOL_CHAN)
- {
- VOL_EN_Type( VOX_COMM_Mode_Uart );
- }
- else
- {
- VOR_EN_Type( VOX_COMM_Mode_Uart );
- }
-
-#else
-
- VOX_EN_Type( VOX_COMM_Mode_Uart );
-
-#endif
-
- if(nVox_Chn_Select == VOL_CHAN)
- {
- COMM_CTL |= Vol_SWDT;
-
- COMM_CTL &= ~Vol_SWDR;
- }
- else
- if(nVox_Chn_Select == VOR_CHAN)
- {
- COMM_CTL |= Vor_SWDT;
-
- COMM_CTL &= ~Vor_SWDR;
- }
- else
- if(nVox_Chn_Select == VOX_BOTH)
- {
- COMM_CTL |= Vor_SWDT | Vol_SWDT;
-
- COMM_CTL &= ~( Vor_SWDR |Vol_SWDR );
- }
-
-#if UART1_ENABLE
- Uart1SendPacket(dataLen + 2, tx_pData);
-#endif
-
- /* 设置RX模式。 */
- if(nVox_Chn_Select == VOL_CHAN)
- {
- COMM_CTL &= ~ Vol_SWDT;
-
- COMM_CTL |= Vol_SWDR;
- }
- else
- if(nVox_Chn_Select == VOR_CHAN)
- {
- COMM_CTL &= ~Vor_SWDT;
-
- COMM_CTL |= Vor_SWDR;
- }
- else
- if(nVox_Chn_Select == VOX_BOTH)
- {
- COMM_CTL &= ~Vor_SWDT | Vol_SWDT;
-
- COMM_CTL |= ( Vor_SWDR |Vol_SWDR );
- }
-}
-
-#endif
-
-#ifdef VOX_RX
- /*
- *******************************************************************************
- * void HandleRxCommand(VOX_BES_COMMAND_E RxCommand)
- *
- * Description : 耳机端发送的数据包的解析及处理
- * Ack payload:
- * Header checksum side cmd len Data
- * 1bytes 1byte 1byte 1byte 1byte Len bytes
- *
- * Arguments : VOX_BES_COMMAND_E RxCommand:
-
- * Returns :
- *
- * Notes :
- *
- *******************************************************************************
-*/
-void HandleRxMsg(VOX_BES_COMMAND_E RxCommand)
-{
- uint8_t i = 0;
-
-#if JIELI
-
- switch(RxCommand)
- {
- case VHOUSE_CMD_PAIR:
-
- for(i=0;i<18;i++)
- {
- MAC_Addr[Vox_Type][i] = RX1_Buffer[4+i];
- }
-
- for(i=0;i<8;i++)
- {
- Net_Info[Vox_Type][i] = RX1_Buffer[22+i];
- }
-
- if( Vox_Type == VOL_CHAN ) //根据耳机Side参数
- {
- Vox_Get_BES_Addr_Flag[VOL_TYPE] = 1; //获取左耳机发的CMD3
- }
- else
- {
- Vox_Get_BES_Addr_Flag[VOR_TYPE] = 1; //获取右耳机发的CMD3
- }
-
- break;
-
- case VHOUSE_CMD_EXCH_TWS_BTADDR:
-
- break;
-
- case VHOUSE_CMD_OPEN_BOX:
-
- case VHOUSE_CMD_CLOSE_WIN_GET_VBAT:
-
- if( RX1_Buffer[4] == 0xE3 ) //根据耳机Side参数
- {
- Vox_Get_Vbat_Flag[VOL_TYPE] = 1; //获取左耳机发的Vbat
-
- Earphone_Vbat[VOL_CHAN] = RX1_Buffer[5];
- }
- else
- {
- Vox_Get_Vbat_Flag[VOR_TYPE] = 1; //获取右耳机发的Vbat
-
- Earphone_Vbat[VOR_CHAN] = RX1_Buffer[5];
- }
-
- break;
-
- case VHOUSE_CMD_CLOSE_BOX:
-
- break;
-
- case VHOUSE_CMD_PWROFF:
-
- break;
-
- default:
- break;
- }
-
-#elif ZHONGKE
-
- switch(RxCommand)
- {
- case VHOUSE_CMD_GET_VBAT:
-
- case VHOUSE_CMD_CLOSE_WINDOW:
-
- case VHOUSE_CMD_OPEN_WINDOW:
-
- case VHOUSE_CMD_CLOSE_WIN_GET_VBAT:
-
- break;
-
- case VHOUSE_CMD_SUCCESS:
-
- break;
-
- case VHOUSE_CMD_GET_TWS_BTADDR:
-
- if( RX1_Buffer[5] == VOL_CHAN ) //根据耳机Side参数
- {
- Vox_Get_BES_Addr_Flag[VOL_TYPE] = 1; //获取左耳机发的CMD3
- }
- else
- {
- Vox_Get_BES_Addr_Flag[VOR_TYPE] = 1; //获取右耳机发的CMD3
- }
-
- break;
-
- case VHOUSE_CMD_SYS_RST: //系统复位,耳机->充电仓
-
- break;
-
- default:
- break;
- }
-
-#elif XUANHENG
-
- uint8_t CMD_Type = 0;
-
- CMD_Type = RX1_Buffer[1] >> 4;
- if( CMD_Type & TWS_PC ) //PC/工装->盒子
- {
-
- }
- else //耳机->盒子
- {
- switch(RxCommand)
- {
- case CMD_TWS_GET_BTADDR:
-
- for(i=0;i> 7; //获取耳机是否满电
-
- Vox_Pairing_State[VOL_TYPE] = RX1_Buffer[10]; //获取耳机配对状态;
-
- Tws_Paired_Record[VOL_TYPE] = RX1_Buffer[11] & 0x01; //bit0:0:有TWS配对记录;1:没有TWS配对记录;bit1:0:有与手机配对记录;1:没有和手机配对记录。
-
- Phone_Paired_Record[VOL_TYPE] = ( RX1_Buffer[11] >> 1 ) & 0x01;
-
- Bes_OTA_State[VOL_TYPE] = RX1_Buffer[12];
- }
- else
- {
- Bes_Bet_Level[VOR_TYPE] = RX1_Buffer[9] & 0x7F;
-
- Bes_Chg_Full[VOR_TYPE] = RX1_Buffer[9] >> 7;
-
- Vox_Pairing_State[VOR_TYPE] = RX1_Buffer[10];
-
- Tws_Paired_Record[VOR_TYPE] = RX1_Buffer[11] & 0x01;
-
- Phone_Paired_Record[VOR_TYPE] = (RX1_Buffer[11] >> 1) & 0x01;
-
- Bes_OTA_State[VOR_TYPE] = RX1_Buffer[12];
- }
-
- break;
-
- case CMD_SN:
-
- if( CMD_Type == TWS_VOL ) //根据耳机Side参数
- {
- Bes_Set_SN_State[VOL_TYPE] = RX1_Buffer[7]; //左耳机SN写入是否成功状态标志
- }
- else
- {
- Bes_Set_SN_State[VOR_TYPE] = RX1_Buffer[7]; //右耳机SN写入是否成功状态标志
- }
-
- break;
-
- case CMD_GET_INTO_PAIR:
- if( CMD_Type == TWS_VOL ) //根据耳机Side参数
- {
- Bes_In_Pair_State[VOL_TYPE] = RX1_Buffer[7]; //左耳机是否进入配对状态成功状态标志
- }
- else
- {
- Bes_In_Pair_State[VOR_TYPE] = RX1_Buffer[7]; //右耳机是否进入配对状态成功状态标志
- }
-
- break;
- case CMD_PAIRING_IMD:
- if( CMD_Type == TWS_VOL ) //根据耳机Side参数
- {
- Bes_In_Pair_State[VOL_TYPE] = 1; //左耳机是否进入配对状态成功状态标志
- }
- else
- {
- Bes_In_Pair_State[VOR_TYPE] = 1; //右耳机是否进入配对状态成功状态标志
- }
-
- break;
- default:
- break;
- }
- }
-
-
-#endif
-
-}
-
-/*
-*******************************************************************************
-* void HandleVoxCommMsg(void)
-*
-* Description : Vox 通讯功能处理函数,100ms定时调用。由于和耳机通信前需要打开耳机端的TRX功能,并且每次通信只能一只耳机。通过切换VOL/VOR通信开关进行通信
-*
-* Arguments : NONE
-
-* Returns : NONE
-
-* Notes : NONE
-*
-*******************************************************************************
-*/
-
-void HandleVoxCommMsg(void)
-{
- uint8_t i = 0;
-
-#if XUANHENG
-
- uint16_t CrcCheckSum = 0;
-
- uint16_t Data_Len = 0;
-
-#else
-
- uint8_t CrcCheckSum = 0;
-
-#endif
- /*RX数据处理*/
- if( Uart1_RX_Finish_Flag )
- {
- Uart1_RX_Finish_Flag = FALSE;
-
-#ifdef _DEBUG_VOX
- printf("RX1_Buffer[0]:0x%x,RX1_Buffer[1]:0x%x,RX1_Buffer[2]:0x%x,RX1_Buffer[3]:0x%x,RX1_Buffer[4]:0x%x,RX1_Buffer[5]:0x%x,RX1_Buffer[6]:0x%x,line:%d\r\n",(u16)RX1_Buffer[0],(u16)RX1_Buffer[1],(u16)RX1_Buffer[2],(u16)RX1_Buffer[3],(u16)RX1_Buffer[4],(u16)RX1_Buffer[5],(u16)RX1_Buffer[6],(u16)__LINE__);
-#endif
-
-#if JIELI
-
- CrcCheckSum = Crc8Maxim(RX1_Buffer, RX1_Buffer[2] + 3); //求校验和
-
- if( CrcCheckSum == RX1_Buffer[RX1_Buffer[2] + 3] )
-
-#elif ZHONGKE
-
- CrcCheckSum = Crc8Maxim( RX1_Buffer, RX1_Buffer[4] + 5 );
-
- if( CrcCheckSum == RX1_Buffer[ RX1_Buffer[4] + 5 ] )
-
-#elif XUANHENG
-
- Data_Len = RX1_Buffer[5] | ( RX1_Buffer[6] << 8 ) + 7;
-
- CrcCheckSum = CalCheckCrc16( RX1_Buffer, Data_Len); //计算检验和
-
- if( CrcCheckSum == (uint16_t)(RX1_Buffer[ Data_Len + 1 ] | RX1_Buffer[ Data_Len + 2 ] << 8) ) //校验和小端模式,低位在前。
-
-#endif
- {
-#if XUANHENG
-
- HandleRxMsg((VOX_BES_COMMAND_E)RX1_Buffer[2]);
-
-#else
-
- HandleRxMsg((VOX_BES_COMMAND_E)RX1_Buffer[3]);
-
-#endif
- }
- else
- {
- return;
- }
- }
-}
-
-#endif
-
#endif