上传SY8835初版软件源码。
This commit is contained in:
commit
fab81d0228
BIN
Out/SY8835_EVB_mcu_2024_11_27_155640.bin
Normal file
BIN
Out/SY8835_EVB_mcu_2024_11_27_155640.bin
Normal file
Binary file not shown.
653
Out/SY8835_EVB_mcu_2024_11_27_155640.hex
Normal file
653
Out/SY8835_EVB_mcu_2024_11_27_155640.hex
Normal file
@ -0,0 +1,653 @@
|
||||
:0300000002194A98
|
||||
:0F194A0075FE7275FF00758E007581B6021994D7
|
||||
:0F23320053797374656D20496E69742E0D0A001E
|
||||
:1022C200121F9A7BFF7A237932120466121AC612FF
|
||||
:0422D2001EF280F880
|
||||
:10106C004100CE0002B5000002AF000002AD00004E
|
||||
:10107C0002AB000002B1000002A900004100CF0049
|
||||
:10108C00029D000002A3000002B3000002A70000B2
|
||||
:0C109C0002A50000029F000002A100005D
|
||||
:10006E0075FE3175FF8175FE0E43FF107DAB7F303F
|
||||
:0C007E001223B475FE3243FF03D2BD22F2
|
||||
:1021B700900000EFF04408FD7F31122027900000C7
|
||||
:0F21C700E09000CFF075A38175FE3275FF012205
|
||||
:03006B00020EB8CA
|
||||
:100EB800C0E0C0F0C083C082C0D075D000C000C000
|
||||
:0D0EC80001C002C003C004C005C006C00781
|
||||
:100ED500900048E4F0E5FEF0E5A420E003020FC829
|
||||
:100EE5007F351223BB78AF760008A6077F3612231D
|
||||
:100EF500BBEF540378AF46F608E6F618E6FE08E6BB
|
||||
:100F0500FF7C097DC4120E8B780A120E2978AFA6D4
|
||||
:100F15000608A6079000CFE0120E650F3C000F4FA4
|
||||
:100F2500010F58020F6B030F7E040F91050FA406E6
|
||||
:100F35000FB30700000FC878AFE6FE08E67802CECB
|
||||
:100F4500C313CE13D8F9799E807578B0E625E0797C
|
||||
:100F5500B6805378AFE6FE08E67803C333CE33CECA
|
||||
:100F6500D8F979A4805978AFE6FE08E67802C3334C
|
||||
:100F7500CE33CED8F979B4804678AFE6FE08E67868
|
||||
:100F850002C333CE33CED8F979A8803378AFE6FEE5
|
||||
:100F950008E67802C333CE33CED8F979A680207817
|
||||
:100FA500B0E625E079A0F718E63319F7801578AF94
|
||||
:100FB500E6FE08E67802CEC313CE13D8F979A2F778
|
||||
:100FC500EE19F7E5A430E11B7F371223BB78AD7628
|
||||
:100FD5000008A6077F381223BBEF540378AD46F609
|
||||
:100FE50008E6F6E5A430E21B7F391223BB78AB7621
|
||||
:100FF5000008A6077F3A1223BBEF540378AB46F6E9
|
||||
:1010050008E6F6E5A430E31B7F3B1223BB78B176F7
|
||||
:101015000008A6077F3C1223BBEF540378B146F6C0
|
||||
:1010250008E6F6E5A430E41B7F3D1223BB78A976DC
|
||||
:101035000008A6077F3E1223BBEF540378A946F6A6
|
||||
:0C10450008E6F675A40F900048E0F5FEE8
|
||||
:10105100D007D006D005D004D003D002D001D000F3
|
||||
:0B106100D0D0D082D083D0F0D0E0329D
|
||||
:0510A800C136010D033B
|
||||
:10227D00E4780FF67811F6780DE67810F678127688
|
||||
:08228D00047D207F40022027A0
|
||||
:101D13009000C4E05463600CE4FF122153E4780E96
|
||||
:101D2300F6C236229000C5E05407FFBF0607D2363D
|
||||
:101D3300780E7602227810E6FD7F22122027781291
|
||||
:101D4300E6FD7F21122027780FE6C454F078114670
|
||||
:101D5300FD7F231220277F01122153780E7601C2C3
|
||||
:021D6300362226
|
||||
:0410AD00C12EC12F60
|
||||
:101DB4009000C4E0FF30E603C22E22EF30E205C2F9
|
||||
:101DC4002ED22F22303508E4FF122175C22E229024
|
||||
:101DD40000C4E030E503C22E22D22E302F19780E33
|
||||
:101DE400E6B40113C378B6E6941018E6940E4005E1
|
||||
:081DF400D22EC22F22C22E22C2
|
||||
:0810B100C130C1314100D1FF43
|
||||
:101FFB009000C5E0FE5420FF9000D1E06F601CEE16
|
||||
:10200B0030E5089000D07401F08005E49000D0F02A
|
||||
:0B201B00D230D231D22A9000D1EFF079
|
||||
:012026002297
|
||||
:101F65006C6F6E672032732070726573730D0A0093
|
||||
:101F7500737570706572206C6F6E67203873207092
|
||||
:101F8500726573730D0A0073686F727420707265E1
|
||||
:051F950073730D0A004A
|
||||
:1010B900C11DC11CC11B0118004100C8004100C766
|
||||
:0610C900004200C9000016
|
||||
:10154F009000C5E030E4379000C9E475F001120E49
|
||||
:10155F00029000C9E0FEA3E0FFC39464EE94004044
|
||||
:10156F0007201914D2198010C3EF9490EE94014004
|
||||
:10157F0007201A04D21AD21BD216C217803830167F
|
||||
:10158F002EC216D217C21A9000C9E0FEA3E0FFD3F5
|
||||
:10159F009419EE94005008D21DD218D22A8010C38D
|
||||
:1015AF00EF94FAEE94005007301904C219D21CE4DC
|
||||
:1015BF009000C9F0A3F030173FC217301C14C21CA3
|
||||
:1015CF0078187602E49000C8F07BFF7A1F796512D5
|
||||
:1015DF000466301B0FC21B781876037BFF7A1F79C6
|
||||
:1015EF0075120466301815C218781876017BFF7AC9
|
||||
:1015FF001F798C1204668004E47818F69000D0E00E
|
||||
:10160F00640160030216CC7818E6640270769000CD
|
||||
:10161F00C8E0C39401500F7D017F0112121EE478C0
|
||||
:10162F009BF608F6804B9000C7E0D394054004E486
|
||||
:10163F00F08032789CE6B4010DE4FD7F0212121E99
|
||||
:10164F00789C7602802B789CE66402702418E66002
|
||||
:10165F00197D017F0212121EE4789BF608F69000A6
|
||||
:10166F00C8F07818F67F030219D9E4FD7F01121232
|
||||
:10167F001E9000C8E0D3941440349000C7E004F0EB
|
||||
:10168F00E4A3F0227818E6640370329000C8E0FFFC
|
||||
:10169F00C3941E5020EF540125E060047D018009A2
|
||||
:1016AF009000C8E030E007E4FD7F0312121E9000A7
|
||||
:0D16BF00C8E004F022E47818F69000C8F0AE
|
||||
:0116CC0022FB
|
||||
:1010CF0041004B0041004A0041004C0041004900E3
|
||||
:0F23410075FE0B75FF0FC290C291C293C292221C
|
||||
:10224900EF14600D14600D14600D2403700BD2900F
|
||||
:0A22590022D29122D29222D29322C7
|
||||
:0521D600900000E0FF95
|
||||
:1021DB00EF14600D14600D14600D2403700BC2908E
|
||||
:0A21EB0022C29122C29222C2932266
|
||||
:101BF800E4FF744D2FF582E43400F583E4F074516A
|
||||
:101C08002FF582E43400F583E4F0EF25E02455F560
|
||||
:101C180082E43400F583E4F0A3F0EF25E0245DF5D9
|
||||
:101C280082E43400F583E4F0A3F0EF25E02465F5C1
|
||||
:101C380082E43400F583E4F0A3F0EF25E0246DF5A9
|
||||
:0F1C480082E43400F583E4F0A3F00FEFB404A3BB
|
||||
:011C5700226A
|
||||
:101B9500AC07744D2CF582E43400F583EDF0EAC30F
|
||||
:101BA50013FEEB13FFEC25E02455F582E43400F534
|
||||
:101BB50083EEF0A3EFF0AF03EC25E0245DF582E4BE
|
||||
:101BC5003400F583EAF0A3EFF0900005E0FEA3E012
|
||||
:101BD500FFEC25E02465F582E43400F583EEF0A3FF
|
||||
:101BE500EFF0EC25E0246DF582E43400F583E4F0B4
|
||||
:031BF500A3F02238
|
||||
:101E7C00744D2FF582E43400F583EDF074512FF599
|
||||
:101E8C0082E43400F583EBF0EF25E02455F582E491
|
||||
:101E9C003400F583E4F0A37469F0EF25E0246DF5CC
|
||||
:0B1EAC0082E43400F583E4F0A3F02290
|
||||
:10008E00E4900000F0F0900000E0FFC39404400301
|
||||
:10009E000203D0744D2FF582E43400F583E0602224
|
||||
:1000AE0024FE602414700302019814700302020FE0
|
||||
:1000BE002403600302036C900000E0FF1222490249
|
||||
:1000CE00036C1221D602036C900000E0FF25E024A1
|
||||
:1000DE0055F582E43400F583E0FCA3E0FDEF25E066
|
||||
:1000EE00246DF582E43400F583E0FEA3E0C39DEEBB
|
||||
:1000FE009C500512224980031221D6900000E0FF89
|
||||
:10010E0025E0245DF582E43400F583E0FCA3E0FDF8
|
||||
:10011E00EF25E0246DF582E43400F583E0FEA3E0E4
|
||||
:10012E00C39DEE9C500302036C900000E025E0247A
|
||||
:10013E006DF582E43400F583E4F0A3F0EF25E024BE
|
||||
:10014E0065F582E43400F583E0FEA3E0D39400EE7F
|
||||
:10015E0094004016900000E025E02465F582E4341A
|
||||
:10016E0000F58374FFF5F0120E02900000E0FF25FB
|
||||
:10017E00E02465F582E43400F583E0FCA3E04C60F6
|
||||
:10018E000302036C744D2F02022B900000E0FF253A
|
||||
:10019E00E02455F582E43400F583E0FCA3E0FDEFA6
|
||||
:1001AE0025E0246DF582E43400F583E0FEA3E0D370
|
||||
:1001BE009DEE9C500512224980031221D69000001C
|
||||
:1001CE00E0FF25E0245DF582E43400F583E0FCA336
|
||||
:1001DE00E0FDEF25E0246DF582E43400F583E0FECA
|
||||
:1001EE00A3E0C39DEE9C500302036C900000E0253B
|
||||
:1001FE00E0246DF582E43400F583E4F0A3F002030D
|
||||
:10020E006C900000E0FF2451F582E43400F583E0A9
|
||||
:10021E007017122197C237900000E0244DF582E44A
|
||||
:10022E003400F583E4F002036C900000E0FF2451EB
|
||||
:10023E00F582E43400F583E0FE6402704B2037143F
|
||||
:10024E00D237EF25E02455F582E43400F583E4F04F
|
||||
:10025E00A37469F0900000E0FF25E02455F582E4D8
|
||||
:10026E003400F583E475F001120E02EF25E02455FB
|
||||
:10027E00F582E43400F583E0FCA3E0C394FEEC9435
|
||||
:10028E00005003020356804EEE6401705A20371759
|
||||
:10029E00D237900000E025E02455F582E43400F5D5
|
||||
:1002AE0083E4F0A374FEF0900000E0FF25E02455F7
|
||||
:1002BE00F582E43400F58374FFF5F0120E02EF259B
|
||||
:1002CE00E02455F582E43400F583E0FEA3E0D394F8
|
||||
:1002DE0069EE94005072900000E02451F582E434EF
|
||||
:1002EE0000F583E4F08061900000E0FF2451F58278
|
||||
:1002FE00E43400F583E06403704EEF25E02455F5F9
|
||||
:10030E0082E43400F583E0FEA3E0FFC394FEEE9496
|
||||
:10031E00004004D237800BD3EF946AEE9400500263
|
||||
:10032E00C237900000E025E0245530370DF582E409
|
||||
:10033E003400F58374FFF5F0800BF582E43400F59C
|
||||
:10034E0083E475F001120E02900000E0FF25E02418
|
||||
:10035E0055F582E43400F583A3E0FD121D6590008F
|
||||
:10036E0000E0FF7011744D2FF582E43400F583E048
|
||||
:10037E0090004BF08043900000E0B40110244DF546
|
||||
:10038E0082E43400F583E090004AF0802C90000067
|
||||
:10039E00E0B40210244DF582E43400F583E09000C1
|
||||
:1003AE004CF08015900000E0B4030E244DF582E46D
|
||||
:1003BE003400F583E0900049F0900000E004F00274
|
||||
:1003CE000094E4900000F0900000E0FFC39404500D
|
||||
:1003DE001BEF25E0246DF582E43400F583E475F01F
|
||||
:0C03EE0001120E02900000E004F080DB21
|
||||
:0103FA0022E0
|
||||
:101CB800456E74657220536869704D6F646521289C
|
||||
:101CC8006C696E653A2564290D0A004E6F742047C9
|
||||
:101CD800657420496E746F20536C6565702843687D
|
||||
:101CE800675374617475733A25642C566F785F5620
|
||||
:101CF8006F75743A25642C526573746172745F460B
|
||||
:0B1D08006C61673A2564292E0D0A006B
|
||||
:1010DF00C1334100B9004200BA00004100BC0F41CA
|
||||
:0510EF0000B800C13251
|
||||
:1022D600D2AC759A03D2BCD2BDD2A9D2AB75FE30B0
|
||||
:0422E60043FF802210
|
||||
:1022EA00C2ACE4F59AC2BCC2BDC2A9C2AB75FE308B
|
||||
:0422FA0053FF7F22ED
|
||||
:1000260030333730223DC2229000B8E004F0E0C3FE
|
||||
:1000360094054010E4A3F07DAA7F4F122027E49098
|
||||
:1000460000B8F0229000B8E0B404187BFF7A1C795F
|
||||
:10005600B890000474DCF00204661222EA438702B8
|
||||
:040066001222D6226A
|
||||
:101EB700780EE6FF64016006200C0330322B7BFFAF
|
||||
:101EC7007A1C79D3900004E4F0A3EFF0A20CE4FFAE
|
||||
:101ED70033A3CFF0A3EFF0A232E4FF33A3CFF0A3F5
|
||||
:0B1EE700EFF0120466C232C322D322C7
|
||||
:101F9A0012207E12232212236D12006E7D087F7694
|
||||
:101FAA001223B4D2A8D2AF12227D7D697F031222F6
|
||||
:101FBA00AC122341121BF812000E121FCE9000AD74
|
||||
:041FCA007401F0228C
|
||||
:030003000223C213
|
||||
:0623C200D23275E20F3279
|
||||
:1010F4002040270000000000000000000000000065
|
||||
:1011040000000000000000000000000000000000DB
|
||||
:1011140000000000000000000000000000000000CB
|
||||
:1011240000000000000000000000000000000000BB
|
||||
:07113400000000C12DC12CD9
|
||||
:10207E0075FE0443FF0C75FE0343FF0C75FE0E53F5
|
||||
:10208E00FFF043FF09D2DF43878075BA0375AADCE0
|
||||
:06209E00759852D2AC223D
|
||||
:061F2C00900043120E5C60
|
||||
:101F3200E4900046F05398EFF0900046E0C39FE42F
|
||||
:101F42009E501C202BFDD22B900043E475F0011211
|
||||
:101F52000E45120D88F599900046E004F080DA43B0
|
||||
:021F62009810D5
|
||||
:011F6400225A
|
||||
:030023000216CDF5
|
||||
:1016CD00C0E0C0F0C083C082C0D075D000C000C0E3
|
||||
:0716DD0002C003C006C007B4
|
||||
:1016E400309904C299C22B2098030217A2C298D23F
|
||||
:1016F400329000BDE014602114604D2402600302A6
|
||||
:1017040017A2E5999000BDB4550D7401F0A3E4F05F
|
||||
:10171400A3F09000BE80138027AF997E00BE551DB4
|
||||
:10172400BFAA1A9000BD7402F0A3A3E02427F8A670
|
||||
:10173400999000BEE475F001120E0280619000BD24
|
||||
:10174400E4F0A3F0A3F080569000BEA3E02427F8B1
|
||||
:10175400A6999000BEE475F001120E029000BEE05E
|
||||
:10176400FAA3E0FB64074A700D7829E62404FEE43A
|
||||
:1017740033A3F0A3CEF09000C0E06A7003A3E06B43
|
||||
:10178400600FD39000BFE094409000BEE09400400E
|
||||
:0E1794000D9000BEE4F0A3F09000BDF0D22D49
|
||||
:1017A200D007D006D003D002D000D0D0D082D083D0
|
||||
:0517B200D0F0D0E03290
|
||||
:0E235F00900029EFF012238F900029E0FF225A
|
||||
:1023220075F10A759F03759EFD759692759A022244
|
||||
:08238F00202CFDD22C8F9722B7
|
||||
:03008B00022295B9
|
||||
:10229500C0E0E59630E1055396FDC22CE59630E0A9
|
||||
:0722A500035396FED0E03266
|
||||
:1017B700506F776572204F6E2053746174652148AE
|
||||
:1017C700616C6C28307825782920286C696E653A19
|
||||
:1017D7002564290D0A004177616B65205374617494
|
||||
:1017E7006520286C696E653A2564290D0A004E6FDD
|
||||
:1017F700726D616C20537461746520286C696E6525
|
||||
:101807003A2564290D0A00536C656570205374618D
|
||||
:10181700746520286C696E653A2564290D0A0053A2
|
||||
:101827005441303A307825782C535441313A307846
|
||||
:1018370025782C535441323A307825782C436869FF
|
||||
:10184700705F5354413A307825782C564F585F5380
|
||||
:1018570054413A307825782E4465635F536C65654B
|
||||
:10186700703A25640D0A004465636E745F536C65B6
|
||||
:10187700657044656C61792052656C6F61642E0DEB
|
||||
:101887000A00456E746572205374616E6462792034
|
||||
:081897004D6F6465210D0A008C
|
||||
:10113B004300AD0402024100AB00C12AC1294100AA
|
||||
:0E114B00AC004100B0004100A9004100AA0024
|
||||
:1020C800E4FB7D04FF121E7CE4FB7D047F01121EED
|
||||
:1020D8007CE4FB7D047F02121E7CE4FB7D047F030D
|
||||
:0320E800021E7C59
|
||||
:10076000780EE66401600302086230365C202705DB
|
||||
:10077000D2271220C8E4900005F0A3F0FBFA7D0117
|
||||
:10078000FF121B95E4900005F0A3F0FBFA7D017FBA
|
||||
:1007900001121B95E4900005F0A3F0FBFA7D017FA8
|
||||
:1007A00002121B95E4900005F0A3F0FBFA7D017F97
|
||||
:1007B00003121B9590004B7401F090004AF09000DA
|
||||
:1007C0004CF0900049F002085920260CD226D22A7B
|
||||
:1007D000E49000B0F00208599000ABE0C3940150DF
|
||||
:1007E00057E004F09000B0E014601A146027146021
|
||||
:1007F000342403706490004BE06404605C7B017DF2
|
||||
:1008000004E4FF802E90004AE06404604C7B017D8C
|
||||
:10081000047F01801E90004CE06404603C7B017DFD
|
||||
:10082000047F02800E900049E06404602C7B017D0F
|
||||
:10083000047F03121E7C80219000ABE0C3940F5014
|
||||
:1008400005E004F08013E49000ABF09000B0E00409
|
||||
:10085000F0E0C394044002E4F0C231C20AC21DD2E7
|
||||
:10086000282230260AC2261220C8D22AD2292230B3
|
||||
:100870002A49E49000ABF0C22A900005F0A3F0FBF7
|
||||
:10088000FAFDFF121B95E4900005F0A3F0FBFAFDC2
|
||||
:100890007F01121B95E4900005F0A3F0FBFAFD7FA9
|
||||
:1008A00002121B95E4900005F0A3F0FBFAFD7F0314
|
||||
:1008B000121B9590004B7402020A1A20310C20285A
|
||||
:1008C00009200A06201D03020A329000ABE0FFC394
|
||||
:1008D00094015004E004F022EFC394644003020A40
|
||||
:1008E000289000ABE004F07814E6C39419503790D8
|
||||
:1008F000004BE064037003020A32E4900005F0A3A9
|
||||
:10090000F07B64FA7D03FF121B9590004B7404F09A
|
||||
:10091000E4900005F0A3F0FBFAFD7F01121B959017
|
||||
:10092000004A740280327814E6C394325041E49055
|
||||
:100930000005F0A3F0FBFA7D01FF121B9590004B20
|
||||
:100940007401F0E4900005F0A3F0FBFA7D017F0153
|
||||
:10095000121B9590004A7401F0E4900005F0A3F09A
|
||||
:10096000FBFAFD7F02121B9590004C7402804878C0
|
||||
:1009700014E6C3944B5057E4900005F0A3F0FBFA43
|
||||
:100980007D01FF121B9590004B7401F0E49000056F
|
||||
:10099000F0A3F0FBFA7D017F01121B9590004A74D1
|
||||
:1009A00001F0E4900005F0A3F0FBFA7D017F021254
|
||||
:1009B0001B9590004C7401F0E4900005F0A3F0FB4F
|
||||
:1009C000FAFD7F03121B959000497402F0227814FF
|
||||
:1009D000E6C39464505CE4900005F0A3F0FBFA7D5C
|
||||
:1009E00001FF121B95E4900005F0A3F0FBFA7D01D6
|
||||
:1009F0007F01121B95E4900005F0A3F0FBFA7D0146
|
||||
:100A00007F02121B95E4900005F0A3F0FBFA7D0134
|
||||
:100A10007F03121B9590004B7401F090004AF090F8
|
||||
:100A2000004CF0900049F022C231C228C20AC21D17
|
||||
:020A3000D22AC8
|
||||
:010A320022A1
|
||||
:102213009000CEE0FF04F01221B79000CEE0C3940B
|
||||
:0B222300084005E4F07F01227F00224C
|
||||
:1021F500121D13121DB4121FFB12154F122053305E
|
||||
:0E2205001E0BC21E12189F120760120A33220F
|
||||
:092386007B017A0079C2021C58A7
|
||||
:1013BB00E4900000F09000ADE0FFA3E0FE6F70033F
|
||||
:1013CB00021467A3EEF09000ADE0A3F024FE605191
|
||||
:1013DB0014605F1460732403600302154E900005C4
|
||||
:1013EB00E4F0A37403F07B647A007D02E4FF121B2C
|
||||
:1013FB0095900005E4F0A37403F07B647A007D0202
|
||||
:10140B007F01121B957BFF7A1779B79000D0E0FF15
|
||||
:10141B00900004E4F0A3EFF0A37401F0A374E88050
|
||||
:10142B00377BFF7A1779DD9000047401F0A374F217
|
||||
:10143B0080269000BC740FF07BFF7A1779F5900033
|
||||
:10144B00047401F0A374FE800F7BFF7A18790E9061
|
||||
:10145B0000047402F0A3740AF00215289000AEE0A9
|
||||
:10146B0024FE603914603D147003021540240360A0
|
||||
:10147B000302154E9000A9E004F0E0C3940850035A
|
||||
:10148B0002154E9000AD7402F0E49000A9F07815AF
|
||||
:10149B00E6600302154E9000AD7404F0229000AD8F
|
||||
:1014AB007403F02220220302154EC2227BFF7A180E
|
||||
:1014BB0079269000C2E0FF900004E4F0A3EFF090D7
|
||||
:1014CB0000C3E0FF900006E4F0A3EFF09000C4E04F
|
||||
:1014DB00FF900008E4F0A3EFF09000C5E0FF900050
|
||||
:1014EB000AE4F0A3EFF09000C6E0FF90000CE4F0EC
|
||||
:1014FB00A3EFF09000BCE0FF90000EE4F0A3EFF040
|
||||
:10150B001204669000BCE0D394004014E014F03059
|
||||
:10151B003231C232740FF07BFF7A18796E02046697
|
||||
:10152B007BFF7A1879891204669000AD7404F0E49D
|
||||
:10153B009000B8F022121EB750030200269000ADA7
|
||||
:03154B007402F037
|
||||
:01154E00227A
|
||||
:101EF20030212EC2219000AAE0FF04F0EF14600FFF
|
||||
:101F0200146011146013240370171222138012122A
|
||||
:101F12002386800D1221F580081213BBE49000AADB
|
||||
:0A1F2200F0302305C22312008E22C6
|
||||
:101B2F00564F58204348472046756C6C2E0D0A00BF
|
||||
:101B3F00564F582047657420496E746F20536C655B
|
||||
:101B4F0065702E0D0A00000000000000000000006C
|
||||
:101B5F000000000000000000000000000000000076
|
||||
:101B6F000000000000000000000000000000000066
|
||||
:101B7F000000000000000000000000000000000056
|
||||
:061B8F0000000000000050
|
||||
:10115900C10CC10AC10B4100A6FFC1094200A1008F
|
||||
:1011690000029B00004200A300004200A7000010FB
|
||||
:1011790067000000000000000000000000000000FF
|
||||
:10118900002024770000000000000000000000009B
|
||||
:101199000000000000000000000000000000000046
|
||||
:0C11A90000000000000000004100A50054
|
||||
:0519D900900043EFF057
|
||||
:1019DE00E4A3F0A3F07F27121E3F900044EFF07FA8
|
||||
:1019EE0037121E3F900045EFF0900043E024FD605B
|
||||
:1019FE001B14602424FE602824057035900045E0F9
|
||||
:101A0E004494F0900044E04498F08025900044E027
|
||||
:101A1E004406F054E7F08019900045E054FD80092B
|
||||
:101A2E00900045E04402F054FEF0900044E054E192
|
||||
:101A3E00F0900044E0FD7F27122027900045E0FD46
|
||||
:051A4E007F3702202794
|
||||
:100A33009000C4E054186003D20922C209202E0397
|
||||
:100A4300020C4E303045200B0D7F3C1222637F0198
|
||||
:100A5300122175D20B227F031219D9E49000A0F062
|
||||
:100A630090009EF0A3F0C2009000D0E07015C20A7F
|
||||
:100A7300D201C202C206C207C208789BF608F6D2A8
|
||||
:100A83000C8006C201D202C204C230200203020B50
|
||||
:100A93003390009EE0C394055003020BF290009F35
|
||||
:100AA300E0C39405500A7F061219D990009F802A4B
|
||||
:100AB3002000409000A0E0FFD3940B5022EF75F08C
|
||||
:100AC3000384E5F07003FD80099000A0E020E007B7
|
||||
:100AD3007D017F0612121E9000A0E004F080517F7A
|
||||
:100AE300041219D9E49000A0F0D200D203C20BC2C1
|
||||
:100AF3000C803D30030EC2039000C6E0540C9000FE
|
||||
:100B03009DF0802C9000C6E0540CFBE4FAF9F890B9
|
||||
:100B1300009DE0FFE4FCFDFEC3120E18601290007E
|
||||
:100B2300C6E0540CFF6004D20AD22A90009DEFF075
|
||||
:100B3300200103020C4B302925200B197F011221C0
|
||||
:100B430075D20BD20CE490009FF090009EF09000C1
|
||||
:100B5300A0F0C206227F031219D9C2298035900062
|
||||
:100B63009EE0D394035003020BF290009FE0FFD367
|
||||
:100B7300940B501FEF75F00384E5F07003FD8009BB
|
||||
:100B830090009FE020E0077D017F8112121E9000FC
|
||||
:100B93009F805C9000A0E0FFD39432501FEF75F06C
|
||||
:100BA3000384E5F07003FD80099000A0E020E007D6
|
||||
:100BB3007D017F0712121E9000A08033200648900B
|
||||
:100BC30000C6E05430FFE4FCFDFE7B30FAF9F8C3C5
|
||||
:100BD300120E1860119000C6E0540CFFE4FCFDFEF9
|
||||
:100BE300EF600330346290009EE0C394325004E01F
|
||||
:100BF30004F0227BFF7A1B792F120466D206C20B04
|
||||
:100C03007F041219D980419000A0E0FFD3940B50C8
|
||||
:100C130022EF75F00384E5F07003FD80099000A0D6
|
||||
:100C2300E020E0077D017F8012121E9000A0E00407
|
||||
:100C3300F08015200712D2077F041219D9C20C7B4A
|
||||
:100C4300FF7A1B793F120466C20522200514D205E0
|
||||
:100C53007F041219D9C20C9000C6E0540C90009D79
|
||||
:100C6300F0229000C6E0540CFBE4FAF9F890009DE2
|
||||
:100C7300E0FFE4FCFDFEC3120E1860129000C6E014
|
||||
:0E0C8300540CFF6004D20AD22A90009DEFF0BC
|
||||
:010C91002240
|
||||
:0B1DFC00900043120E5C900046EDF0DA
|
||||
:101E0700E4FE900046E0FD14F0ED6029900043E405
|
||||
:101E170075F001120E45120D886EFEE4FFEFC394B4
|
||||
:101E27000850DFEE30E007C313648CFE8004EEC376
|
||||
:071E370013FE0F80E8AF0667
|
||||
:011E3E002281
|
||||
:08121E00900000EFF0A3EDF0D9
|
||||
:10122600E4A3F078037C007D017BFF7A1B7955FEF1
|
||||
:101236007F40120D62E4900003F0A37455F0A3748E
|
||||
:10124600AAF0900000E0FE900007F0900001E0FD9B
|
||||
:101256009000A6F0EE120E6512770112A40212F3A8
|
||||
:1012660003130006130007134580134D8100001376
|
||||
:101276005B9000067402F0ED700D9000087402F0A9
|
||||
:10128600E4789BF602135B900001E06401600302C0
|
||||
:10129600135B90000804F0E4789CF602135B900060
|
||||
:1012A60006741BF07F05900001E075F012A4247708
|
||||
:1012B6002FF8E6FE74032FF582E43400F583EEF092
|
||||
:1012C6000FEFB412E17F17EFC39408400302135BDC
|
||||
:1012D600900001E075F008A424672FF8E6FE740379
|
||||
:1012E6002FF582E43400F583EEF00F80DA900006E5
|
||||
:1012F6007402F090000804F0805B9000067405F01C
|
||||
:101306009000087401F07814E6A3F0A37420F0901E
|
||||
:101316000001E0FF700D9000A3E07002800F9000C6
|
||||
:10132600A48015EFB4012E9000A4E0700890000B85
|
||||
:1013360074FFF080209000A3E090000BF0801690E0
|
||||
:1013460000067401F0800E9000067402F09000A56D
|
||||
:10135600E0900008F0900006E02404FF900002F000
|
||||
:10136600FD7B017A007903121DFC900002E0240344
|
||||
:10137600F582E43400F583EFF07F011219D990006D
|
||||
:1013860001E0FF700B75FE0E53FFF043FF08800D62
|
||||
:10139600EFB4010975FE0E53FFF043FF0190000202
|
||||
:1013A600E02401FFE433FE7B017A007903121F2C4F
|
||||
:0513B6007F030219D9BC
|
||||
:101A5300EF24FA604D14604A24067066E4FE742B8A
|
||||
:101A63002EF8E6FF9000A6E075F012A424772EF876
|
||||
:101A7300A6070EEEB412E7E4FE743D2EF8E6FF90DF
|
||||
:101A830000A6E075F008A424672EF8A6070EEEB4AE
|
||||
:101A930008E79000A6E07005789B760122789C7693
|
||||
:101AA3000122782BE6B4E30D9000A17401F008E65F
|
||||
:101AB3009000A3F0229000A27401F0782CE690002D
|
||||
:021AC300A4F08D
|
||||
:011AC50022FE
|
||||
:10205300E4FF900000F0302D21C22DFB7A00792798
|
||||
:102063007829E62403FD121DFC7829E6242AF8E6E4
|
||||
:0A207300B50707782AE6FF121A539A
|
||||
:01207D002240
|
||||
:1011B500011500011400C134C13501135060280028
|
||||
:1011C500750BB80BEA0C1C0C800CB20CE40D160D5B
|
||||
:1011D500480D7A0DAC0DF70E420E880ED80F0A0F8A
|
||||
:0911E5003C0F870FD2101D1068A9
|
||||
:10189F00E4FF780EE6B40122EF25E02475F582E42B
|
||||
:1018AF003400F583E0FCA3E02432FDE43CFCC37874
|
||||
:1018BF00B6E69D18E69C501B801EEF25E02475F5BB
|
||||
:1018CF0082E43400F583E0FCA3E0D378B696EC18FD
|
||||
:1018DF009650050FEFB414BA7815E6FEEFD39E7845
|
||||
:1018EF00134003068001169000C5E030E30A781517
|
||||
:1018FF00EFF675F005A418F67813E6FED39496501C
|
||||
:10190F0006EEC3940A500D7815EFF675F005A4187E
|
||||
:10191F00F61876507815E6FFD394005004D2358030
|
||||
:10192F0008EFD394014002C235EFD394015003D294
|
||||
:0A193F003422EFD394024002C234B8
|
||||
:01194900227B
|
||||
:1011EE004100B4004100B7004100B3004200B1001D
|
||||
:1011FE00004100B500C120C121C123C11FC11EC1C4
|
||||
:09120E00224100B600C124C125F3
|
||||
:101AC6009000B6E06062E4F0D2209000B4E004F04A
|
||||
:101AD600E0C394054004E4F0D2219000B7E004F09E
|
||||
:101AE600E0C3940A4004E4F0D2239000B1E475F018
|
||||
:101AF60001120E02C39000B2E094649000B1E0942B
|
||||
:101B0600004006E4F0A3F0D21E9000B3E004F0E03B
|
||||
:101B1600C394FA4013E4F0D21F9000B5E004F0E05D
|
||||
:091B260094044004E4F0D22222F0
|
||||
:03000B000220EBE5
|
||||
:1020EB00C0E0C083C082C0D074FC258CF58C7466B4
|
||||
:1020FB00258AF58A9000B67401F0D0D0D082D083B7
|
||||
:03210B00D0E032EF
|
||||
:0E236D00758901758CFC758A66D2A9D28C2206
|
||||
:1021970075FE0FEF25E0FE7403A806088002C3331F
|
||||
:1021A700D8FCF452FFEFB4040675FE0FE4F5FF22E6
|
||||
:1022AC0075FE11EF5407F5FF75FE12AF058FFF7524
|
||||
:0622BC00FE1075FF012277
|
||||
:101D650075FE0FEF25E0FE7403A806088002C33355
|
||||
:101D7500D8FCF452FF7401A806088002C333D8FCCE
|
||||
:101D850042FF75FE0B7401A807088002C333D8FC17
|
||||
:101D950042FFEF70038DCE22EFB401038DCF22EF0A
|
||||
:0F1DA500B402038DDE22EFB40304AF058FDF22FB
|
||||
:033FFD00010101BE
|
||||
:06121700011600011700A2
|
||||
:101FCE00D28075FE0443FF0175FE0343FF0175FECB
|
||||
:101FDE000243FF01D28175FE0443FF0275FE0343E7
|
||||
:0D1FEE00FF0275FE0243FF02781676012205
|
||||
:0C22FE00C28012230AD28112230AD2806F
|
||||
:05230A00E4FF0FDFFEFF
|
||||
:01230F0022AB
|
||||
:10222E00D281D28012230A2081037F0022C2811222
|
||||
:0B223E00230A3081037F00227F012271
|
||||
:0F235000C280C281122305D28112230A02230AFE
|
||||
:10231000C28012230AC28112230512230AC280023C
|
||||
:02232000230A8E
|
||||
:082397001222FEC28002230A9B
|
||||
:0B237B001222FE12230AC28002230A75
|
||||
:02213100AE07F7
|
||||
:102133007D08AF051DEF6015C280EE30E704D28144
|
||||
:0F2143008002C281EE25E0FE12230580E5C280F6
|
||||
:01215200226A
|
||||
:10210E007E08E4FDD281AF061EEF6012ED25E0FDE4
|
||||
:10211E00C2801223053081EEED4401FD80E8C280BD
|
||||
:02212E00AF05FB
|
||||
:01213000228C
|
||||
:10000E007D087F351220277D0A7F761223B47D046A
|
||||
:05001E007F20022027F5
|
||||
:101C5800900000120E5C7F10121E3F900000120EC2
|
||||
:101C68003CEF120DCE7F11121E3F900000120E3C69
|
||||
:101C7800900001EF120DE07F12121E3F900000123B
|
||||
:101C88000E3C900002EF120DE07F13121E3F9000F1
|
||||
:101C980000120E3C900003EF120DE07F14121E3F5D
|
||||
:101CA800900000120E3C900004EF120DE07F00221D
|
||||
:05215300900000EFF018
|
||||
:10215800E47F20121E3F900000E06006EF4401FF7C
|
||||
:0D2168008004EF54FEFFAD077F200220270A
|
||||
:05217500900000EFF0F6
|
||||
:10217A00E47F27121E3F900000E06006EF4401FF53
|
||||
:0D218A008004EF54FEFFAD077F27022027E1
|
||||
:05226300900000EFF007
|
||||
:10226800E47F25121E3FEF54C0FF900000E04FFDB1
|
||||
:052278007F2502202774
|
||||
:1020A4009000CB120E5C120D88FD7F271220279022
|
||||
:1020B40000CB120E3C900001120DA1FD7F371220BF
|
||||
:0420C400277F002250
|
||||
:07239F007DAA7F4F022027F9
|
||||
:0723A6007D117F4F0220278B
|
||||
:0723AD007D337F4F02202762
|
||||
:0723B4008FFEAF058FFF2231
|
||||
:0623BB008FFEAEFFAF062D
|
||||
:0123C10022F9
|
||||
:10202700900046EFF0A3EDF012222E7F0C12213123
|
||||
:1020370012237B900046E0FF12213112237B900090
|
||||
:0C20470047E0FF12213112237B022350DE
|
||||
:051E3F00900046EFF0E9
|
||||
:101E4400E4A3F012222E7F0C12213112237B900086
|
||||
:101E540046E0FF12213112237B12222E7F0D122124
|
||||
:101E64003112237B12210E900047EFF012239712B8
|
||||
:071E74002350900047E0FF3E
|
||||
:011E7B002244
|
||||
:101959000222C2E493A3F8E493A34003F68001F2C0
|
||||
:1019690008DFF48029E493A3F85407240CC8C3338F
|
||||
:10197900C4540F4420C8834004F456800146F6DF5E
|
||||
:10198900E4800B010204081020408090106CE47E72
|
||||
:10199900019360BCA3FF543F30E509541FFEE49353
|
||||
:1019A900A360010ECF54C025E060A840B8E493A31A
|
||||
:1019B900FAE493A3F8E493A3C8C582C8CAC583CA45
|
||||
:1019C900F0A3C8C582C8CAC583CADFE9DEE780BEFD
|
||||
:01121D0000D0
|
||||
:100C9200E709F608DFFA8046E709F208DFFA803E44
|
||||
:100CA20088828C83E709F0A3DFFA8032E309F60831
|
||||
:100CB200DFFA8078E309F208DFFA807088828C8399
|
||||
:100CC200E309F0A3DFFA806489828A83E0A3F6084D
|
||||
:100CD200DFFA805889828A83E0A3F208DFFA804C27
|
||||
:100CE20080D280FA80C680D4806980F280338010FE
|
||||
:100CF20080A680EA809A80A880DA80E280CA803367
|
||||
:100D020089828A83ECFAE493A3C8C582C8CCC583DE
|
||||
:100D1200CCF0A3C8C582C8CCC583CCDFE9DEE780AE
|
||||
:100D22000D89828A83E493A3F608DFF9ECFAA9F02D
|
||||
:100D3200EDFB2289828A83ECFAE0A3C8C582C8CC83
|
||||
:100D4200C583CCF0A3C8C582C8CCC583CCDFEADE9C
|
||||
:100D5200E880DB89828A83E493A3F208DFF980CCFE
|
||||
:100D620088F0EF60010E4E60C388F0ED2402B404F7
|
||||
:100D72000050B9F582EB2402B4040050AF2323459E
|
||||
:060D82008223900CE273D5
|
||||
:100D8800BB010689828A83E0225002E722BBFE0269
|
||||
:090D9800E32289828A83E493229C
|
||||
:100DA100BB010CE58229F582E5833AF583E0225007
|
||||
:100DB10006E92582F8E622BBFE06E92582F8E22251
|
||||
:0D0DC100E58229F582E5833AF583E493226B
|
||||
:100DCE00BB010689828A83F0225002F722BBFE0104
|
||||
:020DDE00F322FE
|
||||
:100DE000F8BB010DE58229F582E5833AF583E8F049
|
||||
:100DF000225006E92582C8F622BBFE05E92582C8F5
|
||||
:020E0000F222DC
|
||||
:100E0200C5F0F8A3E028F0C5F0F8E582158270027B
|
||||
:060E12001583E038F02218
|
||||
:100E1800EB9FF5F0EA9E42F0E99D42F0E89C45F030
|
||||
:010E280022A7
|
||||
:100E2900E8600FECC313FCED13FDEE13FEEF13FFA7
|
||||
:030E3900D8F122CB
|
||||
:090E3C00E0FBA3E0FAA3E0F922B7
|
||||
:100E4500F8E0FBA3A3E0F925F0F0E5821582700236
|
||||
:070E55001583E0FA38F022DA
|
||||
:090E5C00EBF0A3EAF0A3E9F02297
|
||||
:100E6500D083D082F8E4937012740193700DA3A31C
|
||||
:100E750093F8740193F5828883E473740293686030
|
||||
:060E8500EFA3A3A380DF30
|
||||
:100E8B00EC8EF0A4CCC5F0CCCDF8EFA4CEC5F02DF4
|
||||
:100E9B00FDE43CFCE8A42EC8C5F03DFDE43CFCEFB2
|
||||
:0D0EAB00A4FFE5F028FEE43DFDE43CFC2240
|
||||
:1003FB00E5082404F582E43400F583E00508229037
|
||||
:10040B000001301403900004E475F001120E450254
|
||||
:10041B000D88200DE97F2ED20D8018EF540F2490FC
|
||||
:10042B00D43440D4FF30110BEF24BFB41A00500367
|
||||
:10043B002461FFE50960021509050CE50C70020546
|
||||
:10044B000B30140E900001E475F001120E45EF0213
|
||||
:10045B000DCE02235F7403D2148003E4C214F5089B
|
||||
:10046B00900001120E5CE4F509F50BF50CE5096043
|
||||
:10047B00077F2012043E80F5750AFFC20EC20DC223
|
||||
:10048B000FC210C212C213C21512040AFF700D3034
|
||||
:10049B0014057F0012044FAF0CAE0B22B4255FC2C4
|
||||
:1004AB00D5C21112040AFF24D0B40A00501A75F0F9
|
||||
:1004BB000A780930D50508B6FF0106C6A426F62032
|
||||
:1004CB00D5047002D21080D924CFB41A00EF500497
|
||||
:1004DB00C2E5D211020650D20E80C6D20D80C0D218
|
||||
:1004EB000F80BCD2D580BAD21280B47F2012043ECA
|
||||
:1004FB00200F077401B5090040F11203FBFF120432
|
||||
:10050B003E020478D215D21380951203FBFB120323
|
||||
:10051B00FBFA1203FBF94A4B700679217A077BFF32
|
||||
:10052B00200F2EE509602A7E008E82758300120D46
|
||||
:10053B00A160060EEE650A70F0C2D5EBC0E0EAC012
|
||||
:10054B00E0E9C0E0EE120697D0E0F9D0E0FAD0E097
|
||||
:10055B00FB120D88FF60AAEBC0E0EAC0E0E9C0E047
|
||||
:10056B0012043ED0E02401F9D0E03400FAD0E0FBD5
|
||||
:10057B00E50A0460DCD50AD980877BFF7A0679937C
|
||||
:10058B00D20F809C791080027908C213C2158008A3
|
||||
:10059B00D2D5790A8004790AC2D5E50A047002F52E
|
||||
:1005AB000AE4FAFDFEFF1203FBFC7B08200E13127C
|
||||
:1005BB0003FBFD7B10300D0A1203FBFE1203FBFF46
|
||||
:1005CB007B20EC3382D592D55013C3E4300D069FBC
|
||||
:1005DB00FFE49EFEE4200E039DFDE49CFCE4CBF8BF
|
||||
:1005EB00C20EEC700CCFCECDCCE824F8F870F380B3
|
||||
:1005FB0017C3EF33FFEE33FEED33FDEC33FCEB3380
|
||||
:10060B00FB994002FB0FD8E9EB300E05F8D0E0C4A4
|
||||
:10061B0048B20EC0E00AEC4D4E4F78207B0070C202
|
||||
:10062B00EAB50A0040BCC0E0120699D0F0D0E02039
|
||||
:10063B000E04C4C0E0C4B20EC0F0120427D0F0D533
|
||||
:10064B00F0EB020478120E65051553058F5804E67E
|
||||
:10065B004C04E24205934F059B44059B4904FB4325
|
||||
:08066B0005A155058546058532
|
||||
:100673004505854707415004EA2D04EE2E05112B4D
|
||||
:1006830004F223050F20072A2A04AA4800000509BB
|
||||
:100693003F3F3F00790AA2D5201014301209B91048
|
||||
:1006A300020404B9080104A2D52013025001042056
|
||||
:1006B3000F68920FB509005034C0E07F2030101945
|
||||
:1006C3007F30A20F72137212500F1206F0C20FC2C4
|
||||
:1006D30013C212C2157F30800F301203E9C0E0123B
|
||||
:1006E300043E301203D0E0F9D0E0B509CC30121744
|
||||
:1006F3007F30B9100C12043E7F583011077F788089
|
||||
:1007030003B9080312043E300F057F2D02043E7F18
|
||||
:10071300202015F87F2B2013F322920F80CF286E11
|
||||
:10072300756C6C2900D20E1203FB300EF8C20E78E2
|
||||
:100733000930D50108F60204AA2D50434958120383
|
||||
:10074300FB2403B405004001E490073C9312042FFB
|
||||
:0D075300743A12042FD21075090402058FAC
|
||||
:00000001FF
|
BIN
Out/SY8835_EVB_mcu_2024_11_27_155640_crc(e46f)_V010101.bin
Normal file
BIN
Out/SY8835_EVB_mcu_2024_11_27_155640_crc(e46f)_V010101.bin
Normal file
Binary file not shown.
3844
Project/SY8835_Demo.uvgui.GH
Normal file
3844
Project/SY8835_Demo.uvgui.GH
Normal file
File diff suppressed because one or more lines are too long
3682
Project/SY8835_Demo.uvgui.GH.bak
Normal file
3682
Project/SY8835_Demo.uvgui.GH.bak
Normal file
File diff suppressed because one or more lines are too long
509
Project/SY8835_Demo.uvopt
Normal file
509
Project/SY8835_Demo.uvopt
Normal file
@ -0,0 +1,509 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
|
||||
<ProjectOpt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_opt.xsd">
|
||||
|
||||
<SchemaVersion>1.0</SchemaVersion>
|
||||
|
||||
<Header>### uVision Project, (C) Keil Software</Header>
|
||||
|
||||
<Extensions>
|
||||
<cExt>*.c</cExt>
|
||||
<aExt>*.s*; *.src; *.a*</aExt>
|
||||
<oExt>*.obj; *.o</oExt>
|
||||
<lExt>*.lib</lExt>
|
||||
<tExt>*.txt; *.h; *.inc</tExt>
|
||||
<pExt>*.plm</pExt>
|
||||
<CppX>*.cpp</CppX>
|
||||
<nMigrate>0</nMigrate>
|
||||
</Extensions>
|
||||
|
||||
<DaveTm>
|
||||
<dwLowDateTime>0</dwLowDateTime>
|
||||
<dwHighDateTime>0</dwHighDateTime>
|
||||
</DaveTm>
|
||||
|
||||
<Target>
|
||||
<TargetName>Target 1</TargetName>
|
||||
<ToolsetNumber>0x0</ToolsetNumber>
|
||||
<ToolsetName>MCS-51</ToolsetName>
|
||||
<TargetOption>
|
||||
<CLK51>12000000</CLK51>
|
||||
<OPTTT>
|
||||
<gFlags>1</gFlags>
|
||||
<BeepAtEnd>1</BeepAtEnd>
|
||||
<RunSim>1</RunSim>
|
||||
<RunTarget>0</RunTarget>
|
||||
<RunAbUc>0</RunAbUc>
|
||||
</OPTTT>
|
||||
<OPTHX>
|
||||
<HexSelection>0</HexSelection>
|
||||
<FlashByte>65535</FlashByte>
|
||||
<HexRangeLowAddress>0</HexRangeLowAddress>
|
||||
<HexRangeHighAddress>0</HexRangeHighAddress>
|
||||
<HexOffset>0</HexOffset>
|
||||
</OPTHX>
|
||||
<OPTLEX>
|
||||
<PageWidth>120</PageWidth>
|
||||
<PageLength>65</PageLength>
|
||||
<TabStop>8</TabStop>
|
||||
<ListingPath>.\Listings\</ListingPath>
|
||||
</OPTLEX>
|
||||
<ListingPage>
|
||||
<CreateCListing>1</CreateCListing>
|
||||
<CreateAListing>1</CreateAListing>
|
||||
<CreateLListing>1</CreateLListing>
|
||||
<CreateIListing>0</CreateIListing>
|
||||
<AsmCond>1</AsmCond>
|
||||
<AsmSymb>1</AsmSymb>
|
||||
<AsmXref>0</AsmXref>
|
||||
<CCond>1</CCond>
|
||||
<CCode>1</CCode>
|
||||
<CListInc>0</CListInc>
|
||||
<CSymb>0</CSymb>
|
||||
<LinkerCodeListing>0</LinkerCodeListing>
|
||||
</ListingPage>
|
||||
<OPTXL>
|
||||
<LMap>1</LMap>
|
||||
<LComments>1</LComments>
|
||||
<LGenerateSymbols>1</LGenerateSymbols>
|
||||
<LLibSym>1</LLibSym>
|
||||
<LLines>1</LLines>
|
||||
<LLocSym>1</LLocSym>
|
||||
<LPubSym>1</LPubSym>
|
||||
<LXref>0</LXref>
|
||||
<LExpSel>0</LExpSel>
|
||||
</OPTXL>
|
||||
<OPTFL>
|
||||
<tvExp>1</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<IsCurrentTarget>1</IsCurrentTarget>
|
||||
</OPTFL>
|
||||
<CpuCode>255</CpuCode>
|
||||
<Books>
|
||||
<Book>
|
||||
<Number>0</Number>
|
||||
<Title>Data Sheet</Title>
|
||||
<Path>DATASHTS\CAST\CAST_R8051XC.PDF</Path>
|
||||
</Book>
|
||||
</Books>
|
||||
<DebugOpt>
|
||||
<uSim>1</uSim>
|
||||
<uTrg>0</uTrg>
|
||||
<sLdApp>1</sLdApp>
|
||||
<sGomain>1</sGomain>
|
||||
<sRbreak>1</sRbreak>
|
||||
<sRwatch>1</sRwatch>
|
||||
<sRmem>1</sRmem>
|
||||
<sRfunc>1</sRfunc>
|
||||
<sRbox>1</sRbox>
|
||||
<tLdApp>1</tLdApp>
|
||||
<tGomain>1</tGomain>
|
||||
<tRbreak>1</tRbreak>
|
||||
<tRwatch>1</tRwatch>
|
||||
<tRmem>1</tRmem>
|
||||
<tRfunc>0</tRfunc>
|
||||
<tRbox>1</tRbox>
|
||||
<tRtrace>1</tRtrace>
|
||||
<sRSysVw>1</sRSysVw>
|
||||
<tRSysVw>1</tRSysVw>
|
||||
<sRunDeb>0</sRunDeb>
|
||||
<sLrtime>0</sLrtime>
|
||||
<bEvRecOn>1</bEvRecOn>
|
||||
<bSchkAxf>0</bSchkAxf>
|
||||
<bTchkAxf>0</bTchkAxf>
|
||||
<nTsel>0</nTsel>
|
||||
<sDll></sDll>
|
||||
<sDllPa></sDllPa>
|
||||
<sDlgDll></sDlgDll>
|
||||
<sDlgPa></sDlgPa>
|
||||
<sIfile></sIfile>
|
||||
<tDll></tDll>
|
||||
<tDllPa></tDllPa>
|
||||
<tDlgDll></tDlgDll>
|
||||
<tDlgPa></tDlgPa>
|
||||
<tIfile></tIfile>
|
||||
<pMon>BIN\MON51.DLL</pMon>
|
||||
</DebugOpt>
|
||||
<TargetDriverDllRegistry>
|
||||
<SetRegEntry>
|
||||
<Number>0</Number>
|
||||
<Key>DLGDC51</Key>
|
||||
<Name>(94=-1,-1,-1,-1,0)(80=-1,-1,-1,-1,0)(81=-1,-1,-1,-1,0)(82=-1,-1,-1,-1,0)(83=-1,-1,-1,-1,0)(84=-1,-1,-1,-1,0)(1201=-1,-1,-1,-1,0)(90=-1,-1,-1,-1,0)(91=-1,-1,-1,-1,0)(5045=-1,-1,-1,-1,0)(5046=-1,-1,-1,-1,0)(5031=-1,-1,-1,-1,0)(104=-1,-1,-1,-1,0)(5015=-1,-1,-1,-1,0)(5160=-1,-1,-1,-1,0)(5057=-1,-1,-1,-1,0)(5166=-1,-1,-1,-1,0)(5164=-1,-1,-1,-1,0)(5165=-1,-1,-1,-1,0)</Name>
|
||||
</SetRegEntry>
|
||||
<SetRegEntry>
|
||||
<Number>0</Number>
|
||||
<Key>SY8831</Key>
|
||||
<Name>-S14 -B921600 -O1799</Name>
|
||||
</SetRegEntry>
|
||||
<SetRegEntry>
|
||||
<Number>0</Number>
|
||||
<Key>DLGTC51</Key>
|
||||
<Name></Name>
|
||||
</SetRegEntry>
|
||||
<SetRegEntry>
|
||||
<Number>0</Number>
|
||||
<Key>TP3102</Key>
|
||||
<Name>-S14 -B921600 -O1799</Name>
|
||||
</SetRegEntry>
|
||||
</TargetDriverDllRegistry>
|
||||
<Breakpoint/>
|
||||
<WatchWindow1>
|
||||
<Ww>
|
||||
<count>0</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>n_ADC_Plus,0x0A</ItemText>
|
||||
</Ww>
|
||||
<Ww>
|
||||
<count>1</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>n_Vbat_Data,0x0A</ItemText>
|
||||
</Ww>
|
||||
<Ww>
|
||||
<count>2</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>F_sys_tim_1s</ItemText>
|
||||
</Ww>
|
||||
<Ww>
|
||||
<count>3</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>Protect_Type_Flg</ItemText>
|
||||
</Ww>
|
||||
<Ww>
|
||||
<count>4</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>Decnt_SleepDelay</ItemText>
|
||||
</Ww>
|
||||
</WatchWindow1>
|
||||
<MemoryWindow1>
|
||||
<Mm>
|
||||
<WinNumber>1</WinNumber>
|
||||
<SubType>0</SubType>
|
||||
<ItemText>X:0</ItemText>
|
||||
<AccSizeX>0</AccSizeX>
|
||||
</Mm>
|
||||
</MemoryWindow1>
|
||||
<Tracepoint>
|
||||
<THDelay>0</THDelay>
|
||||
</Tracepoint>
|
||||
<DebugFlag>
|
||||
<trace>0</trace>
|
||||
<periodic>1</periodic>
|
||||
<aLwin>1</aLwin>
|
||||
<aCover>0</aCover>
|
||||
<aSer1>0</aSer1>
|
||||
<aSer2>0</aSer2>
|
||||
<aPa>0</aPa>
|
||||
<viewmode>1</viewmode>
|
||||
<vrSel>0</vrSel>
|
||||
<aSym>0</aSym>
|
||||
<aTbox>0</aTbox>
|
||||
<AscS1>0</AscS1>
|
||||
<AscS2>0</AscS2>
|
||||
<AscS3>0</AscS3>
|
||||
<aSer3>0</aSer3>
|
||||
<eProf>0</eProf>
|
||||
<aLa>0</aLa>
|
||||
<aPa1>0</aPa1>
|
||||
<AscS4>0</AscS4>
|
||||
<aSer4>0</aSer4>
|
||||
<StkLoc>1</StkLoc>
|
||||
<TrcWin>0</TrcWin>
|
||||
<newCpu>0</newCpu>
|
||||
<uProt>0</uProt>
|
||||
</DebugFlag>
|
||||
<LintExecutable></LintExecutable>
|
||||
<LintConfigFile></LintConfigFile>
|
||||
<bLintAuto>0</bLintAuto>
|
||||
<bAutoGenD>0</bAutoGenD>
|
||||
<LntExFlags>0</LntExFlags>
|
||||
<pMisraName></pMisraName>
|
||||
<pszMrule></pszMrule>
|
||||
<pSingCmds></pSingCmds>
|
||||
<pMultCmds></pMultCmds>
|
||||
<pMisraNamep></pMisraNamep>
|
||||
<pszMrulep></pszMrulep>
|
||||
<pSingCmdsp></pSingCmdsp>
|
||||
<pMultCmdsp></pMultCmdsp>
|
||||
</TargetOption>
|
||||
</Target>
|
||||
|
||||
<Group>
|
||||
<GroupName>Startup</GroupName>
|
||||
<tvExp>1</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<cbSel>0</cbSel>
|
||||
<RteFlg>0</RteFlg>
|
||||
<File>
|
||||
<GroupNumber>1</GroupNumber>
|
||||
<FileNumber>1</FileNumber>
|
||||
<FileType>2</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\Src\startup\STARTUP.A51</PathWithFileName>
|
||||
<FilenameWithoutPath>STARTUP.A51</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
</Group>
|
||||
|
||||
<Group>
|
||||
<GroupName>UsrSrc</GroupName>
|
||||
<tvExp>1</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<cbSel>0</cbSel>
|
||||
<RteFlg>0</RteFlg>
|
||||
<File>
|
||||
<GroupNumber>2</GroupNumber>
|
||||
<FileNumber>2</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\UsrSrc\main.c</PathWithFileName>
|
||||
<FilenameWithoutPath>main.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>2</GroupNumber>
|
||||
<FileNumber>3</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\UsrSrc\adc\adc.c</PathWithFileName>
|
||||
<FilenameWithoutPath>adc.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>2</GroupNumber>
|
||||
<FileNumber>4</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\UsrSrc\charger\charger_module.c</PathWithFileName>
|
||||
<FilenameWithoutPath>charger_module.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>2</GroupNumber>
|
||||
<FileNumber>5</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\UsrSrc\discharge\discharge_module.c</PathWithFileName>
|
||||
<FilenameWithoutPath>discharge_module.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>2</GroupNumber>
|
||||
<FileNumber>6</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\UsrSrc\gpio\gpio.c</PathWithFileName>
|
||||
<FilenameWithoutPath>gpio.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>2</GroupNumber>
|
||||
<FileNumber>7</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\UsrSrc\hall\hall.c</PathWithFileName>
|
||||
<FilenameWithoutPath>hall.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>2</GroupNumber>
|
||||
<FileNumber>8</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\UsrSrc\key\key.c</PathWithFileName>
|
||||
<FilenameWithoutPath>key.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>2</GroupNumber>
|
||||
<FileNumber>9</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\UsrSrc\led\led.c</PathWithFileName>
|
||||
<FilenameWithoutPath>led.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>2</GroupNumber>
|
||||
<FileNumber>10</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\UsrSrc\sleep\sleep.c</PathWithFileName>
|
||||
<FilenameWithoutPath>sleep.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>2</GroupNumber>
|
||||
<FileNumber>11</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\UsrSrc\system\system.c</PathWithFileName>
|
||||
<FilenameWithoutPath>system.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>2</GroupNumber>
|
||||
<FileNumber>12</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\UsrSrc\uart\uart.c</PathWithFileName>
|
||||
<FilenameWithoutPath>uart.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>2</GroupNumber>
|
||||
<FileNumber>13</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\UsrSrc\userapp\userapp.c</PathWithFileName>
|
||||
<FilenameWithoutPath>userapp.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>2</GroupNumber>
|
||||
<FileNumber>14</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\UsrSrc\vox\vox_module.c</PathWithFileName>
|
||||
<FilenameWithoutPath>vox_module.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>2</GroupNumber>
|
||||
<FileNumber>15</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\UsrSrc\watchdog\watchdog.c</PathWithFileName>
|
||||
<FilenameWithoutPath>watchdog.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>2</GroupNumber>
|
||||
<FileNumber>16</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\UsrSrc\bat\bat.c</PathWithFileName>
|
||||
<FilenameWithoutPath>bat.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>2</GroupNumber>
|
||||
<FileNumber>17</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\UsrSrc\timer\sys_tim.c</PathWithFileName>
|
||||
<FilenameWithoutPath>sys_tim.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>2</GroupNumber>
|
||||
<FileNumber>18</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\UsrSrc\pwm\pwm.c</PathWithFileName>
|
||||
<FilenameWithoutPath>pwm.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>2</GroupNumber>
|
||||
<FileNumber>19</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\UsrSrc\InitVars.c</PathWithFileName>
|
||||
<FilenameWithoutPath>InitVars.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>2</GroupNumber>
|
||||
<FileNumber>20</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\UsrSrc\i2c_simu\i2c_simu.c</PathWithFileName>
|
||||
<FilenameWithoutPath>i2c_simu.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>2</GroupNumber>
|
||||
<FileNumber>21</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\UsrSrc\pmu\pmu.c</PathWithFileName>
|
||||
<FilenameWithoutPath>pmu.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>2</GroupNumber>
|
||||
<FileNumber>22</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\UsrSrc\user\user.c</PathWithFileName>
|
||||
<FilenameWithoutPath>user.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
</Group>
|
||||
|
||||
</ProjectOpt>
|
515
Project/SY8835_Demo.uvproj
Normal file
515
Project/SY8835_Demo.uvproj
Normal file
@ -0,0 +1,515 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
|
||||
<Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_proj.xsd">
|
||||
|
||||
<SchemaVersion>1.1</SchemaVersion>
|
||||
|
||||
<Header>### uVision Project, (C) Keil Software</Header>
|
||||
|
||||
<Targets>
|
||||
<Target>
|
||||
<TargetName>Target 1</TargetName>
|
||||
<ToolsetNumber>0x0</ToolsetNumber>
|
||||
<ToolsetName>MCS-51</ToolsetName>
|
||||
<uAC6>0</uAC6>
|
||||
<TargetOption>
|
||||
<TargetCommonOption>
|
||||
<Device>R8051XC</Device>
|
||||
<Vendor>CAST, Inc.</Vendor>
|
||||
<Cpu>IRAM(0-0xFF) CLOCK(24000000) MOD517DP MDU_R515</Cpu>
|
||||
<FlashUtilSpec></FlashUtilSpec>
|
||||
<StartupFile>"LIB\STARTUP.A51" ("Standard 8051 Startup Code")</StartupFile>
|
||||
<FlashDriverDll></FlashDriverDll>
|
||||
<DeviceId>4129</DeviceId>
|
||||
<RegisterFile>REG51XC.H</RegisterFile>
|
||||
<MemoryEnv></MemoryEnv>
|
||||
<Cmp></Cmp>
|
||||
<Asm></Asm>
|
||||
<Linker></Linker>
|
||||
<OHString></OHString>
|
||||
<InfinionOptionDll></InfinionOptionDll>
|
||||
<SLE66CMisc></SLE66CMisc>
|
||||
<SLE66AMisc></SLE66AMisc>
|
||||
<SLE66LinkerMisc></SLE66LinkerMisc>
|
||||
<SFDFile></SFDFile>
|
||||
<bCustSvd>0</bCustSvd>
|
||||
<UseEnv>0</UseEnv>
|
||||
<BinPath></BinPath>
|
||||
<IncludePath></IncludePath>
|
||||
<LibPath></LibPath>
|
||||
<RegisterFilePath>Evatronix\</RegisterFilePath>
|
||||
<DBRegisterFilePath>Evatronix\</DBRegisterFilePath>
|
||||
<TargetStatus>
|
||||
<Error>0</Error>
|
||||
<ExitCodeStop>0</ExitCodeStop>
|
||||
<ButtonStop>0</ButtonStop>
|
||||
<NotGenerated>0</NotGenerated>
|
||||
<InvalidFlash>1</InvalidFlash>
|
||||
</TargetStatus>
|
||||
<OutputDirectory>.\Objects\</OutputDirectory>
|
||||
<OutputName>mcu</OutputName>
|
||||
<CreateExecutable>1</CreateExecutable>
|
||||
<CreateLib>0</CreateLib>
|
||||
<CreateHexFile>1</CreateHexFile>
|
||||
<DebugInformation>1</DebugInformation>
|
||||
<BrowseInformation>1</BrowseInformation>
|
||||
<ListingPath>.\Listings\</ListingPath>
|
||||
<HexFormatSelection>0</HexFormatSelection>
|
||||
<Merge32K>0</Merge32K>
|
||||
<CreateBatchFile>0</CreateBatchFile>
|
||||
<BeforeCompile>
|
||||
<RunUserProg1>0</RunUserProg1>
|
||||
<RunUserProg2>0</RunUserProg2>
|
||||
<UserProg1Name></UserProg1Name>
|
||||
<UserProg2Name></UserProg2Name>
|
||||
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
|
||||
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
|
||||
<nStopU1X>0</nStopU1X>
|
||||
<nStopU2X>0</nStopU2X>
|
||||
</BeforeCompile>
|
||||
<BeforeMake>
|
||||
<RunUserProg1>0</RunUserProg1>
|
||||
<RunUserProg2>0</RunUserProg2>
|
||||
<UserProg1Name></UserProg1Name>
|
||||
<UserProg2Name></UserProg2Name>
|
||||
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
|
||||
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
|
||||
<nStopB1X>0</nStopB1X>
|
||||
<nStopB2X>0</nStopB2X>
|
||||
</BeforeMake>
|
||||
<AfterMake>
|
||||
<RunUserProg1>1</RunUserProg1>
|
||||
<RunUserProg2>0</RunUserProg2>
|
||||
<UserProg1Name>.\..\Tools\HEXBIN.bat .\..\Tools\hex2bin_TP.exe .\..\Tools\bin_crc.exe mcu \Objects\</UserProg1Name>
|
||||
<UserProg2Name>.\..\Tools\hex2bin_TP.exe .\Objects\mcu.hex .\Objects\bin.bin 16 0</UserProg2Name>
|
||||
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
|
||||
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
|
||||
<nStopA1X>0</nStopA1X>
|
||||
<nStopA2X>0</nStopA2X>
|
||||
</AfterMake>
|
||||
<SelectedForBatchBuild>0</SelectedForBatchBuild>
|
||||
<SVCSIdString></SVCSIdString>
|
||||
</TargetCommonOption>
|
||||
<CommonProperty>
|
||||
<UseCPPCompiler>0</UseCPPCompiler>
|
||||
<RVCTCodeConst>0</RVCTCodeConst>
|
||||
<RVCTZI>0</RVCTZI>
|
||||
<RVCTOtherData>0</RVCTOtherData>
|
||||
<ModuleSelection>0</ModuleSelection>
|
||||
<IncludeInBuild>1</IncludeInBuild>
|
||||
<AlwaysBuild>0</AlwaysBuild>
|
||||
<GenerateAssemblyFile>0</GenerateAssemblyFile>
|
||||
<AssembleAssemblyFile>0</AssembleAssemblyFile>
|
||||
<PublicsOnly>0</PublicsOnly>
|
||||
<StopOnExitCode>3</StopOnExitCode>
|
||||
<CustomArgument></CustomArgument>
|
||||
<IncludeLibraryModules></IncludeLibraryModules>
|
||||
<ComprImg>1</ComprImg>
|
||||
<BankNo>65535</BankNo>
|
||||
</CommonProperty>
|
||||
<DllOption>
|
||||
<SimDllName>S8051.DLL</SimDllName>
|
||||
<SimDllArguments>-PMW -DPC -BSE</SimDllArguments>
|
||||
<SimDlgDll>DCore51.DLL</SimDlgDll>
|
||||
<SimDlgDllArguments>-pR8051XC -o38081BDBFFF</SimDlgDllArguments>
|
||||
<TargetDllName>S8051.DLL</TargetDllName>
|
||||
<TargetDllArguments></TargetDllArguments>
|
||||
<TargetDlgDll>TCore51.DLL</TargetDlgDll>
|
||||
<TargetDlgDllArguments>-pR8051XC</TargetDlgDllArguments>
|
||||
</DllOption>
|
||||
<DebugOption>
|
||||
<OPTHX>
|
||||
<HexSelection>0</HexSelection>
|
||||
<HexRangeLowAddress>0</HexRangeLowAddress>
|
||||
<HexRangeHighAddress>0</HexRangeHighAddress>
|
||||
<HexOffset>0</HexOffset>
|
||||
<Oh166RecLen>16</Oh166RecLen>
|
||||
</OPTHX>
|
||||
<Simulator>
|
||||
<UseSimulator>1</UseSimulator>
|
||||
<LoadApplicationAtStartup>1</LoadApplicationAtStartup>
|
||||
<RunToMain>1</RunToMain>
|
||||
<RestoreBreakpoints>1</RestoreBreakpoints>
|
||||
<RestoreWatchpoints>1</RestoreWatchpoints>
|
||||
<RestoreMemoryDisplay>1</RestoreMemoryDisplay>
|
||||
<RestoreFunctions>1</RestoreFunctions>
|
||||
<RestoreToolbox>1</RestoreToolbox>
|
||||
<LimitSpeedToRealTime>0</LimitSpeedToRealTime>
|
||||
<RestoreSysVw>1</RestoreSysVw>
|
||||
</Simulator>
|
||||
<Target>
|
||||
<UseTarget>0</UseTarget>
|
||||
<LoadApplicationAtStartup>1</LoadApplicationAtStartup>
|
||||
<RunToMain>1</RunToMain>
|
||||
<RestoreBreakpoints>1</RestoreBreakpoints>
|
||||
<RestoreWatchpoints>1</RestoreWatchpoints>
|
||||
<RestoreMemoryDisplay>1</RestoreMemoryDisplay>
|
||||
<RestoreFunctions>0</RestoreFunctions>
|
||||
<RestoreToolbox>1</RestoreToolbox>
|
||||
<RestoreTracepoints>1</RestoreTracepoints>
|
||||
<RestoreSysVw>1</RestoreSysVw>
|
||||
</Target>
|
||||
<RunDebugAfterBuild>0</RunDebugAfterBuild>
|
||||
<TargetSelection>0</TargetSelection>
|
||||
<SimDlls>
|
||||
<CpuDll></CpuDll>
|
||||
<CpuDllArguments></CpuDllArguments>
|
||||
<PeripheralDll></PeripheralDll>
|
||||
<PeripheralDllArguments></PeripheralDllArguments>
|
||||
<InitializationFile></InitializationFile>
|
||||
</SimDlls>
|
||||
<TargetDlls>
|
||||
<CpuDll></CpuDll>
|
||||
<CpuDllArguments></CpuDllArguments>
|
||||
<PeripheralDll></PeripheralDll>
|
||||
<PeripheralDllArguments></PeripheralDllArguments>
|
||||
<InitializationFile></InitializationFile>
|
||||
<Driver>BIN\MON51.DLL</Driver>
|
||||
</TargetDlls>
|
||||
</DebugOption>
|
||||
<Utilities>
|
||||
<Flash1>
|
||||
<UseTargetDll>0</UseTargetDll>
|
||||
<UseExternalTool>0</UseExternalTool>
|
||||
<RunIndependent>0</RunIndependent>
|
||||
<UpdateFlashBeforeDebugging>0</UpdateFlashBeforeDebugging>
|
||||
<Capability>0</Capability>
|
||||
<DriverSelection>-1</DriverSelection>
|
||||
</Flash1>
|
||||
<bUseTDR>0</bUseTDR>
|
||||
<Flash2></Flash2>
|
||||
<Flash3>"" ()</Flash3>
|
||||
<Flash4></Flash4>
|
||||
<pFcarmOut></pFcarmOut>
|
||||
<pFcarmGrp></pFcarmGrp>
|
||||
<pFcArmRoot></pFcArmRoot>
|
||||
<FcArmLst>0</FcArmLst>
|
||||
</Utilities>
|
||||
<Target51>
|
||||
<Target51Misc>
|
||||
<MemoryModel>2</MemoryModel>
|
||||
<RTOS>0</RTOS>
|
||||
<RomSize>2</RomSize>
|
||||
<DataHold>0</DataHold>
|
||||
<XDataHold>0</XDataHold>
|
||||
<UseOnchipRom>0</UseOnchipRom>
|
||||
<UseOnchipArithmetic>0</UseOnchipArithmetic>
|
||||
<UseMultipleDPTR>0</UseMultipleDPTR>
|
||||
<UseOnchipXram>0</UseOnchipXram>
|
||||
<HadIRAM>1</HadIRAM>
|
||||
<HadXRAM>0</HadXRAM>
|
||||
<HadIROM>0</HadIROM>
|
||||
<Moda2>0</Moda2>
|
||||
<Moddp2>0</Moddp2>
|
||||
<Modp2>0</Modp2>
|
||||
<Mod517dp>1</Mod517dp>
|
||||
<Mod517au>0</Mod517au>
|
||||
<Mode2>0</Mode2>
|
||||
<useCB>0</useCB>
|
||||
<useXB>0</useXB>
|
||||
<useL251>0</useL251>
|
||||
<useA251>0</useA251>
|
||||
<Mx51>0</Mx51>
|
||||
<ModC812>0</ModC812>
|
||||
<ModCont>0</ModCont>
|
||||
<Lp51>0</Lp51>
|
||||
<useXBS>0</useXBS>
|
||||
<ModDA>0</ModDA>
|
||||
<ModAB2>0</ModAB2>
|
||||
<Mx51P>0</Mx51P>
|
||||
<hadXRAM2>0</hadXRAM2>
|
||||
<uocXram2>0</uocXram2>
|
||||
<hadXRAM3>0</hadXRAM3>
|
||||
<ModC2>0</ModC2>
|
||||
<ModH2>0</ModH2>
|
||||
<Mdu_R515>1</Mdu_R515>
|
||||
<Mdu_F120>0</Mdu_F120>
|
||||
<Psoc>0</Psoc>
|
||||
<hadIROM2>0</hadIROM2>
|
||||
<hadIROM3>0</hadIROM3>
|
||||
<ModSmx2>0</ModSmx2>
|
||||
<cBanks>0</cBanks>
|
||||
<xBanks>0</xBanks>
|
||||
<OnChipMemories>
|
||||
<RCB>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0xffff</Size>
|
||||
</RCB>
|
||||
<RXB>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</RXB>
|
||||
<Ocm1>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</Ocm1>
|
||||
<Ocm2>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</Ocm2>
|
||||
<Ocm3>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</Ocm3>
|
||||
<Ocr1>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x400</Size>
|
||||
</Ocr1>
|
||||
<Ocr2>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</Ocr2>
|
||||
<Ocr3>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</Ocr3>
|
||||
<IRO>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</IRO>
|
||||
<IRA>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x100</Size>
|
||||
</IRA>
|
||||
<XRA>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</XRA>
|
||||
<XRA512>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</XRA512>
|
||||
<IROM512>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</IROM512>
|
||||
<XRA513>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</XRA513>
|
||||
<IROM513>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</IROM513>
|
||||
</OnChipMemories>
|
||||
</Target51Misc>
|
||||
<C51>
|
||||
<RegisterColoring>0</RegisterColoring>
|
||||
<VariablesInOrder>0</VariablesInOrder>
|
||||
<IntegerPromotion>1</IntegerPromotion>
|
||||
<uAregs>0</uAregs>
|
||||
<UseInterruptVector>1</UseInterruptVector>
|
||||
<Fuzzy>3</Fuzzy>
|
||||
<Optimize>8</Optimize>
|
||||
<WarningLevel>2</WarningLevel>
|
||||
<SizeSpeed>0</SizeSpeed>
|
||||
<ObjectExtend>1</ObjectExtend>
|
||||
<ACallAJmp>0</ACallAJmp>
|
||||
<InterruptVectorAddress>0</InterruptVectorAddress>
|
||||
<VariousControls>
|
||||
<MiscControls></MiscControls>
|
||||
<Define></Define>
|
||||
<Undefine></Undefine>
|
||||
<IncludePath>..\UsrInc\adc;..\UsrInc\charger;..\UsrInc\discharge;..\UsrInc\gpio;..\UsrInc\hall;..\UsrInc\i2c_simu;..\UsrInc\inc;..\UsrInc\key;..\UsrInc\led;..\UsrInc\mtp;..\UsrInc\pwm;..\UsrInc\sleep;..\UsrInc\system;..\UsrInc\uart;..\UsrInc\userapp;..\UsrInc\vox;..\UsrInc\vox_comm;..\UsrInc\watchdog;..\UsrInc\bat;..\UsrInc\timer;..\UsrInc\pmu;..\UsrInc\user</IncludePath>
|
||||
</VariousControls>
|
||||
</C51>
|
||||
<Ax51>
|
||||
<UseMpl>0</UseMpl>
|
||||
<UseStandard>1</UseStandard>
|
||||
<UseCase>0</UseCase>
|
||||
<UseMod51>0</UseMod51>
|
||||
<VariousControls>
|
||||
<MiscControls></MiscControls>
|
||||
<Define></Define>
|
||||
<Undefine></Undefine>
|
||||
<IncludePath></IncludePath>
|
||||
</VariousControls>
|
||||
</Ax51>
|
||||
<Lx51>
|
||||
<useFile>0</useFile>
|
||||
<linkonly>0</linkonly>
|
||||
<UseMemoryFromTarget>1</UseMemoryFromTarget>
|
||||
<CaseSensitiveSymbols>0</CaseSensitiveSymbols>
|
||||
<WarningLevel>2</WarningLevel>
|
||||
<DataOverlaying>1</DataOverlaying>
|
||||
<OverlayString></OverlayString>
|
||||
<MiscControls></MiscControls>
|
||||
<DisableWarningNumbers></DisableWarningNumbers>
|
||||
<LinkerCmdFile></LinkerCmdFile>
|
||||
<Assign></Assign>
|
||||
<ReserveString></ReserveString>
|
||||
<CClasses></CClasses>
|
||||
<UserClasses></UserClasses>
|
||||
<CSection></CSection>
|
||||
<UserSection></UserSection>
|
||||
<CodeBaseAddress></CodeBaseAddress>
|
||||
<XDataBaseAddress>0X0000-0X03FF</XDataBaseAddress>
|
||||
<PDataBaseAddress></PDataBaseAddress>
|
||||
<BitBaseAddress></BitBaseAddress>
|
||||
<DataBaseAddress></DataBaseAddress>
|
||||
<IDataBaseAddress></IDataBaseAddress>
|
||||
<Precede></Precede>
|
||||
<Stack></Stack>
|
||||
<CodeSegmentName>?CO?INITVARS(0x3FFD)</CodeSegmentName>
|
||||
<XDataSegmentName></XDataSegmentName>
|
||||
<BitSegmentName></BitSegmentName>
|
||||
<DataSegmentName></DataSegmentName>
|
||||
<IDataSegmentName></IDataSegmentName>
|
||||
</Lx51>
|
||||
</Target51>
|
||||
</TargetOption>
|
||||
<Groups>
|
||||
<Group>
|
||||
<GroupName>Startup</GroupName>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>STARTUP.A51</FileName>
|
||||
<FileType>2</FileType>
|
||||
<FilePath>..\Src\startup\STARTUP.A51</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
</Group>
|
||||
<Group>
|
||||
<GroupName>UsrSrc</GroupName>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>main.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\UsrSrc\main.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>adc.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\UsrSrc\adc\adc.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>charger_module.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\UsrSrc\charger\charger_module.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>discharge_module.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\UsrSrc\discharge\discharge_module.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>gpio.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\UsrSrc\gpio\gpio.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>hall.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\UsrSrc\hall\hall.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>key.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\UsrSrc\key\key.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>led.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\UsrSrc\led\led.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>sleep.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\UsrSrc\sleep\sleep.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>system.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\UsrSrc\system\system.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>uart.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\UsrSrc\uart\uart.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>userapp.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\UsrSrc\userapp\userapp.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>vox_module.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\UsrSrc\vox\vox_module.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>watchdog.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\UsrSrc\watchdog\watchdog.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>bat.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\UsrSrc\bat\bat.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>sys_tim.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\UsrSrc\timer\sys_tim.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>pwm.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\UsrSrc\pwm\pwm.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>InitVars.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\UsrSrc\InitVars.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>i2c_simu.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\UsrSrc\i2c_simu\i2c_simu.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>pmu.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\UsrSrc\pmu\pmu.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>user.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\UsrSrc\user\user.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
</Group>
|
||||
</Groups>
|
||||
</Target>
|
||||
</Targets>
|
||||
|
||||
<LayerInfo>
|
||||
<Layers>
|
||||
<Layer>
|
||||
<LayName><Project Info></LayName>
|
||||
<LayDesc></LayDesc>
|
||||
<LayUrl></LayUrl>
|
||||
<LayKeys></LayKeys>
|
||||
<LayCat></LayCat>
|
||||
<LayLic></LayLic>
|
||||
<LayTarg>0</LayTarg>
|
||||
<LayPrjMark>1</LayPrjMark>
|
||||
</Layer>
|
||||
</Layers>
|
||||
</LayerInfo>
|
||||
|
||||
</Project>
|
210
Src/startup/STARTUP.A51
Normal file
210
Src/startup/STARTUP.A51
Normal file
@ -0,0 +1,210 @@
|
||||
$NOMOD51
|
||||
;------------------------------------------------------------------------------
|
||||
; This file is part of the C51 Compiler package
|
||||
; Copyright (c) 1988-2005 Keil Elektronik GmbH and Keil Software, Inc.
|
||||
; Version 8.01
|
||||
;
|
||||
; *** <<< Use Configuration Wizard in Context Menu >>> ***
|
||||
;------------------------------------------------------------------------------
|
||||
; STARTUP.A51: This code is executed after processor reset.
|
||||
;
|
||||
; To translate this file use A51 with the following invocation:
|
||||
;
|
||||
; A51 STARTUP.A51
|
||||
;
|
||||
; To link the modified STARTUP.OBJ file to your application use the following
|
||||
; Lx51 invocation:
|
||||
;
|
||||
; Lx51 your object file list, STARTUP.OBJ controls
|
||||
;
|
||||
;------------------------------------------------------------------------------
|
||||
;
|
||||
; User-defined <h> Power-On Initialization of Memory
|
||||
;
|
||||
; With the following EQU statements the initialization of memory
|
||||
; at processor reset can be defined:
|
||||
;
|
||||
; <o> IDATALEN: IDATA memory size <0x0-0x100>
|
||||
; <i> Note: The absolute start-address of IDATA memory is always 0
|
||||
; <i> The IDATA space overlaps physically the DATA and BIT areas.
|
||||
IDATALEN EQU 100H
|
||||
;
|
||||
; <o> XDATASTART: XDATA memory start address <0x0-0xFFFF>
|
||||
; <i> The absolute start address of XDATA memory
|
||||
XDATASTART EQU 0
|
||||
;
|
||||
; <o> XDATALEN: XDATA memory size <0x0-0xFFFF>
|
||||
; <i> The length of XDATA memory in bytes.
|
||||
XDATALEN EQU 0;300H;TP3315
|
||||
;
|
||||
; <o> PDATASTART: PDATA memory start address <0x0-0xFFFF>
|
||||
; <i> The absolute start address of PDATA memory
|
||||
PDATASTART EQU 0H
|
||||
;
|
||||
; <o> PDATALEN: PDATA memory size <0x0-0xFF>
|
||||
; <i> The length of PDATA memory in bytes.
|
||||
PDATALEN EQU 0H
|
||||
;
|
||||
;</h>
|
||||
;------------------------------------------------------------------------------
|
||||
;
|
||||
;<h> Reentrant Stack Initialization
|
||||
;
|
||||
; The following EQU statements define the stack pointer for reentrant
|
||||
; functions and initialized it:
|
||||
;
|
||||
; <h> Stack Space for reentrant functions in the SMALL model.
|
||||
; <q> IBPSTACK: Enable SMALL model reentrant stack
|
||||
; <i> Stack space for reentrant functions in the SMALL model.
|
||||
IBPSTACK EQU 0 ; set to 1 if small reentrant is used.
|
||||
; <o> IBPSTACKTOP: End address of SMALL model stack <0x0-0xFF>
|
||||
; <i> Set the top of the stack to the highest location.
|
||||
IBPSTACKTOP EQU 0xFF +1 ; default 0FFH+1
|
||||
; </h>
|
||||
;
|
||||
; <h> Stack Space for reentrant functions in the LARGE model.
|
||||
; <q> XBPSTACK: Enable LARGE model reentrant stack
|
||||
; <i> Stack space for reentrant functions in the LARGE model.
|
||||
XBPSTACK EQU 0 ; set to 1 if large reentrant is used.
|
||||
; <o> XBPSTACKTOP: End address of LARGE model stack <0x0-0xFFFF>
|
||||
; <i> Set the top of the stack to the highest location.
|
||||
XBPSTACKTOP EQU 0xFFFF +1 ; default 0FFFFH+1
|
||||
; </h>
|
||||
;
|
||||
; <h> Stack Space for reentrant functions in the COMPACT model.
|
||||
; <q> PBPSTACK: Enable COMPACT model reentrant stack
|
||||
; <i> Stack space for reentrant functions in the COMPACT model.
|
||||
PBPSTACK EQU 0 ; set to 1 if compact reentrant is used.
|
||||
;
|
||||
; <o> PBPSTACKTOP: End address of COMPACT model stack <0x0-0xFFFF>
|
||||
; <i> Set the top of the stack to the highest location.
|
||||
PBPSTACKTOP EQU 0xFF +1 ; default 0FFH+1
|
||||
; </h>
|
||||
;</h>
|
||||
;------------------------------------------------------------------------------
|
||||
;
|
||||
; Memory Page for Using the Compact Model with 64 KByte xdata RAM
|
||||
; <e>Compact Model Page Definition
|
||||
;
|
||||
; <i>Define the XDATA page used for PDATA variables.
|
||||
; <i>PPAGE must conform with the PPAGE set in the linker invocation.
|
||||
;
|
||||
; Enable pdata memory page initalization
|
||||
PPAGEENABLE EQU 0 ; set to 1 if pdata object are used.
|
||||
;
|
||||
; <o> PPAGE number <0x0-0xFF>
|
||||
; <i> uppermost 256-byte address of the page used for PDATA variables.
|
||||
PPAGE EQU 0
|
||||
;
|
||||
; <o> SFR address which supplies uppermost address byte <0x0-0xFF>
|
||||
; <i> most 8051 variants use P2 as uppermost address byte
|
||||
PPAGE_SFR DATA 0A0H
|
||||
;
|
||||
; </e>
|
||||
;------------------------------------------------------------------------------
|
||||
|
||||
; Standard SFR Symbols
|
||||
ACC DATA 0E0H
|
||||
B DATA 0F0H
|
||||
SP DATA 81H
|
||||
DPL DATA 82H
|
||||
DPH DATA 83H
|
||||
|
||||
|
||||
CKCON DATA 8EH;SYD
|
||||
|
||||
|
||||
NAME ?C_STARTUP
|
||||
|
||||
|
||||
?C_C51STARTUP SEGMENT CODE
|
||||
?STACK SEGMENT IDATA
|
||||
|
||||
RSEG ?STACK
|
||||
DS 1
|
||||
|
||||
EXTRN CODE (?C_START)
|
||||
PUBLIC ?C_STARTUP
|
||||
|
||||
CSEG AT 0
|
||||
?C_STARTUP: LJMP STARTUP1
|
||||
|
||||
RSEG ?C_C51STARTUP
|
||||
|
||||
STARTUP1:
|
||||
;MOV CLKPRE,#0;SYD
|
||||
MOV 0xFE,#0x72;TP3315
|
||||
MOV 0xFF,#0x00;TP3315
|
||||
MOV CKCON,#0;SYD
|
||||
IF 0
|
||||
IF IDATALEN <> 0
|
||||
|
||||
;MOV CLKPRE,#0;SYD
|
||||
;MOV CKCON,#0;SYD
|
||||
|
||||
MOV R0,#IDATALEN - 1
|
||||
CLR A
|
||||
IDATALOOP: MOV @R0,A
|
||||
DJNZ R0,IDATALOOP
|
||||
ENDIF
|
||||
ENDIF
|
||||
IF XDATALEN <> 0
|
||||
MOV DPTR,#XDATASTART
|
||||
MOV R7,#LOW (XDATALEN)
|
||||
IF (LOW (XDATALEN)) <> 0
|
||||
MOV R6,#(HIGH (XDATALEN)) +1
|
||||
ELSE
|
||||
MOV R6,#HIGH (XDATALEN)
|
||||
ENDIF
|
||||
CLR A
|
||||
XDATALOOP: MOVX @DPTR,A
|
||||
INC DPTR
|
||||
DJNZ R7,XDATALOOP
|
||||
DJNZ R6,XDATALOOP
|
||||
ENDIF
|
||||
|
||||
IF PPAGEENABLE <> 0
|
||||
MOV PPAGE_SFR,#PPAGE
|
||||
ENDIF
|
||||
|
||||
IF PDATALEN <> 0
|
||||
MOV R0,#LOW (PDATASTART)
|
||||
MOV R7,#LOW (PDATALEN)
|
||||
CLR A
|
||||
PDATALOOP: MOVX @R0,A
|
||||
INC R0
|
||||
DJNZ R7,PDATALOOP
|
||||
ENDIF
|
||||
|
||||
IF IBPSTACK <> 0
|
||||
EXTRN DATA (?C_IBP)
|
||||
|
||||
MOV ?C_IBP,#LOW IBPSTACKTOP
|
||||
ENDIF
|
||||
|
||||
IF XBPSTACK <> 0
|
||||
EXTRN DATA (?C_XBP)
|
||||
|
||||
MOV ?C_XBP,#HIGH XBPSTACKTOP
|
||||
MOV ?C_XBP+1,#LOW XBPSTACKTOP
|
||||
ENDIF
|
||||
|
||||
IF PBPSTACK <> 0
|
||||
EXTRN DATA (?C_PBP)
|
||||
MOV ?C_PBP,#LOW PBPSTACKTOP
|
||||
ENDIF
|
||||
|
||||
MOV SP,#?STACK-1
|
||||
|
||||
; This code is required if you use L51_BANK.A51 with Banking Mode 4
|
||||
;<h> Code Banking
|
||||
; <q> Select Bank 0 for L51_BANK.A51 Mode 4
|
||||
#if 0
|
||||
; <i> Initialize bank mechanism to code bank 0 when using L51_BANK.A51 with Banking Mode 4.
|
||||
EXTRN CODE (?B_SWITCH0)
|
||||
CALL ?B_SWITCH0 ; init bank mechanism to code bank 0
|
||||
#endif
|
||||
;</h>
|
||||
LJMP ?C_START
|
||||
|
||||
END
|
72
Tools/HEXBIN.bat
Normal file
72
Tools/HEXBIN.bat
Normal file
@ -0,0 +1,72 @@
|
||||
:: @File Name: HEXBIN.bat
|
||||
:: @Version : 1.0
|
||||
:: @Author : Alex-XU
|
||||
:: @Creat Date : 2023-03-30
|
||||
:: @Brief :
|
||||
:: 在keil中,生成hex、bin文件到 Out 文件夹中.
|
||||
:: 复制本文件到keil工程文件所在目录下(/Project目录下)
|
||||
:: 在keil 魔法棒USER里填写
|
||||
:: .\Out.bat $K !P @P
|
||||
:: $K hextobin转换工具位置 !P 工程名 @P 工程目录
|
||||
:: .\HEXBIN.bat .\Objects\hex2bin_TP.exe mcu \Objects\
|
||||
|
||||
::关闭显示
|
||||
@echo off
|
||||
::获取时间
|
||||
set year=%date:~0,4%
|
||||
set month=%date:~5,2%
|
||||
set day=%date:~8,2%
|
||||
set hour=%time:~0,2%
|
||||
set min=%time:~3,2%
|
||||
set sec=%time:~6,2%
|
||||
::创建输出文件夹 Out
|
||||
if exist .\..\Out (
|
||||
echo Out file exist
|
||||
) else (
|
||||
mkdir .\..\Out
|
||||
)
|
||||
|
||||
::设置hex2bin_TP.exe位置 ,\Objects\hex2bin_TP.exe
|
||||
set exe_location=%1
|
||||
::获取工程名 mcu.hex
|
||||
set project_name=%3
|
||||
::设置.hex文件所在目录路径\Objects\
|
||||
set crc_path=%2
|
||||
::设置.hex文件所在目录路径\Objects\
|
||||
set obj_path=%4
|
||||
::设置输出后的文件名
|
||||
set output_nameTmp=SY8835_EVB_%project_name%_%date:~0,4%_%date:~5,2%_%date:~8,2%_%time:~0,2%%time:~3,2%%time:~6,2%
|
||||
::如果hour小于10,会有空格,下面这句话可以除去字符串中的空格,并用0代替。
|
||||
set output_name=%output_nameTmp: =0%
|
||||
|
||||
::将bin文件生成到HEXBIN文件夹 >nul屏蔽成功命令 .\Objects\hex2bin_TP.exe .\Objects\mcu.hex .\Objects\bin.bin 3 0
|
||||
%exe_location% .%obj_path%%project_name%.hex .%obj_path%%output_name%.bin 16 0 >nul
|
||||
::将hex文件重命名
|
||||
ren .%obj_path%%project_name%.hex %output_name%.hex >nul
|
||||
|
||||
ECHO Add CRC16 At the end of the .bin file
|
||||
ECHO -------------------------------------
|
||||
|
||||
::SET SREC_PATH=D:\Keil_v5\SREC
|
||||
SET SREC_PATH=..\Tools\SREC
|
||||
|
||||
for /f %%i in ('dir /s /b .%obj_path%%output_name%.bin') do (
|
||||
set indexdx=%%~zi
|
||||
)
|
||||
|
||||
ECHO --- size= %indexdx% Bytes ---
|
||||
::计算程序CRC16校验和,并加在.bin文件最后
|
||||
ECHO %SREC_PATH%\srec_cat.exe .%obj_path%%output_name%.bin -Binary -crop 0 %indexdx% -CRC16_Big_Endian %indexdx% -XMODEM -o .%obj_path%%output_name%_crc.bin -Binary
|
||||
%SREC_PATH%\srec_cat.exe .%obj_path%%output_name%.bin -Binary -crop 0 %indexdx% -CRC16_Big_Endian %indexdx% -XMODEM -o .%obj_path%%output_name%_crc.bin -Binary
|
||||
|
||||
::获取软件CRC校验和以及版本号
|
||||
%crc_path% .%obj_path%%output_name%_crc.bin
|
||||
|
||||
del /q ..\Out\*.*
|
||||
::将hex文件复制到HEXBIN文件夹
|
||||
move .%obj_path%%output_name%.hex .\..\Out >nul
|
||||
move .%obj_path%%output_name%.bin .\..\Out >nul
|
||||
::del .%obj_path%%output_name%.hex
|
||||
::del .%obj_path%%output_name%.bin
|
||||
del .%obj_path%%output_name%_crc.bin
|
||||
move .%obj_path%%output_name%_crc(*.bin .\..\Out >nul
|
BIN
Tools/SREC/libgcc_s_seh-1.dll
Normal file
BIN
Tools/SREC/libgcc_s_seh-1.dll
Normal file
Binary file not shown.
BIN
Tools/SREC/libgcrypt-20.dll
Normal file
BIN
Tools/SREC/libgcrypt-20.dll
Normal file
Binary file not shown.
BIN
Tools/SREC/libgpg-error-0.dll
Normal file
BIN
Tools/SREC/libgpg-error-0.dll
Normal file
Binary file not shown.
BIN
Tools/SREC/libstdc++-6.dll
Normal file
BIN
Tools/SREC/libstdc++-6.dll
Normal file
Binary file not shown.
BIN
Tools/SREC/libwinpthread-1.dll
Normal file
BIN
Tools/SREC/libwinpthread-1.dll
Normal file
Binary file not shown.
BIN
Tools/SREC/srec_cat.exe
Normal file
BIN
Tools/SREC/srec_cat.exe
Normal file
Binary file not shown.
BIN
Tools/SREC/srec_cmp.exe
Normal file
BIN
Tools/SREC/srec_cmp.exe
Normal file
Binary file not shown.
BIN
Tools/SREC/srec_info.exe
Normal file
BIN
Tools/SREC/srec_info.exe
Normal file
Binary file not shown.
BIN
Tools/bin_crc.exe
Normal file
BIN
Tools/bin_crc.exe
Normal file
Binary file not shown.
BIN
Tools/hex2bin_TP.exe
Normal file
BIN
Tools/hex2bin_TP.exe
Normal file
Binary file not shown.
61
UsrDoc/HEXBIN.bat
Normal file
61
UsrDoc/HEXBIN.bat
Normal file
@ -0,0 +1,61 @@
|
||||
:: @File Name: HEXBIN.bat
|
||||
:: @Version : 1.0
|
||||
:: @Author : Alex-XU
|
||||
:: @Creat Date : 2023-03-30
|
||||
:: @Brief :
|
||||
:: 在keil中,生成hex、bin文件到 Out 文件夹中.
|
||||
:: 复制本文件到keil工程文件所在目录下(/Project目录下)
|
||||
:: 在keil 魔法棒USER里填写
|
||||
:: .\Out.bat $K !P @P
|
||||
:: $K hextobin转换工具位置 !P 工程名 @P 工程目录
|
||||
:: .\HEXBIN.bat .\Objects\hex2bin_TP.exe mcu \Objects\
|
||||
|
||||
|
||||
::关闭显示
|
||||
@echo off
|
||||
::获取时间
|
||||
set year=%date:~0,4%
|
||||
set month=%date:~5,2%
|
||||
set day=%date:~8,2%
|
||||
set hour=%time:~0,2%
|
||||
set min=%time:~3,2%
|
||||
set sec=%time:~6,2%
|
||||
::创建输出文件夹 Out
|
||||
if exist .\..\Out (
|
||||
echo exist
|
||||
) else (
|
||||
mkdir .\..\Out
|
||||
)
|
||||
|
||||
::设置hex2bin_TP.exe位置 ,\Objects\hex2bin_TP.exe
|
||||
set exe_location=%1
|
||||
::获取工程名 mcu.hex
|
||||
set project_name=%2
|
||||
::设置.hex文件所在目录路径\Objects\
|
||||
set obj_path=%3
|
||||
::设置输出后的文件名
|
||||
set output_name=TP3102_%project_name%_%year%_%month%_%day%_%hour%_%min%_%sec%
|
||||
|
||||
::将bin文件生成到HEXBIN文件夹 >nul屏蔽成功命令 .\Objects\hex2bin_TP.exe .\Objects\mcu.hex .\Objects\bin.bin 16 0
|
||||
%exe_location% .%obj_path%%project_name%.hex .%obj_path%%output_name%.bin 16 0 >nul
|
||||
::将hex文件重命名
|
||||
ren .%obj_path%%project_name%.hex %output_name%.hex >nul
|
||||
|
||||
ECHO Add CRC16 At the end of the .bin file
|
||||
ECHO -------------------------------------
|
||||
|
||||
SET SREC_PATH=D:\Keil_v5\SREC
|
||||
|
||||
for /f %%i in ('dir /s /b .%obj_path%%output_name%.bin') do (
|
||||
set indexdx=%%~zi
|
||||
)
|
||||
|
||||
ECHO --- size= %indexdx% Byte----
|
||||
|
||||
ECHO %SREC_PATH%\srec_cat.exe .%obj_path%%output_name%.bin.bin -Binary -crop 0 %indexdx% -CRC16_Big_Endian %indexdx% -XMODEM -o .%obj_path%%output_name%_crc.bin -Binary
|
||||
%SREC_PATH%\srec_cat.exe .%obj_path%%output_name%.bin -Binary -crop 0 %indexdx% -CRC16_Big_Endian %indexdx% -XMODEM -o .%obj_path%%output_name%_crc.bin -Binary
|
||||
|
||||
::将hex文件复制到HEXBIN文件夹
|
||||
move .%obj_path%%output_name%.hex .\..\Out >nul
|
||||
move .%obj_path%%output_name%.bin .\..\Out >nul
|
||||
move .%obj_path%%output_name%_crc.bin .\..\Out >nul
|
BIN
UsrDoc/Review问题待办.xls
Normal file
BIN
UsrDoc/Review问题待办.xls
Normal file
Binary file not shown.
BIN
UsrDoc/SY8833A软件开发说明文档.doc
Normal file
BIN
UsrDoc/SY8833A软件开发说明文档.doc
Normal file
Binary file not shown.
BIN
UsrDoc/SY8833A验证Checklist.xlsx
Normal file
BIN
UsrDoc/SY8833A验证Checklist.xlsx
Normal file
Binary file not shown.
BIN
UsrDoc/Vox双向通信/SY8831A VOX通讯协议-V1.0.docx
Normal file
BIN
UsrDoc/Vox双向通信/SY8831A VOX通讯协议-V1.0.docx
Normal file
Binary file not shown.
BIN
UsrDoc/Vox双向通信/SY8831A VOX通讯说明-V1.0.doc
Normal file
BIN
UsrDoc/Vox双向通信/SY8831A VOX通讯说明-V1.0.doc
Normal file
Binary file not shown.
BIN
UsrDoc/Vox双向通信/SY8831A 透传协议-V1.0.docx
Normal file
BIN
UsrDoc/Vox双向通信/SY8831A 透传协议-V1.0.docx
Normal file
Binary file not shown.
BIN
UsrDoc/Vox耳机相关功能状态.png
Normal file
BIN
UsrDoc/Vox耳机相关功能状态.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 642 KiB |
BIN
UsrDoc/Vox耳机相关功能状态思维导图.pdf
Normal file
BIN
UsrDoc/Vox耳机相关功能状态思维导图.pdf
Normal file
Binary file not shown.
BIN
UsrDoc/Vox耳机相关功能状态思维导图.xmind
Normal file
BIN
UsrDoc/Vox耳机相关功能状态思维导图.xmind
Normal file
Binary file not shown.
8
UsrDoc/readme.txt
Normal file
8
UsrDoc/readme.txt
Normal file
@ -0,0 +1,8 @@
|
||||
工程文件应包含以下全部或部分文件夹:
|
||||
UsrSrc:用户源文件,用来存放.c文件和其它源文件。main.c应放在这里;
|
||||
UsrInc:用户头文件,用来存放.h文件;
|
||||
UsrDoc:用户说明文档,用来存放用户在开发过程中书协的文档,包括软件开发说明、指令说明、版本更改说明等;
|
||||
Src:引用库的源文件;
|
||||
Inc:应用库的头文件;
|
||||
Lib:应用的库文件。
|
||||
Out:编译生成的烧写程序(烧录到芯片中的firmware)。
|
BIN
UsrDoc/功能测试/SY8833A Demo软件问题记录.xlsx
Normal file
BIN
UsrDoc/功能测试/SY8833A Demo软件问题记录.xlsx
Normal file
Binary file not shown.
BIN
UsrDoc/功能测试/SY8833A测试说明20230713).doc
Normal file
BIN
UsrDoc/功能测试/SY8833A测试说明20230713).doc
Normal file
Binary file not shown.
BIN
UsrDoc/功能测试/~$8833A测试说明20230713).doc
Normal file
BIN
UsrDoc/功能测试/~$8833A测试说明20230713).doc
Normal file
Binary file not shown.
BIN
UsrDoc/双向通讯项目/TWS项目双向通讯-德芯成(杰理).rar
Normal file
BIN
UsrDoc/双向通讯项目/TWS项目双向通讯-德芯成(杰理).rar
Normal file
Binary file not shown.
BIN
UsrDoc/双向通讯项目/TWS项目双向通讯-德芯成(杰理)/-德芯成-D2160 - 优化——2023-3-25.xlsx
Normal file
BIN
UsrDoc/双向通讯项目/TWS项目双向通讯-德芯成(杰理)/-德芯成-D2160 - 优化——2023-3-25.xlsx
Normal file
Binary file not shown.
Binary file not shown.
BIN
UsrDoc/双向通讯项目/TWS项目双向通讯-德芯成(杰理)/DXC_D2160 _P94_T0.8_V1.0数显板.pcb
Normal file
BIN
UsrDoc/双向通讯项目/TWS项目双向通讯-德芯成(杰理)/DXC_D2160 _P94_T0.8_V1.0数显板.pcb
Normal file
Binary file not shown.
57154
UsrDoc/双向通讯项目/TWS项目双向通讯-德芯成(杰理)/P98-1128(1).dxf
Normal file
57154
UsrDoc/双向通讯项目/TWS项目双向通讯-德芯成(杰理)/P98-1128(1).dxf
Normal file
File diff suppressed because it is too large
Load Diff
BIN
UsrDoc/双向通讯项目/TWS项目双向通讯-德芯成(杰理)/杰理充电仓与耳机通信协议v4.0.doc
Normal file
BIN
UsrDoc/双向通讯项目/TWS项目双向通讯-德芯成(杰理)/杰理充电仓与耳机通信协议v4.0.doc
Normal file
Binary file not shown.
BIN
UsrDoc/双向通讯项目/TWS项目通讯资料-中科蓝讯.zip
Normal file
BIN
UsrDoc/双向通讯项目/TWS项目通讯资料-中科蓝讯.zip
Normal file
Binary file not shown.
BIN
UsrDoc/双向通讯项目/TWS项目通讯资料/单向通讯/中科测试报告_UI 2023.11.15.xlsx
Normal file
BIN
UsrDoc/双向通讯项目/TWS项目通讯资料/单向通讯/中科测试报告_UI 2023.11.15.xlsx
Normal file
Binary file not shown.
BIN
UsrDoc/双向通讯项目/TWS项目通讯资料/单向通讯/中科蓝讯协议_DC5V 控制协议.xlsx
Normal file
BIN
UsrDoc/双向通讯项目/TWS项目通讯资料/单向通讯/中科蓝讯协议_DC5V 控制协议.xlsx
Normal file
Binary file not shown.
BIN
UsrDoc/双向通讯项目/TWS项目通讯资料/双向串口通讯/中科测试报告 2023.9.1.xlsx
Normal file
BIN
UsrDoc/双向通讯项目/TWS项目通讯资料/双向串口通讯/中科测试报告 2023.9.1.xlsx
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
UsrDoc/双向通讯项目/小米/b37bb9a93d085d36e46ecb9f0950019.png
Normal file
BIN
UsrDoc/双向通讯项目/小米/b37bb9a93d085d36e46ecb9f0950019.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 202 KiB |
BIN
UsrDoc/双向通讯项目/小米/~$充电盒指令集.xlsx
Normal file
BIN
UsrDoc/双向通讯项目/小米/~$充电盒指令集.xlsx
Normal file
Binary file not shown.
BIN
UsrDoc/双向通讯项目/小米/充电盒指令集.xlsx
Normal file
BIN
UsrDoc/双向通讯项目/小米/充电盒指令集.xlsx
Normal file
Binary file not shown.
BIN
UsrDoc/双向通讯项目/小米/小米双向通信内容.png
Normal file
BIN
UsrDoc/双向通讯项目/小米/小米双向通信内容.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 24 KiB |
18
UsrDoc/双向通讯项目/小米/问题列表.txt
Normal file
18
UsrDoc/双向通讯项目/小米/问题列表.txt
Normal file
@ -0,0 +1,18 @@
|
||||
1、通讯协议的具体数据格式,如:Header + Side + CMD + ......
|
||||
2、盒子 -> 耳机和耳机 -> 盒子通讯协议的差异?Header不同?
|
||||
3、灯显LED个数;
|
||||
4、各个触发动作,如Key按下、Hall触发,对应的显示灯效;
|
||||
5、各条协议通讯完成后相应的灯效;
|
||||
6、各条协议通讯的具体功能逻辑,什么条件下发,收到耳机的回复后仓需要的动作等。
|
||||
如,盒子收到配对指令指令后,对应的配对数据需要显示的灯效。
|
||||
7、其它重要的需要实现的功能。如呼吸灯、潮汐充、跟随充等。
|
||||
8、盒子电池电量的精度;
|
||||
9、pattern如何发?格式?
|
||||
10、心跳包如何发?间隔多久发一次?发多少次?
|
||||
11、交互地址的具体逻辑。和oppo的一样?
|
||||
12、充电流程的管理逻辑(阶段充?);
|
||||
13、放电流程的管理逻辑(跟随充?);
|
||||
14、NTC逻辑;
|
||||
15、SN码怎么处理?具体应用;
|
||||
16、复位功能的要求;
|
||||
17、出厂运输和用户常规使用时,功耗控制方面分别啥要求,如何处理?
|
BIN
UsrDoc/电量计/电压型电量计原理和应用.pptx
Normal file
BIN
UsrDoc/电量计/电压型电量计原理和应用.pptx
Normal file
Binary file not shown.
BIN
UsrDoc/程序流程图/VOX耳机识别流程图.vsdx
Normal file
BIN
UsrDoc/程序流程图/VOX耳机识别流程图.vsdx
Normal file
Binary file not shown.
BIN
UsrDoc/软件各个功能模块占用内存大小.xlsx
Normal file
BIN
UsrDoc/软件各个功能模块占用内存大小.xlsx
Normal file
Binary file not shown.
BIN
UsrDoc/软件说明.doc
Normal file
BIN
UsrDoc/软件说明.doc
Normal file
Binary file not shown.
113
UsrInc/adc/adc.h
Normal file
113
UsrInc/adc/adc.h
Normal file
@ -0,0 +1,113 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
*
|
||||
* @file adc.h
|
||||
* @brief adc module
|
||||
* @ic sy8835
|
||||
*
|
||||
* @version 1.0
|
||||
* @date 2024/11/01 09:59:40
|
||||
* @author Alex Xu
|
||||
*
|
||||
* Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
* All Rights Reserved
|
||||
*
|
||||
* History:
|
||||
* Revision Date Author Desc
|
||||
* 1.0.0 2024/11/01 Alex build this file
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef __ADC_H__
|
||||
#define __ADC_H__
|
||||
/*_____ I N C L U D E S ____________________________________________________*/
|
||||
|
||||
#include "define.h"
|
||||
|
||||
#if ADC_ENABLE
|
||||
/******************************************************************************\
|
||||
Macro definitions
|
||||
\******************************************************************************/
|
||||
|
||||
#define VREF 1000
|
||||
|
||||
/******************************************************************************\
|
||||
Variables definitions
|
||||
\******************************************************************************/
|
||||
extern uint8_t ADC_Chn_Num;
|
||||
|
||||
extern idata uint16_t Vbat_Adc;
|
||||
|
||||
extern idata uint16_t g_Vpmu_Adc;
|
||||
|
||||
extern idata uint16_t g_Vntc_Adc;
|
||||
|
||||
extern idata uint16_t g_Vbjt_Adc;
|
||||
|
||||
extern idata uint16_t g_Vp13_Adc;
|
||||
|
||||
extern idata uint16_t g_Vref_Adc;
|
||||
|
||||
extern uint8_t g_PMU_ADC_Chn;
|
||||
|
||||
extern idata uint16_t g_pmu_Adc_Ivol;
|
||||
|
||||
extern idata uint16_t g_pmu_Adc_Vin;
|
||||
|
||||
extern idata uint16_t g_pmu_Adc_Vpmid;
|
||||
|
||||
extern idata uint16_t g_pmu_Adc_Vor;
|
||||
|
||||
extern idata uint16_t g_pmu_Adc_Vol;
|
||||
|
||||
extern idata uint16_t g_pmu_Adc_Vdd;
|
||||
|
||||
extern idata uint16_t g_pmu_Adc_Ivor;
|
||||
|
||||
typedef enum {
|
||||
|
||||
ADC_PMU_CH0 = 0x00,
|
||||
|
||||
ADC_NTC_CH1,
|
||||
|
||||
ADC_BJT_CH2,
|
||||
|
||||
ADC_P13_CH3,
|
||||
|
||||
ADC_VREF_CH4,
|
||||
|
||||
}ADC_CHANNELS_E;
|
||||
|
||||
typedef enum {
|
||||
|
||||
pmu_ADC_IVOL = 0x00,
|
||||
|
||||
pmu_ADC_VBAT, //vbat的2分压
|
||||
|
||||
pmu_ADC_VIN, //vin的8分压
|
||||
|
||||
pmu_ADC_VPMID, //PMID的4分压
|
||||
|
||||
pmu_ADC_VOR, //vor的4分压
|
||||
|
||||
pmu_ADC_VOL, //vol的4分压
|
||||
|
||||
pmu_ADC_VDD, //vdd的2分压
|
||||
|
||||
pmu_ADC_IVOR,
|
||||
|
||||
pmu_ADC_MAX,
|
||||
|
||||
}PMU_ADC_CHANNELS_E;
|
||||
|
||||
/******************************************************************************\
|
||||
Functions definitions
|
||||
\******************************************************************************/
|
||||
extern void Adc_Init(void);
|
||||
|
||||
extern void PMU_ADC_Chn_Data(PMU_ADC_CHANNELS_E pmu_Adc_Chn);
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
62
UsrInc/bat/bat.h
Normal file
62
UsrInc/bat/bat.h
Normal file
@ -0,0 +1,62 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
*
|
||||
* @file bat.h
|
||||
* @brief bat module
|
||||
* @ic sy8835
|
||||
*
|
||||
* @version 1.0
|
||||
* @date 2024/11/01 09:59:40
|
||||
* @author Alex Xu
|
||||
*
|
||||
* Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
* All Rights Reserved
|
||||
*
|
||||
* History:
|
||||
* Revision Date Author Desc
|
||||
* 1.0.0 2024/11/01 Alex build this file
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef __BAT_H__
|
||||
#define __BAT_H__
|
||||
/*_____ I N C L U D E S ____________________________________________________*/
|
||||
|
||||
#include "define.h"
|
||||
|
||||
/******************************************************************************\
|
||||
Macro definitions
|
||||
\******************************************************************************/
|
||||
|
||||
/******************************************************************************\
|
||||
Variables definitions
|
||||
\******************************************************************************/
|
||||
|
||||
extern idata uint8_t bat_level;
|
||||
extern idata uint8_t bat_level_Pec;
|
||||
|
||||
extern bit F_batlevel_low; //电池低压
|
||||
extern bit F_batlevel_protect; //低电保护
|
||||
|
||||
|
||||
#if GAUGE_ENABLE
|
||||
|
||||
extern uint8 SOC_report; //上报的SOC值,结合库仑计信息和SOC_int/SOC_dsg之间
|
||||
|
||||
extern void Bat_Cal_Init(void);
|
||||
|
||||
extern void Bat_Gauge_Handle(void);
|
||||
|
||||
#endif
|
||||
|
||||
#if BAT_VALUE
|
||||
|
||||
/******************************************************************************\
|
||||
Functions definitions
|
||||
\******************************************************************************/
|
||||
|
||||
extern void check_bat_level(void);
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
84
UsrInc/charger/charger_module.h
Normal file
84
UsrInc/charger/charger_module.h
Normal file
@ -0,0 +1,84 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
*
|
||||
* @file Charger_module.h
|
||||
* @brief charger module
|
||||
* @ic sy8835
|
||||
*
|
||||
* @version 1.0
|
||||
* @date 2024/11/01 09:59:40
|
||||
* @author Alex Xu
|
||||
*
|
||||
* Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
* All Rights Reserved
|
||||
*
|
||||
* History:
|
||||
* Revision Date Author Desc
|
||||
* 1.0.0 2024/11/01 Alex build this file
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef __CHARGER_MODULE_H__
|
||||
#define __CHARGER_MODULE_H__
|
||||
|
||||
#include "define.h"
|
||||
|
||||
extern bit Charger_Done;
|
||||
|
||||
#ifdef NTC_ENABLE
|
||||
extern bit NTC_Pro_Flag;
|
||||
#endif
|
||||
// 充电状态定义
|
||||
typedef enum
|
||||
{
|
||||
CHG_NONE=0x00,
|
||||
CHG_STA_ING, // 充电中
|
||||
CHG_STA_COMPLETED, // 充电完成
|
||||
CHG_STA_PULLOUT, // 充电器拔出
|
||||
|
||||
} TE_CHG_STA;
|
||||
|
||||
extern idata TE_CHG_STA ChgStatus; // 系统状态定义
|
||||
|
||||
#if CHARGER_ENABLE
|
||||
|
||||
|
||||
|
||||
/* Charger Current Setting */
|
||||
typedef struct {
|
||||
uint8_t nTrickle_Cur; //Set Trickle Current Trickle charge 电流配置,step 10mA;
|
||||
uint8_t nConstant_Cur; //Set Constant Current 恒流 cc 电流配置,step 25mA:
|
||||
uint8_t nIterm_Cur; //Set Iterm Current iterm charge 电流配置(范围:5mA ~ 50mA ,step 5mA)
|
||||
uint8_t nVFloat;
|
||||
} s_gCharger_Cfg;
|
||||
|
||||
/*充电电流设置,在系统初始化时通过配置寄存器REG_CHG1配置。
|
||||
|
||||
REG_CHG1 = CHG_CURRENT_300MA;
|
||||
|
||||
*/
|
||||
#define CHG_CURRENT_100MA 0x00
|
||||
#define CHG_CURRENT_200MA 0x01
|
||||
#define CHG_CURRENT_250MA 0x02
|
||||
#define CHG_CURRENT_300MA 0x03
|
||||
#define CHG_CURRENT_350MA 0x04
|
||||
#define CHG_CURRENT_400MA 0x05
|
||||
#define CHG_CURRENT_450MA 0x06
|
||||
#define CHG_CURRENT_500MA 0x07
|
||||
|
||||
#define CHG_CONSTANT_CUR_TIM 1
|
||||
|
||||
#define DIE_OT_RECOVER_TIM 25 //NTC保护后,恢复正常后等待250ms重新开启充电
|
||||
|
||||
extern void Charger_Init(void);
|
||||
|
||||
extern void Charger_Handler(void);
|
||||
|
||||
#ifdef NTC_ENABLE
|
||||
extern uint8_t PMU_NTC_Handle(uint8_t Charge_sta);
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
42
UsrInc/discharge/discharge_module.h
Normal file
42
UsrInc/discharge/discharge_module.h
Normal file
@ -0,0 +1,42 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
*
|
||||
* @file discharge_module.h
|
||||
* @brief discharge module
|
||||
* @ic sy8835
|
||||
*
|
||||
* @version 1.0
|
||||
* @date 2024/11/01 09:59:40
|
||||
* @author Alex Xu
|
||||
*
|
||||
* Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
* All Rights Reserved
|
||||
*
|
||||
* History:
|
||||
* Revision Date Author Desc
|
||||
* 1.0.0 2024/11/01 Alex build this file
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef __DISCHARGE_MODULE_H__
|
||||
#define __DISCHARGE_MODULE_H__
|
||||
|
||||
#include "define.h"
|
||||
|
||||
extern bit gBoost_Prepared_Flag; //BoostÂú×㿪ÆôÌõ¼þ¡£
|
||||
|
||||
#if DISCHARGE_ENABLE
|
||||
|
||||
#define BOOST_OPEN_TIM 10
|
||||
|
||||
#if 0
|
||||
extern void DisCharge_Boost_Open(void);
|
||||
extern void DisCharge_Boost_Close(void);
|
||||
#endif
|
||||
|
||||
extern void DisCharge_Handler(void);
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
33
UsrInc/gpio/gpio.h
Normal file
33
UsrInc/gpio/gpio.h
Normal file
@ -0,0 +1,33 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
*
|
||||
* @file gpio.h
|
||||
* @brief gpio module
|
||||
* @ic sy8835
|
||||
*
|
||||
* @version 1.0
|
||||
* @date 2024/11/01 09:59:40
|
||||
* @author Alex Xu
|
||||
*
|
||||
* Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
* All Rights Reserved
|
||||
*
|
||||
* History:
|
||||
* Revision Date Author Desc
|
||||
* 1.0.0 2024/11/01 Alex build this file
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef __GPIO_H__
|
||||
#define __GPIO_H__
|
||||
|
||||
#include "define.h"
|
||||
|
||||
|
||||
//extern void GPIO_Init(void);
|
||||
//extern void Enter_ShipMode(void);
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
|
59
UsrInc/hall/hall.h
Normal file
59
UsrInc/hall/hall.h
Normal file
@ -0,0 +1,59 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
*
|
||||
* @file hall.h
|
||||
* @brief hall module
|
||||
* @ic sy8835
|
||||
*
|
||||
* @version 1.0
|
||||
* @date 2024/11/01 09:59:40
|
||||
* @author Alex Xu
|
||||
*
|
||||
* Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
* All Rights Reserved
|
||||
*
|
||||
* History:
|
||||
* Revision Date Author Desc
|
||||
* 1.0.0 2024/11/01 Alex build this file
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef __HALL_H__
|
||||
#define __HALL_H__
|
||||
|
||||
/*_____ I N C L U D E S ____________________________________________________*/
|
||||
|
||||
#include "define.h"
|
||||
|
||||
/******************************************************************************\
|
||||
Macro definitions
|
||||
\******************************************************************************/
|
||||
|
||||
/******************************************************************************\
|
||||
Variables definitions
|
||||
\******************************************************************************/
|
||||
|
||||
typedef enum{
|
||||
|
||||
CLOSE = 0,
|
||||
OPEN = !CLOSE
|
||||
|
||||
} CoverStatus_E;
|
||||
|
||||
extern CoverStatus_E CoverStatus;
|
||||
|
||||
extern bit CoverEvent_Flg;
|
||||
extern bit CoverEvent_Flg_led;
|
||||
#if HALL_ENABLE
|
||||
|
||||
/******************************************************************************\
|
||||
Functions definitions
|
||||
\******************************************************************************/
|
||||
|
||||
//extern void Hall_Init(void);
|
||||
extern void Hall_Handler(void);
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
97
UsrInc/i2c_simu/i2c_simu.h
Normal file
97
UsrInc/i2c_simu/i2c_simu.h
Normal file
@ -0,0 +1,97 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
*
|
||||
* @file i2c_simu.h
|
||||
* @brief i2c gpio simu module
|
||||
* @ic sy8835
|
||||
*
|
||||
* @version 1.0
|
||||
* @date 2024/10/31 09:59:40
|
||||
* @author Alex Xu
|
||||
*
|
||||
* Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
* All Rights Reserved
|
||||
*
|
||||
* History:
|
||||
* Revision Date Author Desc
|
||||
* 1.0.0 2024/10/31 Alex Xu build this file
|
||||
******************************************************************************
|
||||
*/
|
||||
#ifndef __I2C_SIMU_H__
|
||||
#define __I2C_SIMU_H__
|
||||
|
||||
/*_____ I N C L U D E S ____________________________________________________*/
|
||||
#include "define.h"
|
||||
|
||||
#if GPIO_I2C_SIMULATE
|
||||
|
||||
#include "intrins.h"
|
||||
|
||||
/******************************************************************************\
|
||||
Macro definitions
|
||||
\******************************************************************************/
|
||||
|
||||
sbit pin_i2c_scl = P0^0;
|
||||
#define _pin_i2c_scl_config() do{ pin_i2c_scl = 1;\
|
||||
SFRADDR = P0_OE; SFRDATA |= (0x01<<0);/* output enable*/ \
|
||||
SFRADDR = P0_IE; SFRDATA |= (0x01<<0);/* input enable*/ \
|
||||
SFRADDR = P0_OD; SFRDATA |= (0x01<<0);/* open drain enable*/ \
|
||||
}while(0);
|
||||
|
||||
sbit pin_i2c_sda = P0^1;
|
||||
#define _pin_i2c_sda_config() do{ pin_i2c_sda = 1;\
|
||||
SFRADDR = P0_OE; SFRDATA |= (0x01<<1);/* output enable*/ \
|
||||
SFRADDR = P0_IE; SFRDATA |= (0x01<<1);/* input enable*/ \
|
||||
SFRADDR = P0_OD; SFRDATA |= (0x01<<1);/* open drain enable*/ \
|
||||
}while(0);
|
||||
|
||||
|
||||
#define _I2C_SCL_H() do{pin_i2c_scl = 1;}while(0)
|
||||
#define _I2C_SCL_L() do{pin_i2c_scl = 0;}while(0)
|
||||
|
||||
#define _I2C_SDA_H() do{pin_i2c_sda = 1;}while(0)
|
||||
#define _I2C_SDA_L() do{pin_i2c_sda = 0;}while(0)
|
||||
|
||||
#define _READ_I2C_SCL() (pin_i2c_scl)
|
||||
#define _READ_I2C_SDA() (pin_i2c_sda)
|
||||
|
||||
#define I2C_SFR_ADDR 0x06
|
||||
|
||||
/******************************************************************************\
|
||||
Variables definitions
|
||||
\******************************************************************************/
|
||||
|
||||
#ifdef _DEBUG_ALL
|
||||
//#define __I2C_SIMU_DEBUG__
|
||||
#endif
|
||||
#define __I2C_SPEED_FAST__
|
||||
|
||||
extern idata bool F_I2C_SIMU_INIT;
|
||||
|
||||
extern idata bool F_I2C_SIMU_ERROR;
|
||||
|
||||
/******************************************************************************\
|
||||
Functions definitions
|
||||
\******************************************************************************/
|
||||
|
||||
void I2C_delay(void );
|
||||
|
||||
void I2C_GPIOInit(void);
|
||||
|
||||
bool I2C_Start(void);
|
||||
|
||||
void I2C_Stop(void);
|
||||
|
||||
void I2C_Ack(void);
|
||||
|
||||
void I2C_NoAck(void);
|
||||
|
||||
void I2C_WaitAck(void);
|
||||
|
||||
void I2C_SendByte(u8 SendByte);
|
||||
|
||||
unsigned char I2C_ReadByte(void);
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
181
UsrInc/inc/config.h
Normal file
181
UsrInc/inc/config.h
Normal file
@ -0,0 +1,181 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
*
|
||||
* @file Config.h
|
||||
* @brief Config module
|
||||
* @ic sy8835
|
||||
*
|
||||
* @version 1.0
|
||||
* @date 2024/11/01 09:59:40
|
||||
* @author Alex Xu
|
||||
*
|
||||
* Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
* All Rights Reserved
|
||||
*
|
||||
* History:
|
||||
* Revision Date Author Desc
|
||||
* 1.0.0 2024/11/01 Alex build this file
|
||||
******************************************************************************
|
||||
*/
|
||||
#ifndef __CONFIG_H__
|
||||
#define __CONFIG_H__
|
||||
|
||||
#include "define.h"
|
||||
|
||||
/******************************************************************************\
|
||||
Macro definitions
|
||||
\******************************************************************************/
|
||||
/*Charger Module Config Para Setting*/
|
||||
|
||||
#define BAT_CV 4200 //电池CV电压设置:4.20V
|
||||
#define BAT_PRE 3000 //电池涓流充电电压:3.0v
|
||||
#define BAT_RECHARG 4050 //电池复充电压:4200mv - 150mv = 4050mv
|
||||
|
||||
#define CHG_CURRENT_400MA 0x05
|
||||
|
||||
#if 1
|
||||
#if 0
|
||||
/*20uA 电流源下接 104K NTC(4250K) 电阻并联一个82K电阻后得到的电压值*/
|
||||
#define T_N20C 1530 //-20℃(76.5KΩ * 20uA) NTC:1151K
|
||||
|
||||
#define T_N15C 1495 //-15℃ 迟滞温度
|
||||
|
||||
#define T_N10C 1440 //-10℃(72KΩ * 20uA) NTC:629K
|
||||
|
||||
#define T_0C 1334 //-0℃(66.7KΩ * 20uA) NTC:357K
|
||||
|
||||
#define T_3C 1300
|
||||
|
||||
#define T_5C 1260
|
||||
|
||||
#define T_8C 1200
|
||||
|
||||
#define T_10C 1178 //10℃(58.9KΩ * 20uA) NTC:209.7K
|
||||
|
||||
#define T_12C 1100
|
||||
|
||||
#define T_15C 1050
|
||||
|
||||
#define T_18C 996
|
||||
|
||||
#define T_42C 580
|
||||
|
||||
#define T_45C 546 //45℃(27.3KΩ * 20uA) NTC:40.9K
|
||||
|
||||
#define T_47C 500
|
||||
|
||||
#define T_57C 370
|
||||
|
||||
#define T_60C 350 //60℃(17.5KΩ * 20uA) NTC:22.2K
|
||||
|
||||
#define T_75C 250
|
||||
|
||||
#define T_80C 188 //80℃(9.4KΩ * 20uA) NTC:10.6K
|
||||
#else
|
||||
/*20uA 电流源下接 104K NTC(4250K) 电阻并联一个100K电阻后得到的电压值*/
|
||||
#define T_N20C 1840 //-20℃(92KΩ * 20uA) NTC:1151K
|
||||
|
||||
#define T_N15C 1788 //-15℃(89.4KΩ * 20uA) NTC:846K
|
||||
|
||||
#define T_N10C 1724 //-10℃(86.2KΩ * 20uA) NTC:629K
|
||||
|
||||
#define T_0C 1562 //-0℃(78.1KΩ * 20uA) NTC:357K
|
||||
|
||||
#define T_3C 1502 //3℃(75.1KΩ * 20uA) NTC:303K
|
||||
|
||||
#define T_5C 1462 //5℃(73.1KΩ * 20uA) NTC:272K
|
||||
|
||||
#define T_8C 1396 //8℃(69.8KΩ * 20uA) NTC:232K
|
||||
|
||||
#define T_10C 1354 //10℃(67.7KΩ * 20uA) NTC:209.7K
|
||||
|
||||
#define T_12C 1308 //12℃(65.4KΩ * 20uA) NTC:189K
|
||||
|
||||
#define T_15C 1236 //15℃(61.8KΩ * 20uA) NTC:162K
|
||||
|
||||
#define T_18C 1166 //15℃(58.3KΩ * 20uA) NTC:140K
|
||||
|
||||
#define T_42C 634 //42℃(31.7KΩ * 20uA) NTC:46.5K
|
||||
|
||||
#define T_45C 580 //45℃(29 KΩ * 20uA) NTC:40.9K
|
||||
|
||||
#define T_47C 546 //47℃(27.3KΩ * 20uA) NTC:37.6K
|
||||
|
||||
#define T_48C 530
|
||||
|
||||
#define T_57C 400 //57℃(20 KΩ * 20uA) NTC:25K
|
||||
|
||||
#define T_60C 362 //60℃(18.1KΩ * 20uA) NTC:22.2K
|
||||
|
||||
#define T_75C 222 //75℃(11.1KΩ * 20uA) NTC:12.6K
|
||||
|
||||
#define T_80C 192 //80℃(9.6KΩ * 20uA) NTC:10.6K
|
||||
|
||||
#endif
|
||||
|
||||
#else
|
||||
/*20uA 电流源下接 104K NTC(3950K) 电阻并联一个82K电阻后得到的电压值*/
|
||||
#define T_N20C 1500 //-20℃(75.5KΩ * 20uA) NTC:953K
|
||||
|
||||
#define T_N17C 1488 //-17℃(74.4KΩ * 20uA) NTC:804K
|
||||
|
||||
#define T_N15C 1495 //-15℃(73.6KΩ * 20uA) NTC:719K
|
||||
|
||||
#define T_N13C 1454 //-13℃(72.7KΩ * 20uA) NTC:644K
|
||||
|
||||
#define T_N10C 1420 //-10℃(71KΩ * 20uA) NTC:547K
|
||||
|
||||
#define T_0C 1308 //-0℃(65.4KΩ * 20uA) NTC:325K
|
||||
|
||||
#define T_3C 1282 //3℃(64.1KΩ * 20uA) NTC:293K
|
||||
|
||||
#define T_5C 1238 //5℃(61.9KΩ * 20uA) NTC:253K
|
||||
|
||||
#define T_8C 1192 //8℃(59.6KΩ * 20uA) NTC:218K
|
||||
|
||||
#define T_10C 1158 //10℃(57.9KΩ * 20uA) NTC:198K
|
||||
|
||||
#define T_12C 1126 //12℃(56.3KΩ * 20uA) NTC:180K
|
||||
|
||||
#define T_15C 1076 //15℃(53.8KΩ * 20uA) NTC:157K
|
||||
|
||||
#define T_18C 1026 //18℃(51.3KΩ * 20uA) NTC:137K
|
||||
|
||||
#define T_42C 612 //42℃(30.6KΩ * 20uA) NTC:49K
|
||||
|
||||
#define T_45C 568 //45℃(28.4KΩ * 20uA) NTC:43.6K
|
||||
|
||||
#define T_47C 538 //47℃(26.9KΩ * 20uA) NTC:40K
|
||||
|
||||
#define T_57C 412 //57℃(20.6KΩ * 20uA) NTC:27.6K
|
||||
|
||||
#define T_60C 380 //60℃(19KΩ * 20uA) NTC:24.7K
|
||||
|
||||
#define T_75C 248 //75℃(12.4KΩ * 20uA) NTC:14.6K
|
||||
|
||||
#define T_80C 216 //80℃(10.8KΩ * 20uA) NTC:12.4K
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
/*Boost Module Config Para Setting*/
|
||||
#define OPEN_BOOST_VIN 3600 //Boost 发生uvlo保护后,在有VIN条件下,Boost再次恢复开启的电压(3.6V)。
|
||||
#define OPEN_BOOST_NOVIN 3300 //Boost 发生uvlo保护后,在无VIN条件下,Boost再次恢复开启的电压(3.3V)。
|
||||
|
||||
/*KEY And Hall Module Setting*/
|
||||
#define HALL_OPEN_LEV_SET 1 //配置是高电平为开盖还是低电平为开盖。1:高电平为开盖;0:低电平为开盖
|
||||
|
||||
/*Sleep Module Setting*/
|
||||
/*Enter Sleep Time Debounce*/
|
||||
//#define ENTER_STANDBYMODE_CNT 10 //进入Standby Mode 延迟时间,单位:秒
|
||||
|
||||
/******************************************************************************\
|
||||
Variables definitions
|
||||
\******************************************************************************/
|
||||
|
||||
/******************************************************************************\
|
||||
UserCfg.Functions definitions
|
||||
\******************************************************************************/
|
||||
|
||||
#endif
|
||||
|
157
UsrInc/inc/define.h
Normal file
157
UsrInc/inc/define.h
Normal file
@ -0,0 +1,157 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
*
|
||||
* @file define.h
|
||||
* @brief define module
|
||||
* @ic sy8835
|
||||
*
|
||||
* @version 1.0
|
||||
* @date 2024/11/01 09:59:40
|
||||
* @author Alex Xu
|
||||
*
|
||||
* Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
* All Rights Reserved
|
||||
*
|
||||
* History:
|
||||
* Revision Date Author Desc
|
||||
* 1.0.0 2024/11/01 Alex build this file
|
||||
******************************************************************************
|
||||
*/
|
||||
#ifndef __DEFINE_H__
|
||||
#define __DEFINE_H__
|
||||
|
||||
#include "config.h"
|
||||
|
||||
/*Function Select,功能选择宏定义*/
|
||||
|
||||
#define TIMER1_ENABLE 0 //Timer1 定时周期1ms。(120Bytes)
|
||||
|
||||
#define UART0_ENABLE 1 //UART0功能。(133Bytes)
|
||||
|
||||
#define UART1_ENABLE 0 //UART1功能
|
||||
|
||||
#define UART2_ENABLE 1 //UART2功能
|
||||
|
||||
#define WTG_ENABLE 0 //看门狗功能使能(7Bytes)
|
||||
|
||||
#define LED_DISPLAY //LED显示 ,4个灯显示 (1125Bytes)
|
||||
|
||||
#ifdef LED_DISPLAY
|
||||
|
||||
#define PWM_ENABLE //PWM功能,用于呼吸灯(719Bytes)
|
||||
|
||||
#endif
|
||||
|
||||
#define GPIO_I2C_SIMULATE 1 //GPIO 模拟 I2C接口
|
||||
|
||||
#define HALL_ENABLE 1 //Hall功能。(Hall 46Bytes)
|
||||
|
||||
#define KEY_ENABLE 1 //Key功能(111Bytes)
|
||||
|
||||
#define VOX_ENABLE 1 //1080Bytes
|
||||
|
||||
#define VOX_FOLLOW_CHG 0
|
||||
|
||||
#if VOX_ENABLE
|
||||
|
||||
#define VOX_TX //959Bytes
|
||||
|
||||
#define VOX_TX_RST_PATTERN //BES Reset Pattern (118Bytes)
|
||||
|
||||
#define VOX_RX //739Bytes
|
||||
|
||||
#endif
|
||||
|
||||
#define CHARGER_ENABLE 1 //94Bytes
|
||||
|
||||
#define DISCHARGE_ENABLE 1 //75Bytes
|
||||
|
||||
#define SLEEP_ENABLE 1 //110Bytes
|
||||
|
||||
#define ADC_ENABLE 1 //587Bytes
|
||||
|
||||
#if ADC_ENABLE
|
||||
|
||||
#define NTC_JEITA 1
|
||||
|
||||
#define NTC_IEC 0
|
||||
|
||||
//#define NTC_ENABLE //513Bytes JEITA
|
||||
|
||||
#endif
|
||||
|
||||
#define GAUGE_ENABLE 0 //2001Bytes
|
||||
|
||||
#define BAT_VALUE 1 //171Bytes
|
||||
|
||||
#define _DEBUG_ALL //打开打印功能
|
||||
|
||||
#ifdef _DEBUG_ALL
|
||||
|
||||
#define _DEBUG_MAIN
|
||||
#define _DEBUG_PMU
|
||||
#define _DEBUG_KEY
|
||||
#define _DEBUG_VOX
|
||||
#define _DEBUG_HALL
|
||||
// #define _DEBUG_ADC
|
||||
// #define _DEBUG_DISCHARGE
|
||||
// #define _DEBUG_CHARGER
|
||||
#define _DEBUG_SLEEP
|
||||
#define _DEBUG_BAT
|
||||
|
||||
//#define TEST_MODE
|
||||
|
||||
#include "stdio.h"
|
||||
#include "string.h"
|
||||
|
||||
#endif
|
||||
|
||||
#define HIBYTE(v1) ((uint8_t)((v1)>>8)) //v1 is uint16_t
|
||||
#define LOBYTE(v1) ((uint8_t)((v1)&0xFF))
|
||||
|
||||
typedef bit BIT;
|
||||
typedef unsigned char uint8_t;
|
||||
typedef unsigned int uint16_t;
|
||||
typedef unsigned long uint32_t;
|
||||
|
||||
typedef unsigned char uint8;
|
||||
typedef unsigned int uint16;
|
||||
typedef unsigned long uint32;
|
||||
|
||||
typedef signed char int8_t;
|
||||
typedef signed int int16_t;
|
||||
typedef signed long int32_t;
|
||||
|
||||
typedef signed char int8;
|
||||
typedef signed int int16;
|
||||
typedef signed long int32;
|
||||
|
||||
typedef signed char s8;
|
||||
typedef unsigned char u8;
|
||||
typedef signed short int s16;
|
||||
typedef unsigned short int u16;
|
||||
typedef signed long int s32;
|
||||
typedef unsigned long int u32;
|
||||
|
||||
typedef enum{false = 0, true = !false} bool;
|
||||
|
||||
#define FALSE false
|
||||
#define TRUE true
|
||||
#define ON true
|
||||
#define OFF false
|
||||
|
||||
#ifdef XIAOMI
|
||||
#include "stdlib.h"
|
||||
#endif
|
||||
|
||||
#include "reg3315.h"
|
||||
|
||||
#include "uart.h"
|
||||
|
||||
#include "pmu.h"
|
||||
#include "user.h"
|
||||
|
||||
#include "charger_module.h"
|
||||
|
||||
#endif
|
||||
|
306
UsrInc/inc/reg3315.h
Normal file
306
UsrInc/inc/reg3315.h
Normal file
@ -0,0 +1,306 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
*
|
||||
* @file reg3315.h
|
||||
* @brief Header file for TP3315 microcontroller.
|
||||
* @ic sy8835
|
||||
*
|
||||
* @version 1.0
|
||||
* @date 2024/11/01 10:59:40
|
||||
* @author Alex Xu
|
||||
*
|
||||
* Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
* All Rights Reserved
|
||||
*
|
||||
* History:
|
||||
* Revision Date Author Desc
|
||||
* 1.0.0 2024/11/01 Alex Xu build this file
|
||||
******************************************************************************
|
||||
*/
|
||||
#ifndef __REG3315_H__
|
||||
#define __REG3315_H__
|
||||
|
||||
/*-------------------------PMU Registers------------------------------*/
|
||||
|
||||
#define FAULT_STA0 0x10
|
||||
#define FAULT_STA1 0x11
|
||||
#define FAULT_STA2 0x12
|
||||
|
||||
#define CHIP_STA 0x13
|
||||
#define VOX_STA 0x14
|
||||
|
||||
#define VDPM_VDD_CHG_EN 0x20
|
||||
#define CHG_VFLOAT_SET 0x21
|
||||
#define CHG_ICC_SET 0x22
|
||||
#define CHG_ITC_ITERM_SET 0x23
|
||||
#define CHG_VPMID_SET 0x25
|
||||
|
||||
#define WDT1_CFG 0x26
|
||||
#define WDT1_RST 0x5A
|
||||
|
||||
#define BST_COMM_EN 0x27
|
||||
#define VOX_CFG 0x37
|
||||
|
||||
#define I2CR_RST_CFG 0x35
|
||||
|
||||
#define POWER_LED_CTRL0 0x39
|
||||
|
||||
#define XSEN_CTRL 0x31
|
||||
|
||||
#define IRQ_EN0 0x40
|
||||
#define IRQ_EN1 0x41
|
||||
|
||||
#define POWER_CTRL_CMD 0x4F
|
||||
|
||||
#define SOFT_DAT5 0x5C
|
||||
|
||||
/*------------------------ Ext SFR Registers -------------------------*/
|
||||
/*------ GPIO/MFP Registers ------*/
|
||||
#define P0_PU 0x00
|
||||
#define P0_PD 0x01
|
||||
#define P0_OD 0x02
|
||||
#define P0_IE 0x03
|
||||
#define P0_OE 0x04
|
||||
|
||||
#define P1_PU 0x07
|
||||
#define P1_PD 0x08
|
||||
#define P1_OD 0x09
|
||||
#define P1_IE 0x0A
|
||||
#define P1_OE 0x0B
|
||||
#define P1_DRV0 0x0C
|
||||
|
||||
#define MFP_CTL0 0x0E
|
||||
#define MFP_CTL1 0x0F
|
||||
|
||||
#define GPIO_INT_EN0 0x22
|
||||
#define GPIO_INT_EN1 0x23
|
||||
|
||||
sfr GPIO_FLAG0 = 0xE4;
|
||||
sfr GPIO_FLAG1 = 0xE5;
|
||||
|
||||
/*------ PWM Registers ------*/
|
||||
#define PWM_CTL 0x10
|
||||
#define PWM_PRE 0x11
|
||||
#define PWM_REL 0x12
|
||||
|
||||
sfr PWM0_CMP = 0xCE;
|
||||
sfr PWM1_CMP = 0xCF;
|
||||
sfr PWM2_CMP = 0xDE;
|
||||
sfr PWM3_CMP = 0xDF;
|
||||
|
||||
/*------ LED Registers ------*/
|
||||
#define LED_CTL 0x13
|
||||
|
||||
/*-------- ADC Registers --------*/
|
||||
#define ADC_CTL0 0x30
|
||||
sfr ADC_CTL1 =0xA3;
|
||||
sfr ADC_IntFlag =0xA4;
|
||||
#define ADC_CTL2 0x31
|
||||
#define ADC_IntEn 0x32
|
||||
#define ADC_CH0_L 0x35
|
||||
#define ADC_CH0_H 0x36
|
||||
#define ADC_CH1_L 0x37
|
||||
#define ADC_CH1_H 0x38
|
||||
#define ADC_CH2_L 0x39
|
||||
#define ADC_CH2_H 0x3A
|
||||
#define ADC_CH3_L 0x3B
|
||||
#define ADC_CH3_H 0x3C
|
||||
#define ADC_CH4_L 0x3D
|
||||
#define ADC_CH4_H 0x3E
|
||||
|
||||
/*-------- SYS Registers --------*/
|
||||
#define LDO08_CTL 0x50
|
||||
#define LDO15_CTL0 0x51
|
||||
#define LDO15_CTL1 0x52
|
||||
#define HOSC_TRIM 0x53
|
||||
#define CHIP_ID 0x70
|
||||
#define CHIP_VER 0x71
|
||||
#define CLKPRE 0x72
|
||||
#define RST_CFG 0x73
|
||||
#define IRQ_PIN_CFG 0x76
|
||||
#define LDREG_PW 0x7F
|
||||
sfr RST_FLAG = 0xE1;
|
||||
sfr IRQ_FLAG = 0xE2;
|
||||
sfr CHIP_STAT = 0xE3;
|
||||
sfr SRST = 0xF7;
|
||||
|
||||
sfr SFRADDR = 0xFE;
|
||||
sfr SFRDATA = 0xFF;
|
||||
/*------- FLASH Registers ------*/
|
||||
#define FLASH_STA0 0x60
|
||||
#define FLASH_STA1 0x61
|
||||
#define FLASH_STA2 0x62
|
||||
#define FLASH_CRCL 0x63
|
||||
#define FLASH_CRCH 0x64
|
||||
#define FLASH_INIT 0x65
|
||||
#define FLASH_INTF0 0x66
|
||||
#define FLASH_INTF1 0x67
|
||||
#define FLASH_DAT0 0x68
|
||||
#define FLASH_DAT1 0x69
|
||||
#define FLASH_DAT2 0x6A
|
||||
#define FLASH_DAT3 0x6B
|
||||
#define FLASH_ADDL 0x6C
|
||||
#define FLASH_ADDH 0x6D
|
||||
#define FLASH_OPTEN 0x6E
|
||||
#define FLASH_DAT_KEY 0x6F
|
||||
|
||||
//------------------------- SFR Registers ----------------------------
|
||||
/*--- BYTE Register ---*/
|
||||
sfr P0 = 0x80;
|
||||
sfr P1 = 0x90;
|
||||
sfr P2 = 0xA0;
|
||||
sfr P3 = 0xB0;
|
||||
sfr PSW = 0xD0;
|
||||
sfr ACC = 0xE0;
|
||||
sfr B = 0xF0;
|
||||
|
||||
sfr SP = 0x81;
|
||||
sfr DPL = 0x82;
|
||||
sfr DPH = 0x83;
|
||||
sfr DPL1 = 0x84;
|
||||
sfr DPH1 = 0x85;
|
||||
sfr WDTREL = 0x86;
|
||||
sfr PCON = 0x87;
|
||||
sfr TCON = 0x88;
|
||||
sfr TMOD = 0x89;
|
||||
sfr TL0 = 0x8A;
|
||||
sfr TL1 = 0x8B;
|
||||
sfr TH0 = 0x8C;
|
||||
sfr TH1 = 0x8D;
|
||||
sfr CKCON = 0x8E;
|
||||
sfr DPSEL = 0x92;
|
||||
sfr S2CON = 0x96;
|
||||
sfr S2BUF = 0x97;
|
||||
sfr S0CON = 0x98;
|
||||
sfr S0BUF = 0x99;
|
||||
sfr IEN2 = 0x9A;
|
||||
sfr S1CON = 0x9B;
|
||||
sfr S1BUF = 0x9C;
|
||||
sfr S1RELL = 0x9D;
|
||||
sfr S2RELL = 0x9E;
|
||||
sfr S2RELH = 0x9F;
|
||||
sfr S2IOCFG = 0xF1;
|
||||
|
||||
sfr ADC_CTRL1 = 0xA3;
|
||||
sfr ADC_INT_FLAG = 0xA4;
|
||||
|
||||
sfr OCP_CTL = 0xA7;
|
||||
|
||||
sfr IEN0 = 0xA8;
|
||||
sfr IP0 = 0xA9;
|
||||
sfr S0RELL = 0xAA;
|
||||
|
||||
sfr SOFT_DAT0 = 0xAB;
|
||||
sfr SOFT_DAT1 = 0xAC;
|
||||
sfr SOFT_DAT2 = 0xAD;
|
||||
sfr SOFT_DAT3 = 0xAE;
|
||||
sfr SOFT_DAT4 = 0xAF;
|
||||
|
||||
sfr IEN1 = 0xB8;
|
||||
sfr IP1 = 0xB9;
|
||||
sfr S0RELH = 0xBA;
|
||||
sfr S1RELH = 0xBB;
|
||||
sfr IRCON2 = 0xBF;
|
||||
|
||||
sfr IRCON = 0xC0;
|
||||
|
||||
sfr ADCON = 0xD8;
|
||||
|
||||
/*--- BIT Register ---*/
|
||||
/* PSW */
|
||||
sbit CY = 0xD7;
|
||||
sbit AC = 0xD6;
|
||||
sbit F0 = 0xD5;
|
||||
sbit RS1 = 0xD4;
|
||||
sbit RS0 = 0xD3;
|
||||
sbit OV = 0xD2;
|
||||
sbit P = 0xD0;
|
||||
|
||||
/* TCON */
|
||||
sbit TF1 = 0x8F;
|
||||
sbit TR1 = 0x8E;
|
||||
sbit TF0 = 0x8D;
|
||||
sbit TR0 = 0x8C;
|
||||
sbit IE1 = 0x8B;
|
||||
sbit IT1 = 0x8A;
|
||||
sbit IE0 = 0x89;
|
||||
sbit IT0 = 0x88;
|
||||
|
||||
/* T2CON */
|
||||
sbit T2PS = 0xCF;
|
||||
sbit I3FR = 0xCE;
|
||||
sbit I2FR = 0xCD;
|
||||
sbit T2R1 = 0xCC;
|
||||
sbit T2R0 = 0xCB;
|
||||
sbit T2CM = 0xCA;
|
||||
sbit T2I1 = 0xC9;
|
||||
sbit T2I0 = 0xC8;
|
||||
|
||||
/* S0CON */
|
||||
sbit SM0 = 0x9F;
|
||||
sbit SM1 = 0x9E;
|
||||
sbit SM20 = 0x9D;
|
||||
sbit REN0 = 0x9C;
|
||||
sbit TB80 = 0x9B;
|
||||
sbit RB80 = 0x9A;
|
||||
sbit TI0 = 0x99;
|
||||
sbit RI0 = 0x98;
|
||||
|
||||
/* IEN0 */
|
||||
sbit EAL = 0xAF;//global IRQ enable
|
||||
sbit WDT = 0xAE;//Watchdog timer refresh flag
|
||||
sbit ET2 = 0xAD;//Timer2 IRQ enable
|
||||
sbit ES0 = 0xAC;//Serial Port 0
|
||||
sbit ET1 = 0xAB;//Timer1 overflow
|
||||
sbit EX1 = 0xAA;//External 1
|
||||
sbit ET0 = 0xA9;//Timer0 overflow
|
||||
sbit EX0 = 0xA8;//External 0
|
||||
|
||||
/* IEN1 */
|
||||
sbit EXEN2 = 0xBF;//Timer2 external reload
|
||||
sbit SWDT = 0xBE;//Watchdog timer start/refresh flag.
|
||||
sbit EX6 = 0xBD;//External 6
|
||||
sbit EX5 = 0xBC;//External 5
|
||||
sbit EX4 = 0xBB;//External 4
|
||||
sbit EX3 = 0xBA;//External 3
|
||||
sbit EX2 = 0xB9;//External 2
|
||||
sbit EX7 = 0xB8;//External 7
|
||||
|
||||
/* IEN1 */
|
||||
//sbit ES2 = 0x9B;
|
||||
//sbit ES1 = 0x9A;
|
||||
|
||||
/* IRCON */
|
||||
sbit EXF2 = 0xC7;//Timer 2 external reload flag
|
||||
sbit TF2 = 0xC6;//Timer 2 overflow flag
|
||||
sbit IEX6 = 0xC5;//
|
||||
sbit IEX5 = 0xC4;//
|
||||
sbit IEX4 = 0xC3;//
|
||||
sbit IEX3 = 0xC2;//
|
||||
sbit IEX2 = 0xC1;//
|
||||
sbit IADC = 0xC0;//
|
||||
|
||||
/* ADCON */
|
||||
sbit BD = 0xDF;
|
||||
|
||||
/* P0 */
|
||||
sbit P00 = P0^0;
|
||||
sbit P01 = P0^1;
|
||||
sbit P02 = P0^2;
|
||||
sbit P03 = P0^3;
|
||||
sbit P04 = P0^4;
|
||||
sbit P05 = P0^5;
|
||||
sbit P06 = P0^6;
|
||||
sbit P07 = P0^7;
|
||||
|
||||
/* P0 */
|
||||
sbit P10 = P1^0;
|
||||
sbit P11 = P1^1;
|
||||
sbit P12 = P1^2;
|
||||
sbit P13 = P1^3;
|
||||
sbit P14 = P1^4;
|
||||
sbit P15 = P1^5;
|
||||
//sbit P16 = P1^6;
|
||||
//sbit P17 = P1^7;
|
||||
|
||||
#endif
|
62
UsrInc/key/key.h
Normal file
62
UsrInc/key/key.h
Normal file
@ -0,0 +1,62 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
*
|
||||
* @file key.h
|
||||
* @brief key module
|
||||
* @ic sy8835
|
||||
*
|
||||
* @version 1.0
|
||||
* @date 2024/11/01 09:59:40
|
||||
* @author Alex Xu
|
||||
*
|
||||
* Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
* All Rights Reserved
|
||||
*
|
||||
* History:
|
||||
* Revision Date Author Desc
|
||||
* 1.0.0 2024/11/01 Alex build this file
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef __KEY_H__
|
||||
#define __KEY_H__
|
||||
|
||||
/*_____ I N C L U D E S ____________________________________________________*/
|
||||
|
||||
#include "define.h"
|
||||
|
||||
/******************************************************************************\
|
||||
Macro definitions
|
||||
\******************************************************************************/
|
||||
|
||||
/******************************************************************************\
|
||||
Variables definitions
|
||||
\******************************************************************************/
|
||||
|
||||
#if KEY_ENABLE
|
||||
|
||||
extern bit Key_Press_short_irq;
|
||||
extern bit Key_Press_l_irq;
|
||||
extern bit Key_Press_ll_irq;
|
||||
|
||||
extern bit Key_l_Flag;
|
||||
|
||||
typedef enum {
|
||||
KEY_EVENT_Empty = 0x00,
|
||||
KEY_EVENT_SHORT, //Key short press(60ms-1s) interrupt flag
|
||||
KEY_EVENT_L_2S, //Key long press for 2/3s interrupt flag
|
||||
KEY_EVENT_LL_8S, //Key super long press for 8s interrupt flag
|
||||
}KEY_EVENT_E;
|
||||
|
||||
extern idata KEY_EVENT_E Event_key;
|
||||
|
||||
/******************************************************************************\
|
||||
Functions definitions
|
||||
\******************************************************************************/
|
||||
|
||||
extern void Key_Handler(void );
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
230
UsrInc/led/led.h
Normal file
230
UsrInc/led/led.h
Normal file
@ -0,0 +1,230 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
*
|
||||
* @file led.h
|
||||
* @brief led dispaly module
|
||||
* @ic sy8835
|
||||
*
|
||||
* @version 1.0
|
||||
* @date 2024/11/01 09:59:40
|
||||
* @author Alex Xu
|
||||
*
|
||||
* Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
* All Rights Reserved
|
||||
*
|
||||
* History:
|
||||
* Revision Date Author Desc
|
||||
* 1.0.0 2024/11/01 Alex build this file
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef __LED_H__
|
||||
#define __LED_H__
|
||||
|
||||
/*_____ I N C L U D E S ____________________________________________________*/
|
||||
|
||||
#include "define.h"
|
||||
|
||||
#ifdef LED_DISPLAY
|
||||
|
||||
#ifdef _DEBUG_LED
|
||||
#define _DEBUG_LED_1
|
||||
#define _DEBUG_LED_2
|
||||
#endif
|
||||
|
||||
/******************************************************************************\
|
||||
Macro definitions
|
||||
\******************************************************************************/
|
||||
#define LED_PLUS_TIME 1
|
||||
|
||||
sbit pin_LED_1 = P1^0;
|
||||
sbit pin_LED_2 = P1^1;
|
||||
sbit pin_LED_3 = P1^2;
|
||||
sbit pin_LED_4 = P1^3;
|
||||
|
||||
|
||||
// LED端口定义
|
||||
#define LEDR_ON() pin_LED_1 = 1 //LED_1_ON()
|
||||
#define LEDR_OFF() pin_LED_1 = 0 //LED_1_OFF()
|
||||
#define LEDR_TOG() pin_LED_1 = !pin_LED_1 //LED_1_RUN()
|
||||
|
||||
//LED闪烁最小时间周期单位ms
|
||||
#define LEDG_ON() pin_LED_2 = 1 //LED_2_ON()
|
||||
#define LEDG_OFF() pin_LED_2 = 0 //LED_2_OFF()
|
||||
#define LEDG_TOG() pin_LED_2 = !pin_LED_2 //LED_2_RUN()
|
||||
|
||||
#define LEDY_ON() pin_LED_3 = 1 //LED_3_ON()
|
||||
#define LEDY_OFF() pin_LED_3 = 0 //LED_3_OFF()
|
||||
#define LEDY_TOG() pin_LED_3 = !pin_LED_3 //LED_3_RUN()
|
||||
|
||||
#define LEDB_ON() pin_LED_4 = 1 //LED_4_ON()
|
||||
#define LEDB_OFF() pin_LED_4 = 0 //LED_4_OFF()
|
||||
#define LEDB_TOG() pin_LED_4 = !pin_LED_4 //LED_4_RUN()
|
||||
|
||||
/******************************************************************************\
|
||||
Typedef definitions
|
||||
\******************************************************************************/
|
||||
//LED名称重定义,顺序和上方的宏定义保持一致
|
||||
enum LED_ID
|
||||
{
|
||||
LED_R = 0x00,
|
||||
LED_G,
|
||||
LED_Y,
|
||||
LED_B,
|
||||
LED_ID_MAX
|
||||
};
|
||||
|
||||
//LED工作状态
|
||||
enum LED_STATE
|
||||
{
|
||||
LED_OFF = 0x00,
|
||||
LED_ON,
|
||||
LED_FLASH,
|
||||
LED_KEEP_FLASHING,
|
||||
LED_BREATHING_LIGHT,
|
||||
};
|
||||
|
||||
#ifdef PWM_ENABLE
|
||||
|
||||
enum LIGHT_DIR
|
||||
{
|
||||
SHOW_NONE = 0x00,
|
||||
SLOW_DARK, //缓灭
|
||||
SLOW_LIGHT, //缓亮
|
||||
SHOW_NORMAL, //呼吸灯正常亮。
|
||||
};
|
||||
|
||||
#endif
|
||||
//LED控制结构体
|
||||
typedef struct{
|
||||
uint8_t State[LED_ID_MAX];//LED 的工作状态
|
||||
uint8_t Light_Dir[LED_ID_MAX]; //呼吸灯亮的类型,缓亮、缓灭、正常亮。
|
||||
uint16_t Flash_Duty[LED_ID_MAX];//LED占空比,即点亮时间
|
||||
uint16_t Flash_Period[LED_ID_MAX];//LED周期
|
||||
uint16_t Flash_Times[LED_ID_MAX];//闪烁次数
|
||||
uint16_t Timer[LED_ID_MAX];//时间计数 1ms计数一次
|
||||
}TS_LED_INFO;
|
||||
|
||||
|
||||
extern volatile uint8_t Display_RSta; // 显示状态
|
||||
extern volatile uint8_t Display_GSta; // 显示状态
|
||||
extern volatile uint8_t Display_YSta; // 显示状态
|
||||
extern volatile uint8_t Display_BSta; // 显示状态
|
||||
|
||||
// LED显示相关定义
|
||||
// LED显示逻辑
|
||||
// -- 红色LED用于充电指示,原则上,充电时闪烁,充电完常亮,未充电熄灭
|
||||
// -- 绿色LED用于操作指示,原则上,耳机放入、取出、开盖、关盖时,闪烁一次即可
|
||||
typedef enum {
|
||||
DISPLAY_NONE,
|
||||
DISPLAY_ON,
|
||||
DISPLAY_OFF,
|
||||
DISPLAY_FLASH,
|
||||
DISPLAY_KEEP_FLASH,
|
||||
DISPLAY_MAX
|
||||
} TE_DISPLAY_STA;
|
||||
|
||||
#define Display_AllOff() {LED_R_OFF();LED_G_OFF();LED_Y_OFF();LED_B_OFF();Display_RSta=DISPLAY_OFF;Display_GSta=DISPLAY_OFF;Display_YSta=DISPLAY_OFF;Display_BSta=DISPLAY_OFF;}
|
||||
#define Display_AllOn() {LED_R_ON();LED_G_ON();LED_Y_ON();LED_B_ON();Display_RSta=DISPLAY_ON;Display_GSta=DISPLAY_ON;Display_YSta=DISPLAY_ON;Display_BSta=DISPLAY_ON;}
|
||||
|
||||
#define Display_Red_On() {LED_R_ON();Display_RSta=DISPLAY_ON;}
|
||||
#define Display_Red_Off() {LED_R_OFF();Display_RSta=DISPLAY_OFF;}
|
||||
#define Display_Red_Flash(Fre,n) {LED_R_FLASH(Fre,n);Display_RSta=DISPLAY_FLASH;}
|
||||
#define Display_Red_KeepFlash(Fre) {LED_R_KEEP_FLASHING(Fre);Display_RSta=DISPLAY_KEEP_FLASH;}
|
||||
|
||||
#define Display_Green_On() {LED_G_ON();Display_GSta=DISPLAY_ON;}
|
||||
#define Display_Green_Off() {LED_G_OFF();Display_GSta=DISPLAY_OFF;}
|
||||
#define Display_Green_Flash(Fre,n) {LED_G_FLASH(Fre,n);Display_GSta=DISPLAY_FLASH;}
|
||||
#define Display_Green_KeepFlash(Fre) {LED_G_KEEP_FLASHING(Fre);Display_GSta=DISPLAY_KEEP_FLASH;}
|
||||
|
||||
#define Display_Yellow_On() {LED_Y_ON();Display_YSta=DISPLAY_ON;}
|
||||
#define Display_Yellow_Off() {LED_Y_OFF();Display_YSta=DISPLAY_OFF;}
|
||||
#define Display_Yellow_Flash(Fre,n) {LED_Y_FLASH(Fre,n);Display_YSta=DISPLAY_FLASH;}
|
||||
#define Display_Yellow_KeepFlash(Fre) {LED_Y_KEEP_FLASHING(Fre);Display_YSta=DISPLAY_KEEP_FLASH;}
|
||||
|
||||
#define Display_Blue_On() {LED_B_ON();Display_BSta=DISPLAY_ON;}
|
||||
#define Display_Blue_Off() {LED_B_OFF();Display_BSta=DISPLAY_OFF;}
|
||||
#define Display_Blue_Flash(Fre,n) {LED_B_FLASH(Fre,n);Display_BSta=DISPLAY_FLASH;}
|
||||
#define Display_Blue_KeepFlash(Fre) {LED_B_KEEP_FLASHING(Fre);Display_BSta=DISPLAY_KEEP_FLASH;}
|
||||
|
||||
/******************************************************************************\
|
||||
Global variables and functions
|
||||
\******************************************************************************/
|
||||
|
||||
/*
|
||||
* 函数名称 : LED_Init
|
||||
* 功能描述 : LED初始化
|
||||
* 参 数 : NONE
|
||||
* 返回值 : NONE
|
||||
*/
|
||||
/******************************************************************************/
|
||||
extern void LED_Init(void);
|
||||
/******************************************************************************/
|
||||
|
||||
/*
|
||||
* 函数名称 : LED_Clr
|
||||
* 功能描述 : 熄灭全部LED
|
||||
* 参 数 : NONE
|
||||
* 返回值 : NONE
|
||||
*/
|
||||
/******************************************************************************/
|
||||
extern void LED_Clr(void);
|
||||
/******************************************************************************/
|
||||
|
||||
/*
|
||||
* 函数名称 : LED_Service
|
||||
* 功能描述 : LED驱动,需放在10ms时间片中
|
||||
* 参 数 : NONE
|
||||
* 返回值 : NONE
|
||||
*/
|
||||
/******************************************************************************/
|
||||
extern void LED_Drv(void);
|
||||
/******************************************************************************/
|
||||
/*
|
||||
* 函数名称 : LED_Set
|
||||
* 功能描述 : LED工作方式设置
|
||||
* 参 数 : State:工作方式 / Period:闪烁周期(单位ms) / Times:闪烁次数
|
||||
* 返回值 : NONE
|
||||
*/
|
||||
/******************************************************************************/
|
||||
extern void LED_Set(uint8_t LedId,uint8_t State,uint16_t Period,uint16_t Times);
|
||||
/******************************************************************************/
|
||||
#ifdef PWM_ENABLE
|
||||
extern void HuXiLED_Set(uint8_t LedId,uint8_t State,uint8_t Dir);
|
||||
#endif
|
||||
// 外部操作接口
|
||||
#define LED_R_ON() LED_Set(LED_R, LED_ON, 0,0)
|
||||
#define LED_R_OFF() LED_Set(LED_R, LED_OFF, 0,0)
|
||||
#define LED_R_FLASH(Fre,n) LED_Set(LED_R, LED_FLASH,Fre,n)
|
||||
#define LED_R_KEEP_FLASHING(Fre) LED_Set(LED_R, LED_KEEP_FLASHING, Fre,0)
|
||||
#ifdef PWM_ENABLE
|
||||
#define LED_R_BREATHING_LIGHT(Dir) HuXiLED_Set(LED_R, LED_BREATHING_LIGHT, Dir)
|
||||
#endif
|
||||
#define LED_G_ON() LED_Set(LED_G, LED_ON, 0,0)
|
||||
#define LED_G_OFF() LED_Set(LED_G, LED_OFF, 0,0)
|
||||
#define LED_G_FLASH(Fre,n) LED_Set(LED_G, LED_FLASH, Fre,n)
|
||||
#define LED_G_KEEP_FLASHING(Fre) LED_Set(LED_G, LED_KEEP_FLASHING, Fre,0)
|
||||
#ifdef PWM_ENABLE
|
||||
#define LED_G_BREATHING_LIGHT(Dir) HuXiLED_Set(LED_G, LED_BREATHING_LIGHT, Dir)
|
||||
#endif
|
||||
#define LED_Y_ON() LED_Set(LED_Y, LED_ON, 0,0)
|
||||
#define LED_Y_OFF() LED_Set(LED_Y, LED_OFF, 0,0)
|
||||
#define LED_Y_FLASH(Fre,n) LED_Set(LED_Y, LED_FLASH, Fre,n)
|
||||
#define LED_Y_KEEP_FLASHING(Fre) LED_Set(LED_Y, LED_KEEP_FLASHING, Fre,0)
|
||||
#ifdef PWM_ENABLE
|
||||
#define LED_Y_BREATHING_LIGHT(Dir) HuXiLED_Set(LED_Y, LED_BREATHING_LIGHT, Dir)
|
||||
#endif
|
||||
#define LED_B_ON() LED_Set(LED_B, LED_ON, 0,0)
|
||||
#define LED_B_OFF() LED_Set(LED_B, LED_OFF, 0,0)
|
||||
#define LED_B_FLASH(Fre,n) LED_Set(LED_B, LED_FLASH, Fre,n)
|
||||
#define LED_B_KEEP_FLASHING(Fre) LED_Set(LED_B, LED_KEEP_FLASHING, Fre,0)
|
||||
#ifdef PWM_ENABLE
|
||||
#define LED_B_BREATHING_LIGHT(Dir) HuXiLED_Set(LED_B, LED_BREATHING_LIGHT, Dir)
|
||||
#endif
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
#endif
|
||||
|
||||
|
||||
#endif
|
||||
|
479
UsrInc/pmu/pmu.h
Normal file
479
UsrInc/pmu/pmu.h
Normal file
@ -0,0 +1,479 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
*
|
||||
* @file pmu.h
|
||||
* @brief pmu module
|
||||
* @ic sy8835
|
||||
*
|
||||
* @version 1.0
|
||||
* @date 2024/11/01 09:59:40
|
||||
* @author Alex Xu
|
||||
*
|
||||
* Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
* All Rights Reserved
|
||||
*
|
||||
* History:
|
||||
* Revision Date Author Desc
|
||||
* 1.0.0 2024/11/01 Alex Xu build this file
|
||||
******************************************************************************
|
||||
*/
|
||||
#ifndef __PMU_H__
|
||||
#define __PMU_H__
|
||||
|
||||
/*_____ I N C L U D E S ____________________________________________________*/
|
||||
#include "define.h"
|
||||
|
||||
|
||||
/******************************************************************************\
|
||||
Macro definitions
|
||||
\******************************************************************************/
|
||||
/* Power Ctrl CMD Setting. <4Fh>*/
|
||||
#define POWER_CTRL_CMD_RECHG_ENABLE 0x11 //0x11:VIN正常是,写入此命令,IC将重新开启充电循环;
|
||||
|
||||
#define POWER_CTRL_CMD_RST_CMD 0x17 //0x17:CMD_RST,此命令将复位I2CR<0x20>~<0x4F>、VDD;
|
||||
|
||||
#define POWER_CTRL_CMD_ENTER_SHIPMODE 0xAA //0xAA:EnterShipmode,当且仅当在standby mode状态下写入此命令,IC进入ShipMode状态,在Charge Mode状态时,写入此命令无效;
|
||||
|
||||
#define POWER_CTRL_CMD_RST_VDD 0x33 //0x33:RstVDD,在任意状态下关闭VSYS 200ms,然后在重启VDD。
|
||||
|
||||
/* Boost Comm Setting. <I2CR_27h_BST_COMM_En>*/
|
||||
#define BST_COMM_EN_Boost_En_Pos (0U)
|
||||
#define BST_COMM_EN_Boost_En_Msk (0x1UL << BST_COMM_EN_Boost_En_Pos)
|
||||
#define BST_COMM_EN_Boost_En BST_COMM_EN_Boost_En_Msk
|
||||
|
||||
#define BST_COMM_EN_Vol_En_Pos (1U)
|
||||
#define BST_COMM_EN_Vol_En_Msk (0x1UL << BST_COMM_EN_Vol_En_Pos)
|
||||
#define BST_COMM_EN_Vol_En BST_COMM_EN_Vol_En_Msk
|
||||
|
||||
#define BST_COMM_EN_Vor_En_Pos (2U)
|
||||
#define BST_COMM_EN_Vor_En_Msk (0x1UL << BST_COMM_EN_Vor_En_Pos)
|
||||
#define BST_COMM_EN_Vor_En BST_COMM_EN_Vor_En_Msk
|
||||
|
||||
#define BST_COMM_EN_Vol_Comm_En_Pos (3U)
|
||||
#define BST_COMM_EN_Vol_Comm_En_Msk (0x1UL << BST_COMM_EN_Vol_Comm_En_Pos)
|
||||
#define BST_COMM_EN_Vol_Comm_En BST_COMM_EN_Vol_Comm_En_Msk
|
||||
|
||||
#define BST_COMM_EN_Vor_Comm_En_Pos (4U)
|
||||
#define BST_COMM_EN_Vor_Comm_En_Msk (0x1UL << BST_COMM_EN_Vor_Comm_En_Pos)
|
||||
#define BST_COMM_EN_Vor_Comm_En BST_COMM_EN_Vor_Comm_En_Msk
|
||||
|
||||
#define BST_COMM_EN_Vox_Dishold_Pos (6U)
|
||||
#define BST_COMM_EN_Vox_Dishold_Msk (0x1UL << BST_COMM_EN_Vox_Dishold_Pos)
|
||||
#define BST_COMM_EN_Vox_Dishold BST_COMM_EN_Vox_Dishold_Msk
|
||||
|
||||
#define BST_COMM_EN_Gate_Ctrl_Pos (7U)
|
||||
#define BST_COMM_EN_Gate_Ctrl_Msk (0x1UL << BST_COMM_EN_Gate_Ctrl_Pos)
|
||||
#define BST_COMM_EN_Gate_Ctrl BST_COMM_EN_Gate_Ctrl_Msk
|
||||
|
||||
/* Vox Config <37h>*/
|
||||
#define VOX_CFG_Vox_Floating_Pos (0U)
|
||||
#define VOX_CFG_Vox_Floating_Msk (0x1UL << VOX_CFG_Vox_Floating_Pos)
|
||||
#define VOX_CFG_Vox_Floating VOX_CFG_Vox_Floating_Msk //Vox屏蔽自动识别功能时,VOX的输出状态配置,0:VOX通过1K电阻下拉到GND;1:VOX浮空。
|
||||
|
||||
#define VOX_CFG_Vox_DisAdt_Pos (1U)
|
||||
#define VOX_CFG_Vox_DisAdt_Msk (0x1UL << VOX_CFG_Vox_DisAdt_Pos)
|
||||
#define VOX_CFG_Vox_DisAdt VOX_CFG_Vox_DisAdt_Msk
|
||||
|
||||
#define VOX_CFG_Comx_Rup_Pos (2U)
|
||||
|
||||
#define VOX_CFG_Comx_Rup_2K_Msk 0x01
|
||||
#define VOX_CFG_Comx_Rup_5K_Msk 0x02
|
||||
#define VOX_CFG_Comx_Rup_10K_Msk 0x03
|
||||
|
||||
#define VOX_CFG_Comx_Rup_2K (VOX_CFG_Comx_Rup_2K_Msk << VOX_CFG_Comx_Rup_Pos)
|
||||
#define VOX_CFG_Comx_Rup_5K (VOX_CFG_Comx_Rup_5K_Msk << VOX_CFG_Comx_Rup_Pos)
|
||||
#define VOX_CFG_Comx_Rup_10K (VOX_CFG_Comx_Rup_10K_Msk << VOX_CFG_Comx_Rup_Pos)
|
||||
|
||||
#define VOX_CFG_Vox_Rup_Pos (4U)
|
||||
|
||||
#define VOX_CFG_Vox_Rup_2K_Msk 0x01
|
||||
#define VOX_CFG_Vox_Rup_5K_Msk 0x02
|
||||
#define VOX_CFG_Vox_Rup_10K_Msk 0x03
|
||||
|
||||
#define VOX_CFG_Vox_Rup_2K (VOX_CFG_Vox_Rup_2K_Msk << VOX_CFG_Vox_Rup_Pos)
|
||||
#define VOX_CFG_Vox_Rup_5K (VOX_CFG_Vox_Rup_5K_Msk << VOX_CFG_Vox_Rup_Pos)
|
||||
#define VOX_CFG_Vox_Rup_10K (VOX_CFG_Vox_Rup_10K_Msk << VOX_CFG_Vox_Rup_Pos)
|
||||
|
||||
#define VOX_CFG_Vox_Vup_Pos (6U)
|
||||
|
||||
#define VOX_CFG_Vox_Vup_2_0V_Msk 0x00
|
||||
#define VOX_CFG_Vox_Vup_VDD_Msk 0x01
|
||||
#define VOX_CFG_Vox_Vup_VOXS_Msk 0x02
|
||||
#define VOX_CFG_Vox_Vup_1_8V_Msk 0x03
|
||||
|
||||
#define VOX_CFG_Vox_Vup_2_0V (VOX_CFG_Vox_Vup_2_0V_Msk << VOX_CFG_Vox_Vup_Pos)
|
||||
#define VOX_CFG_Vox_Vup_VDD (VOX_CFG_Vox_Vup_VDD_Msk << VOX_CFG_Vox_Vup_Pos)
|
||||
#define VOX_CFG_Vox_Vup_VOXS (VOX_CFG_Vox_Vup_VOXS_Msk << VOX_CFG_Vox_Vup_Pos)
|
||||
#define VOX_CFG_Vox_Vup_1_8V (VOX_CFG_Vox_Vup_1_8V_Msk << VOX_CFG_Vox_Vup_Pos)
|
||||
|
||||
/* VDPM VDD Charger En Setting.<20h> */
|
||||
#define BUCK_CHG_EN_Pos (0U)
|
||||
#define BUCK_CHG_EN_Pos_Msk (0x1UL << BUCK_CHG_EN_Pos)
|
||||
#define BUCK_CHG_EN BUCK_CHG_EN_Pos_Msk
|
||||
|
||||
#define VIN_DIR_CHG_DISABLE_Pos (1U)
|
||||
#define VIN_DIR_CHG_DISABLE_Pos_Msk (0x1UL << VIN_DIR_CHG_DISABLE_Pos)
|
||||
#define VIN_DIR_CHG_DISABLE VIN_DIR_CHG_DISABLE_Pos_Msk
|
||||
|
||||
#define VDD_BYPASS_Pos (2U)
|
||||
#define VDD_BYPASS_Pos_Msk (0x1UL << VDD_BYPASS_Pos)
|
||||
#define VDD_BYPASS VDD_BYPASS_Pos_Msk
|
||||
|
||||
/* FAULT_STA0<10h> */
|
||||
#define Fault_Sta0_VinUV_Pos (0U)
|
||||
#define Fault_Sta0_VinUV_Pos_Msk (0x1UL << Fault_Sta0_VinUV_Pos)
|
||||
#define Fault_Sta0_VinUV Fault_Sta0_VinUV_Pos_Msk
|
||||
|
||||
#define Fault_Sta0_VinOVP_Pos (1U)
|
||||
#define Fault_Sta0_VinOVP_Pos_Msk (0x1UL << Fault_Sta0_VinOVP_Pos)
|
||||
#define Fault_Sta0_VinOVP Fault_Sta0_VinOVP_Pos_Msk
|
||||
|
||||
#define Fault_Sta0_BoostUV_Pos (2U)
|
||||
#define Fault_Sta0_BoostUV_Pos_Msk (0x1UL << Fault_Sta0_BoostUV_Pos)
|
||||
#define Fault_Sta0_BoostUV Fault_Sta0_BoostUV_Pos_Msk
|
||||
|
||||
#define Fault_Sta0_VolOS_Pos (3U)
|
||||
#define Fault_Sta0_VolOS_Pos_Msk (0x1UL << Fault_Sta0_VolOS_Pos)
|
||||
#define Fault_Sta0_VolOS Fault_Sta0_VolOS_Pos_Msk
|
||||
|
||||
#define Fault_Sta0_VorOS_Pos (4U)
|
||||
#define Fault_Sta0_VorOS_Pos_Msk (0x1UL << Fault_Sta0_VorOS_Pos)
|
||||
#define Fault_Sta0_VorOS Fault_Sta0_VorOS_Pos_Msk
|
||||
|
||||
#define Fault_Sta0_WDTimeOut_Pos (5U)
|
||||
#define Fault_Sta0_WDTimeOut_Pos_Msk (0x1UL << Fault_Sta0_WDTimeOut_Pos)
|
||||
#define Fault_Sta0_WDTimeOut Fault_Sta0_WDTimeOut_Pos_Msk
|
||||
|
||||
#define Fault_Sta0_VINPlugInRstVDD_Pos (6U)
|
||||
#define Fault_Sta0_VINPlugInRstVDD_Pos_Msk (0x1UL << Fault_Sta0_VINPlugInRstVDD_Pos)
|
||||
#define Fault_Sta0_VINPlugInRstVDD Fault_Sta0_VINPlugInRstVDD_Pos_Msk
|
||||
|
||||
#define Fault_Sta0_KeyRstVDD_Pos (7U)
|
||||
#define Fault_Sta0_KeyRstVDD_Pos_Msk (0x1UL << Fault_Sta0_KeyRstVDD_Pos)
|
||||
#define Fault_Sta0_KeyRstVDD Fault_Sta0_KeyRstVDD_Pos_Msk
|
||||
|
||||
/* FAULT_STA2<12h> */
|
||||
#define Fault_Sta2_VinUV_Pos (0U)
|
||||
#define Fault_Sta2_VinUV_Pos_Msk (0x1UL << Fault_Sta2_VinUV_Pos)
|
||||
#define Fault_Sta2_VinUV Fault_Sta2_VinUV_Pos_Msk
|
||||
|
||||
#define Fault_Sta2_VinOVP_Pos (1U)
|
||||
#define Fault_Sta2_VinOVP_Pos_Msk (0x1UL << Fault_Sta2_VinOVP_Pos)
|
||||
#define Fault_Sta2_VinOVP Fault_Sta2_VinOVP_Pos_Msk
|
||||
|
||||
#define Fault_Sta2_BoostUV_Pos (2U)
|
||||
#define Fault_Sta2_BoostUV_Pos_Msk (0x1UL << Fault_Sta2_BoostUV_Pos)
|
||||
#define Fault_Sta2_BoostUV Fault_Sta2_BoostUV_Pos_Msk
|
||||
|
||||
#define Fault_Sta2_VolOCP_Pos (3U)
|
||||
#define Fault_Sta2_VolOCP_Pos_Msk (0x1UL << Fault_Sta2_VolOCP_Pos)
|
||||
#define Fault_Sta2_VolOCP Fault_Sta2_VolOCP_Pos_Msk
|
||||
|
||||
#define Fault_Sta2_VorOCP_Pos (4U)
|
||||
#define Fault_Sta2_VorOCP_Pos_Msk (0x1UL << Fault_Sta2_VorOCP_Pos)
|
||||
#define Fault_Sta2_VorOCP Fault_Sta2_VorOCP_Pos_Msk
|
||||
|
||||
#define Fault_Sta2_PMID_OCP_SHP_Pos (5U)
|
||||
#define Fault_Sta2_PMID_OCP_SHP_Pos_Msk (0x1UL << Fault_Sta2_PMID_OCP_SHP_Pos)
|
||||
#define Fault_Sta2_PMID_OCP_SHP Fault_Sta2_PMID_OCP_SHP_Pos_Msk
|
||||
|
||||
#define Fault_Sta2_CHIP_OTP_Pos (6U)
|
||||
#define Fault_Sta2_CHIP_OTP_Pos_Msk (0x1UL << Fault_Sta2_CHIP_OTP_Pos)
|
||||
#define Fault_Sta2_CHIP_OTP Fault_Sta2_CHIP_OTP_Pos_Msk
|
||||
|
||||
#define Fault_Sta2_VDPM_Pos (7U)
|
||||
#define Fault_Sta2_VDPM_Pos_Msk (0x1UL << Fault_Sta2_VDPM_Pos)
|
||||
#define Fault_Sta2_VDPM Fault_Sta2_VDPM_Pos_Msk
|
||||
|
||||
/* ChipSTA<13h> */
|
||||
#define ChipSTA_Standby 0x00
|
||||
#define ChipSTA_ShipMode 0x01
|
||||
#define ChipSTA_PMU_Error 0x02
|
||||
#define ChipSTA_CHG_ITC 0x03
|
||||
#define ChipSTA_CHG_ICC 0x04
|
||||
#define ChipSTA_CHG_CV 0x05
|
||||
#define ChipSTA_CHG_DONE 0x06
|
||||
#define ChipSTA_DISCHG 0x07
|
||||
|
||||
#define ChipSTA_INIT_OK_Pos (3U)
|
||||
#define ChipSTA_INIT_OK_Pos_Msk (0x1UL << ChipSTA_INIT_OK_Pos)
|
||||
#define INIT_OK ChipSTA_INIT_OK_Pos_Msk
|
||||
|
||||
#define ChipSTA_Key_Sta_Pos (4U)
|
||||
#define ChipSTA_Key_Sta_Pos_Msk (0x1UL << ChipSTA_Key_Sta_Pos)
|
||||
#define KEY_STA ChipSTA_Key_Sta_Pos_Msk
|
||||
|
||||
#define ChipSTA_Hall_Sta_Pos (5U)
|
||||
#define ChipSTA_Hall_Sta_Pos_Msk (0x1UL << ChipSTA_Hall_Sta_Pos)
|
||||
#define HALL_STA ChipSTA_Hall_Sta_Pos_Msk
|
||||
|
||||
/*VOX_STA<14h>*/
|
||||
#define VOX_Sta_Vol_Loadin_Pos (0U)
|
||||
#define VOX_Sta_Vol_Loadin_Pos_Msk (0x1UL << VOX_Sta_Vol_Loadin_Pos)
|
||||
#define VOL_LoadIn VOX_Sta_Vol_Loadin_Pos_Msk
|
||||
|
||||
#define VOX_Sta_Vor_Loadin_Pos (1U)
|
||||
#define VOX_Sta_Vor_Loadin_Pos_Msk (0x1UL << VOX_Sta_Vor_Loadin_Pos)
|
||||
#define VOR_LoadIn VOX_Sta_Vor_Loadin_Pos_Msk
|
||||
|
||||
#define VOX_Sta_Vol_Loadon_Pos (2U)
|
||||
#define VOX_Sta_Vol_Loadon_Pos_Msk (0x1UL << VOX_Sta_Vol_Loadon_Pos)
|
||||
#define VOL_LoadOn VOX_Sta_Vol_Loadon_Pos_Msk
|
||||
|
||||
#define VOX_Sta_Vor_Loadon_Pos (3U)
|
||||
#define VOX_Sta_Vor_Loadon_Pos_Msk (0x1UL << VOX_Sta_Vor_Loadon_Pos)
|
||||
#define VOR_LoadOn VOX_Sta_Vor_Loadon_Pos_Msk
|
||||
|
||||
#define VOX_Sta_Vol_Ioff_Pos (4U)
|
||||
#define VOX_Sta_Vol_Ioff_Pos_Msk (0x1UL << VOX_Sta_Vol_Ioff_Pos)
|
||||
#define VOL_Ioff VOX_Sta_Vol_Ioff_Pos_Msk
|
||||
|
||||
#define VOX_Sta_Vor_Ioff_Pos (5U)
|
||||
#define VOX_Sta_Vor_Ioff_Pos_Msk (0x1UL << VOX_Sta_Vor_Ioff_Pos)
|
||||
#define VOR_Ioff VOX_Sta_Vor_Ioff_Pos_Msk
|
||||
|
||||
/* Charger Parements Config.<21h> */
|
||||
/* 1、V Float Setting */
|
||||
#define CHG_VFLOAT_4_000V 0x00
|
||||
#define CHG_VFLOAT_4_050V 0x01
|
||||
#define CHG_VFLOAT_4_100V 0x02
|
||||
#define CHG_VFLOAT_4_150V 0x03
|
||||
#define CHG_VFLOAT_4_200V 0x04
|
||||
#define CHG_VFLOAT_4_250V 0x05
|
||||
#define CHG_VFLOAT_4_275V 0x06
|
||||
#define CHG_VFLOAT_4_300V 0x07
|
||||
#define CHG_VFLOAT_4_325V 0x08
|
||||
#define CHG_VFLOAT_4_350V 0x09
|
||||
#define CHG_VFLOAT_4_375V 0x0A
|
||||
#define CHG_VFLOAT_4_400V 0x0B
|
||||
#define CHG_VFLOAT_4_425V 0x0C
|
||||
#define CHG_VFLOAT_4_450V 0x0D
|
||||
#define CHG_VFLOAT_4_475V 0x0E
|
||||
#define CHG_VFLOAT_4_500V 0x0F
|
||||
|
||||
/*2、Constant Current ICC Setting.<22h>*/
|
||||
#define CHG_ICC_4_0MA 0x00
|
||||
#define CHG_ICC_1_00MA 0x01
|
||||
#define CHG_ICC_1_50MA 0x02
|
||||
#define CHG_ICC_2_00MA 0x03
|
||||
#define CHG_ICC_2_50MA 0x04
|
||||
#define CHG_ICC_3_00MA 0x05
|
||||
#define CHG_ICC_3_50MA 0x06
|
||||
#define CHG_ICC_4_00MA 0x07
|
||||
#define CHG_ICC_5_00MA 0x08
|
||||
#define CHG_ICC_6_00MA 0x09
|
||||
#define CHG_ICC_7_00MA 0x0A
|
||||
#define CHG_ICC_8_00MA 0x0B
|
||||
#define CHG_ICC_9_00MA 0x0C
|
||||
#define CHG_ICC_10_00MA 0x0D
|
||||
#define CHG_ICC_12_00MA 0x0E
|
||||
#define CHG_ICC_15_00MA 0x0F
|
||||
|
||||
/*3、电池涓流充电电流设置,<23h><bit6:4>*/
|
||||
#define CHG_ITC_20MA 0x00
|
||||
#define CHG_ITC_30MA 0x01
|
||||
#define CHG_ITC_40MA 0x02
|
||||
#define CHG_ITC_50MA 0x03
|
||||
#define CHG_ITC_60MA 0x04
|
||||
#define CHG_ITC_70MA 0x05
|
||||
#define CHG_ITC_80MA 0x06
|
||||
#define CHG_ITC_100MA 0x07
|
||||
|
||||
/*4、电池充电截止电流设置,<23h><bit2:0>*/
|
||||
#define CHG_ITERM_20MA 0x00
|
||||
#define CHG_ITERM_30MA 0x01
|
||||
#define CHG_ITERM_40MA 0x02
|
||||
#define CHG_ITERM_50MA 0x03
|
||||
#define CHG_ITERM_60MA 0x04
|
||||
#define CHG_ITERM_70MA 0x05
|
||||
#define CHG_ITERM_80MA 0x06
|
||||
#define CHG_ITERM_100MA 0x07
|
||||
|
||||
/* BOOST输出的PMID电压值。<25h><5:0> */
|
||||
#define BOOST_VPMID_3_7V 0x00
|
||||
#define BOOST_VPMID_3_8V 0x04
|
||||
#define BOOST_VPMID_3_9V 0x08
|
||||
#define BOOST_VPMID_4_0V 0x0C
|
||||
#define BOOST_VPMID_4_1V 0x10
|
||||
#define BOOST_VPMID_4_2V 0x14
|
||||
#define BOOST_VPMID_4_3V 0x18
|
||||
#define BOOST_VPMID_4_4V 0x1C
|
||||
#define BOOST_VPMID_4_5V 0x20
|
||||
#define BOOST_VPMID_4_6V 0x24
|
||||
#define BOOST_VPMID_4_7V 0x28
|
||||
#define BOOST_VPMID_4_8V 0x2C
|
||||
#define BOOST_VPMID_4_9V 0x30
|
||||
#define BOOST_VPMID_5_0V 0x34
|
||||
#define BOOST_VPMID_5_1V 0x38
|
||||
#define BOOST_VPMID_5_2V 0x3C
|
||||
|
||||
/* IRQ_EN0<40h> */
|
||||
#define Chip_Stat_IRQ_Pos (0U)
|
||||
#define Chip_Stat_IRQ_Pos_Msk (0x1UL << Chip_Stat_IRQ_Pos)
|
||||
#define Chip_Stat_IRQ Chip_Stat_IRQ_Pos_Msk
|
||||
|
||||
#define Boost_UV_IRQ_Pos (1U)
|
||||
#define Boost_UV_IRQ_Pos_Msk (0x1UL << Boost_UV_IRQ_Pos)
|
||||
#define Boost_UV_IRQ Boost_UV_IRQ_Pos_Msk
|
||||
|
||||
#define Vox_Load_Stat_IRQ_Pos (2U)
|
||||
#define Vox_Load_Stat_IRQ_Pos_Msk (0x1UL << Vox_Load_Stat_IRQ_Pos)
|
||||
#define Vox_Load_Stat_IRQ Vox_Load_Stat_IRQ_Pos_Msk
|
||||
|
||||
#define Vox_OS_IRQ_Pos (4U)
|
||||
#define Vox_OS_IRQ_Pos_Msk (0x1UL << Vox_OS_IRQ_Pos)
|
||||
#define Vox_OS_IRQ Vox_OS_IRQ_Pos_Msk
|
||||
|
||||
#define VDPM_IRQ_Pos (5U)
|
||||
#define VDPM_IRQ_Pos_Msk (0x1UL << VDPM_IRQ_Pos)
|
||||
#define VDPM_IRQ VDPM_IRQ_Pos_Msk
|
||||
|
||||
#define ReChg_IRQ_Pos (6U)
|
||||
#define ReChg_IRQ_Pos_Msk (0x1UL << ReChg_IRQ_Pos)
|
||||
#define ReChg_IRQ ReChg_IRQ_Pos_Msk
|
||||
|
||||
#define VINOK_IRQ_Pos (7U)
|
||||
#define VINOK_IRQ_Pos_Msk (0x1UL << VINOK_IRQ_Pos)
|
||||
#define VINOK_IRQ VINOK_IRQ_Pos_Msk
|
||||
|
||||
/* IRQ_EN1<41h> */
|
||||
#define I2CWDT_IRQ_Pos (0U)
|
||||
#define I2CWDT_IRQ_Pos_Msk (0x1UL << I2CWDT_IRQ_Pos)
|
||||
#define I2CWDT_IRQ I2CWDT_IRQ_Pos_Msk
|
||||
|
||||
#define WDTimeOut_IRQ_Pos (1U)
|
||||
#define WDTimeOut_IRQ_Pos_Msk (0x1UL << WDTimeOut_IRQ_Pos)
|
||||
#define WDTimeOut_IRQ WDTimeOut_IRQ_Pos_Msk
|
||||
|
||||
#define KEY_IRQ_Pos (2U)
|
||||
#define KEY_IRQ_Pos_Msk (0x1UL << KEY_IRQ_Pos)
|
||||
#define KEY_IRQ KEY_IRQ_Pos_Msk
|
||||
|
||||
#define HALL_IRQ_Pos (3U)
|
||||
#define HALL_IRQ_Pos_Msk (0x1UL << HALL_IRQ_Pos)
|
||||
#define HALL_IRQ HALL_IRQ_Pos_Msk
|
||||
|
||||
#define ChipOTP_IRQ_Pos (4U)
|
||||
#define ChipOTP_IRQ_Pos_Msk (0x1UL << ChipOTP_IRQ_Pos)
|
||||
#define ChipOTP_IRQ ChipOTP_IRQ_Pos_Msk
|
||||
|
||||
#define PMID_OCP_OS_IRQ_Pos (5U)
|
||||
#define PMID_OCP_OS_IRQ_Pos_Msk (0x1UL << PMID_OCP_OS_IRQ_Pos)
|
||||
#define PMID_OCP_OS_IRQ PMID_OCP_OS_IRQ_Pos_Msk
|
||||
|
||||
/******************************************************************************\
|
||||
Variables definitions
|
||||
\******************************************************************************/
|
||||
/*PMU相关状态信息*/
|
||||
typedef struct {
|
||||
|
||||
uint8_t pmu_Fault_STA0; //Key、VIN Plug、WDT Timeout、VOX Output Short、BoostUV、VIN OVP、VINUV State
|
||||
|
||||
uint8_t pmu_Fault_STA1; //I2C Timeout
|
||||
|
||||
uint8_t pmu_Fault_STA2; //VDPM、Chip OT、PMID OCP、VOX OCP、BoostUV、VIN OVP
|
||||
|
||||
uint8_t pmu_Chip_STA; //HALL、KEY、INIT_OK、ChipSate[2:0]:000:standby;001:shipmode;010:充电、放电的异常状态;011:充电状态,BUCK启动,ITC充电;100:充电状态;BUCK启动,ICC充电;101:充电状态,BUCK启动,CV充电;110:充电状态,且电池充满;111:VBAT放电状态,包括BOOST和"VBAT直通PMID"
|
||||
|
||||
uint8_t pmu_VOX_STA; //VOX ioff、loadon、loadin
|
||||
|
||||
// uint8_t pmu_IRQ_STA;
|
||||
|
||||
} g_PMU_Info;
|
||||
|
||||
|
||||
/*PMU相关配置信息*/
|
||||
typedef struct {
|
||||
|
||||
uint8_t pmu_Rst_Cfg; //<35h> bit4:HALL极性选择;bit3:Hall开盒(HALL=1)退出ShipMode功能;bit2:KEY长按复位VDD使能;bit1:WDT复位关联VDD复位使能;bit0:VIN插入复位VDD使能;
|
||||
|
||||
uint8_t pmu_PWR_Ctrl_Cmd; //<4Fh> 0x11:EnReChg,VIN正常是,写入此命令,IC将重新开启充电循环;0x17:CMD_RST,此命令将复位I2CR<0x20>~<0x4F>、VDD;0xAA:EnterShipmode,当且仅当在standby mode状态下写入此命令,IC进入ShipMode状态,在Charge Mode状态时,写入此命令无效;0x33:RstVDD,在任意状态下关闭VSYS 200ms,然后在重启VDD。
|
||||
|
||||
uint8_t pmu_VPMID_Cfg; //<25h> VPMID配置
|
||||
|
||||
uint8_t pmu_IRQ_En0; //<40h> pmu相关中断使能位0
|
||||
|
||||
uint8_t pmu_IRQ_En1; //<41h> pmu相关中断使能位1
|
||||
|
||||
uint8_t pmu_Xsen_Ctrl; //<31h> pmu相关ADC通道使能配置
|
||||
|
||||
uint8_t pmu_LED_Ctrl0; //<39h> Power LED控制位
|
||||
|
||||
uint8_t pmu_WDT1_Cfg; //<26h> bit3:短路和过流后保护模式选择;bit2:pmu看门狗功能使能,固定40s;bit1:
|
||||
|
||||
uint8_t pmu_WDT1_Rst; //<5Ah> pmu喂狗
|
||||
|
||||
// uint8_t pmu_Soft_Dat5;
|
||||
|
||||
} g_PMU_Sys_Cfg;
|
||||
|
||||
typedef struct {
|
||||
|
||||
uint8_t pmu_VDPM_VDD_CHG_En; //电源配置,bit6:VDPM使能;bit5:充电自适应电压点选择;bit<4:3>:自适应适配器电压;bit2:VDD输出模式配置;bit1:USB Adpter直充使能;bit0:BUCK充电控制信号。
|
||||
|
||||
uint8_t pmu_Chg_VFLOAT_Cfg; //浮充电压VBF设置;默认值4.35V。
|
||||
|
||||
uint8_t pmu_Chg_ICC_Cfg; //电池端恒流充电电流ICC设定值。
|
||||
|
||||
uint8_t pmu_Chg_ITC_Iterm_Cfg; //[6:4]电池端涓流ITC充电电流设定值;[2:0]电池端充电截止电流ITERM设定值。
|
||||
|
||||
} g_PMU_CHG_Cfg;
|
||||
|
||||
typedef struct {
|
||||
|
||||
uint8_t pmu_BST_COMM_En; //bit0:Boost使能;[7:1]:VOX通讯切换配置。
|
||||
|
||||
uint8_t pmu_VOX_Cfg; //Vox配置
|
||||
|
||||
} g_PMU_Vox_Cfg;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
HAL_OK = 0x00U,
|
||||
|
||||
HAL_ERROR = 0x01U,
|
||||
|
||||
HAL_BUSY = 0x02U,
|
||||
|
||||
HAL_TIMEOUT = 0x03U
|
||||
|
||||
} HAL_StatusTypeDef;
|
||||
|
||||
|
||||
typedef enum
|
||||
{
|
||||
DISCHG_ON = 0,
|
||||
CHG_ON,
|
||||
|
||||
}g_chg_type;
|
||||
|
||||
extern g_PMU_Info pmu_Info; //pmu状态信息
|
||||
|
||||
extern g_PMU_Sys_Cfg pmu_Sys_Cfg;
|
||||
|
||||
extern g_PMU_CHG_Cfg pmu_Chg_Cfg;
|
||||
|
||||
extern g_PMU_Vox_Cfg pmu_Vox_Cfg;
|
||||
|
||||
/******************************************************************************\
|
||||
Functions definitions
|
||||
\******************************************************************************/
|
||||
|
||||
extern void pmu_Init(void);
|
||||
|
||||
extern HAL_StatusTypeDef Get_PMU_Info( g_PMU_Info *n_pmu_Info );
|
||||
|
||||
extern HAL_StatusTypeDef Set_PMU_Sys_Config( g_PMU_Sys_Cfg *n_PMU_Sys_Cfg );
|
||||
|
||||
extern HAL_StatusTypeDef Set_PMU_CHG_Config( g_PMU_CHG_Cfg *n_PMU_CHG_Cfg );
|
||||
|
||||
extern void Set_PMU_CHG(uint8_t Chg_En);
|
||||
|
||||
extern void Set_PMU_Boost(uint8_t Boost_En);
|
||||
|
||||
extern void Set_PMU_Boost_Vout(uint8_t Boost_Vout);
|
||||
|
||||
extern HAL_StatusTypeDef Set_PMU_VOX_Config( g_PMU_Vox_Cfg *n_PMU_Vox_Cfg );
|
||||
|
||||
#endif
|
||||
|
59
UsrInc/pwm/pwm.h
Normal file
59
UsrInc/pwm/pwm.h
Normal file
@ -0,0 +1,59 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
*
|
||||
* @file pwm.h
|
||||
* @brief pwm module
|
||||
* @ic sy8835
|
||||
*
|
||||
* @version 1.0
|
||||
* @date 2024/11/01 09:59:40
|
||||
* @author Alex Xu
|
||||
*
|
||||
* Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
* All Rights Reserved
|
||||
*
|
||||
* History:
|
||||
* Revision Date Author Desc
|
||||
* 1.0.0 2024/11/01 Alex build this file
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef __PWM_H__
|
||||
#define __PWM_H__
|
||||
|
||||
#include "define.h"
|
||||
|
||||
#ifdef PWM_ENABLE
|
||||
/* PWM Channels */
|
||||
typedef enum {
|
||||
|
||||
PWM_CH0 = 0x00,
|
||||
PWM_CH1,
|
||||
PWM_CH2,
|
||||
PWM_CH3,
|
||||
PWM_ALL
|
||||
}Pwm_Channels_e;
|
||||
|
||||
/* PWM Parameters Config */
|
||||
|
||||
typedef struct {
|
||||
|
||||
uint8_t nPWM_PRE; //PWM Clock Precale Set --- clock divide 2^n(n:0-7)
|
||||
uint8_t nPWM_REL; //PWM counter reload value --- Fre(0-255)
|
||||
uint8_t nPWM_CMP; //PWM compare value --- duty (0-255)
|
||||
|
||||
}s_gPWM_Para_Cfg;
|
||||
|
||||
#define PWM_REL_VALUE 105 //Feq:KK ,PWM_REL = 255 - 1.5M / 6K = 255-250 = 5£¬nPWM_CMP = 5 + 250 * (1-50%) = 130¡£
|
||||
#define PWM_REL_FULL 254
|
||||
|
||||
extern void PWM_Enable(void);
|
||||
extern void PWM_Disable(Pwm_Channels_e nPWM_Ch);
|
||||
extern void PWM_Init_Set(uint8_t nPWM_PRE,uint8_t nPWM_REL);
|
||||
extern void PWM_Duty_Set(Pwm_Channels_e nPWM_Ch,uint8_t nPWM_CMP);
|
||||
extern void HuXi_Led(Pwm_Channels_e nPWM_Ch, uint8_t Delay_Timer);
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
56
UsrInc/sleep/sleep.h
Normal file
56
UsrInc/sleep/sleep.h
Normal file
@ -0,0 +1,56 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
*
|
||||
* @file sleep.h
|
||||
* @brief sleep module
|
||||
* @ic sy8835
|
||||
*
|
||||
* @version 1.0
|
||||
* @date 2024/11/01 09:59:40
|
||||
* @author Alex Xu
|
||||
*
|
||||
* Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
* All Rights Reserved
|
||||
*
|
||||
* History:
|
||||
* Revision Date Author Desc
|
||||
* 1.0.0 2024/11/01 Alex build this file
|
||||
******************************************************************************
|
||||
*/
|
||||
#ifndef __SLEEP_H__
|
||||
#define __SLEEP_H__
|
||||
|
||||
/*_____ I N C L U D E S ____________________________________________________*/
|
||||
|
||||
#include "define.h"
|
||||
|
||||
/******************************************************************************\
|
||||
Macro definitions
|
||||
\******************************************************************************/
|
||||
/*Sleep Module Setting*/
|
||||
/*Enter Sleep Time Debounce*/
|
||||
#define ENTER_STANDBYMODE_CNT 15 //进入Standby Mode 延迟时间,单位:秒
|
||||
#define ENTER_SHIPMODE_CNT 5 //进入ShipMode 延迟时间,单位:秒
|
||||
|
||||
/******************************************************************************\
|
||||
Variables definitions
|
||||
\******************************************************************************/
|
||||
#if SLEEP_ENABLE
|
||||
|
||||
extern uint8_t Decnt_SleepDelay;
|
||||
extern bit Enter_Sleep_Cnt_Restart_Flag;
|
||||
|
||||
extern uint8_t Enter_ShipMode_Debounce;
|
||||
extern bit Enter_Ship_Mode_Flag;
|
||||
|
||||
/******************************************************************************\
|
||||
Functions definitions
|
||||
\******************************************************************************/
|
||||
|
||||
extern bit Check_Require_Sleep(void);
|
||||
extern void Enter_Sleep(void);
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
63
UsrInc/system/system.h
Normal file
63
UsrInc/system/system.h
Normal file
@ -0,0 +1,63 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
*
|
||||
* @file system.h
|
||||
* @brief system module
|
||||
* @ic sy8835
|
||||
*
|
||||
* @version 1.0
|
||||
* @date 2024/11/01 09:59:40
|
||||
* @author Alex Xu
|
||||
*
|
||||
* Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
* All Rights Reserved
|
||||
*
|
||||
* History:
|
||||
* Revision Date Author Desc
|
||||
* 1.0.0 2024/11/01 Alex build this file
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef __SYSTEM_H__
|
||||
#define __SYSTEM_H__
|
||||
|
||||
/*_____ I N C L U D E S ____________________________________________________*/
|
||||
|
||||
#include "define.h"
|
||||
|
||||
/******************************************************************************\
|
||||
Macro definitions
|
||||
\******************************************************************************/
|
||||
/*中断号计算方式:中断向量 = 中断号 * 8 + 3*/
|
||||
|
||||
#define Interrupt_Vector_IE0 0 //0x03,SY8836 IE0 use for wakeup
|
||||
#define Interrupt_Vector_TF0 1 //0x0B,Timer 0 Overflow
|
||||
#define Interrupt_Vector_IE1 2 //0x13
|
||||
#define Interrupt_Vector_TF1 3 //0x1B,Timer 1 Overflow
|
||||
#define Interrupt_Vector_RI_TI 4 //0x23,Serial Port0 Interrupt
|
||||
#define Interrupt_Vector_TF2 5 //0x2B
|
||||
|
||||
#define Interrupt_Vector_IE7 8 //0x43,External Interrupt 7 / PWM
|
||||
#define Interrupt_Vector_IE2 9 //0x4B,External Interrupt 2
|
||||
#define Interrupt_Vector_IE3 10 //0x53,External Interrupt 3
|
||||
#define Interrupt_Vector_IE4 11 //0x5B,External Interrupt 4
|
||||
#define Interrupt_Vector_IE5 12 //0x63,External Interrupt 5
|
||||
#define Interrupt_Vector_IE6 13 //0x6B,External Interrupt 6 / ADC中断
|
||||
|
||||
#define Interrupt_Vector_RI1_TI1 16 //0x83,Serial Port1 Interrupt
|
||||
#define Interrupt_Vector_IE8 17 //0x8B,Serial Port2 Interrupt
|
||||
|
||||
/******************************************************************************\
|
||||
Variables definitions
|
||||
\******************************************************************************/
|
||||
|
||||
|
||||
|
||||
/******************************************************************************\
|
||||
Functions definitions
|
||||
\******************************************************************************/
|
||||
|
||||
extern void System_Init(void);
|
||||
|
||||
#endif
|
||||
|
67
UsrInc/timer/sys_tim.h
Normal file
67
UsrInc/timer/sys_tim.h
Normal file
@ -0,0 +1,67 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
*
|
||||
* @file sys_tim.h
|
||||
* @brief system timer module
|
||||
* @ic sy8835
|
||||
*
|
||||
* @version 1.0
|
||||
* @date 2024/11/01 09:59:40
|
||||
* @author Alex Xu
|
||||
*
|
||||
* Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
* All Rights Reserved
|
||||
*
|
||||
* History:
|
||||
* Revision Date Author Desc
|
||||
* 1.0.0 2024/11/01 Alex build this file
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef __sys_tim_H__
|
||||
#define __sys_tim_H__
|
||||
|
||||
#include "define.h"
|
||||
|
||||
//#define FOSC 11059200L
|
||||
|
||||
#define T1MS 921
|
||||
#define T100uS 91
|
||||
#define T200uS 183
|
||||
#define T300uS 275
|
||||
#define T400uS 368
|
||||
#define T500uS 460
|
||||
#define T600uS 552
|
||||
#define T800uS 736
|
||||
|
||||
#define T10MS 9215 //FOSC/11.0592/100
|
||||
|
||||
#define C_TIM0_Reload (65535 - T1MS) //1ms (65535 - N) * 1/FOSC = Time -> (65535 - N) * 1/11.0592M = 1ms -> 65535 - N = 11059.2 -> N = 65535 - 11059.2
|
||||
//extern void Sys_Tim0_Init(void );
|
||||
|
||||
#if TIMER1_ENABLE
|
||||
|
||||
#define C_TIM1_Reload (65535 - T1MS) //1ms
|
||||
|
||||
extern bit F_sys_tim1_tick;
|
||||
extern void Sys_Tim1_Init(void );
|
||||
|
||||
#endif
|
||||
|
||||
extern bit F_sys_tim_1ms;
|
||||
extern bit F_sys_tim_5ms;
|
||||
extern bit F_sys_tim_10ms;
|
||||
extern bit F_sys_tim_250ms;
|
||||
extern bit F_sys_tim_100ms;
|
||||
extern bit F_sys_tim_1s;
|
||||
|
||||
extern bit F_sys_tim1_tick;
|
||||
|
||||
extern bit F_sys_tim2_tick;
|
||||
|
||||
extern void Sys_Tim0_Init(void );
|
||||
|
||||
extern void Sys_Tim0_Handler(void );
|
||||
|
||||
#endif
|
||||
|
92
UsrInc/uart/uart.h
Normal file
92
UsrInc/uart/uart.h
Normal file
@ -0,0 +1,92 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
*
|
||||
* @file uart.h
|
||||
* @brief uart module
|
||||
* @ic sy8835
|
||||
*
|
||||
* @version 1.0
|
||||
* @date 2024/11/01 09:59:40
|
||||
* @author Alex Xu
|
||||
*
|
||||
* Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
* All Rights Reserved
|
||||
*
|
||||
* History:
|
||||
* Revision Date Author Desc
|
||||
* 1.0.0 2024/11/01 Alex build this file
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef __UART_H__
|
||||
#define __UART_H__
|
||||
|
||||
/*_____ I N C L U D E S ____________________________________________________*/
|
||||
|
||||
#include "define.h"
|
||||
|
||||
/******************************************************************************\
|
||||
Macro definitions
|
||||
\******************************************************************************/
|
||||
#define Baud_Rate0 9600//9600//19200//38400//93750
|
||||
#define S0REL_VALUE (1024-345600/Baud_Rate0)
|
||||
|
||||
#define Baud_Rate1 9600//19200//38400//93750
|
||||
#define S1REL_VALUE (1024-345600/Baud_Rate1)
|
||||
|
||||
#define Baud_Rate2 115200//19200//38400//93750
|
||||
#define S2REL_VALUE (1024-345600/Baud_Rate2)
|
||||
|
||||
#define UART_REC_ENABLE_Pos (4U)
|
||||
#define UART_REC_ENABLE_Pos_Msk (0x1UL << UART_REC_ENABLE_Pos)
|
||||
#define UART_REC_ENABLE UART_REC_ENABLE_Pos_Msk
|
||||
|
||||
#ifdef _DEBUG_ALL
|
||||
|
||||
extern char putchar (char ch);
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
#define COM0_Data_Lenth 64
|
||||
|
||||
#ifdef VOX_RX
|
||||
|
||||
/******************************************************************************\
|
||||
Variables definitions
|
||||
\******************************************************************************/
|
||||
|
||||
extern idata uint8_t RX0_Buffer[COM0_Data_Lenth]; //½ÓÊÕ»º³å
|
||||
|
||||
extern bit Uart0_RX_Finish_Flag;
|
||||
#endif
|
||||
/******************************************************************************\
|
||||
Functions definitions
|
||||
\******************************************************************************/
|
||||
#ifdef _DEBUG_ALL
|
||||
|
||||
extern char putchar (char ch);
|
||||
#endif
|
||||
|
||||
|
||||
extern void UART0_Init(void);
|
||||
|
||||
extern void Uart0SendData(uint8_t Txdata);
|
||||
|
||||
#ifdef VOX_TX
|
||||
extern void Uart0SendPacket(uint16_t Length,uint8_t *TransBuf);
|
||||
#endif
|
||||
|
||||
|
||||
extern void UART1_Init(void);
|
||||
|
||||
extern void Uart1SendData(uint8_t Txdata);
|
||||
|
||||
|
||||
extern void UART2_Init(void);
|
||||
|
||||
extern void Uart2SendData(uint8_t Txdata);
|
||||
|
||||
|
||||
#endif
|
||||
|
48
UsrInc/user/user.h
Normal file
48
UsrInc/user/user.h
Normal file
@ -0,0 +1,48 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
*
|
||||
* @file user.h
|
||||
* @brief user module
|
||||
* @ic sy8835
|
||||
*
|
||||
* @version 1.0
|
||||
* @date 2024/11/01 09:59:40
|
||||
* @author Alex Xu
|
||||
*
|
||||
* Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
* All Rights Reserved
|
||||
*
|
||||
* History:
|
||||
* Revision Date Author Desc
|
||||
* 1.0.0 2024/11/01 Alex Xu build this file
|
||||
******************************************************************************
|
||||
*/
|
||||
#ifndef __USER_H__
|
||||
#define __USER_H__
|
||||
|
||||
/*_____ I N C L U D E S ____________________________________________________*/
|
||||
|
||||
#include "i2c_simu.h"
|
||||
|
||||
/******************************************************************************\
|
||||
Macro definitions
|
||||
\******************************************************************************/
|
||||
|
||||
/******************************************************************************\
|
||||
Variables definitions
|
||||
\******************************************************************************/
|
||||
|
||||
/******************************************************************************\
|
||||
Functions definitions
|
||||
\******************************************************************************/
|
||||
|
||||
extern void ExtSfr_Write(u8 reg_addr,u8 _dat);
|
||||
|
||||
extern u8 ExtSfr_Read(u8 reg_addr);
|
||||
|
||||
extern void I2cSfr_Write(u8 reg_addr,u8 _dat);
|
||||
|
||||
extern u8 I2cSfr_Read(u8 reg_addr);
|
||||
|
||||
#endif
|
||||
|
70
UsrInc/userapp/userapp.h
Normal file
70
UsrInc/userapp/userapp.h
Normal file
@ -0,0 +1,70 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
*
|
||||
* @file userapp.h
|
||||
* @brief userapp module
|
||||
* @ic sy8835
|
||||
*
|
||||
* @version 1.0
|
||||
* @date 2024/11/01 09:59:40
|
||||
* @author Alex Xu
|
||||
*
|
||||
* Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
* All Rights Reserved
|
||||
*
|
||||
* History:
|
||||
* Revision Date Author Desc
|
||||
* 1.0.0 2024/11/01 Alex build this file
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef __USERAPP_H__
|
||||
#define __USERAPP_H__
|
||||
|
||||
#include "define.h"
|
||||
/******************************************************************************\
|
||||
Macro definitions
|
||||
\******************************************************************************/
|
||||
#define BAT_LEVEL_LOW 20 //电池电量低报警值
|
||||
|
||||
/******************************************************************************\
|
||||
Typedef definitions
|
||||
\******************************************************************************/
|
||||
typedef enum{
|
||||
|
||||
POWER_ON_STATE = 1,
|
||||
|
||||
AWAKE_STATE,
|
||||
|
||||
NORMAL_STATE,
|
||||
|
||||
SLEEP_STATE,
|
||||
|
||||
}SYS_STATE;
|
||||
|
||||
typedef struct {
|
||||
|
||||
uint8_t Next_State;
|
||||
|
||||
uint8_t Current_State;
|
||||
|
||||
uint8_t Pre_State;
|
||||
|
||||
}s_sys_state;
|
||||
|
||||
extern xdata s_sys_state Systerm_State;
|
||||
extern bit Wkup_Earphone_Flag; //保护消失后,需要升压唤醒耳机标志位
|
||||
|
||||
/******************************************************************************\
|
||||
Global variables and functions
|
||||
\******************************************************************************/
|
||||
|
||||
|
||||
extern uint8_t LED_On_Timer; //led亮时间计时
|
||||
|
||||
extern bit LED_On_Flag;
|
||||
|
||||
extern void UserAPP(void);
|
||||
|
||||
#endif
|
||||
|
216
UsrInc/vox/vox_module.h
Normal file
216
UsrInc/vox/vox_module.h
Normal file
@ -0,0 +1,216 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
*
|
||||
* @file VOX_Module.h
|
||||
* @brief VOL/R module
|
||||
* @ic sy8835
|
||||
*
|
||||
* @version 1.0
|
||||
* @date 2024/11/01 09:59:40
|
||||
* @author Alex Xu
|
||||
*
|
||||
* Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
* All Rights Reserved
|
||||
*
|
||||
* History:
|
||||
* Revision Date Author Desc
|
||||
* 1.0.0 2024/11/01 Alex build this file
|
||||
******************************************************************************
|
||||
*/
|
||||
#ifndef __VOX_MODULE_H__
|
||||
#define __VOX_MODULE_H__
|
||||
|
||||
/*_____ I N C L U D E S ____________________________________________________*/
|
||||
|
||||
#include "define.h"
|
||||
|
||||
/*耳机方案商选择*/
|
||||
//#define QIANCHENG //岍丞
|
||||
//#define ZHONGKELANXUN //中科蓝讯
|
||||
#define XIAOMI //小米
|
||||
|
||||
/*硬件版本信息*/
|
||||
#define HW_VER 0x01 //硬件版本信息,范围0-9
|
||||
/*软件版本信息*/
|
||||
#define FW_VER 0x001 //程序版本
|
||||
|
||||
extern bit Vox_Vout_Enable;
|
||||
extern bit Earphone_Chg_Flag; //耳机出入盒标志位
|
||||
extern bit Vox_Output_Short_Flag;
|
||||
|
||||
#define IVOX_THN 20 //耳机跟随充电流下降阈值
|
||||
#define IVOX_THP 200 //耳机跟随充电流上升阈值
|
||||
|
||||
|
||||
#define VOL_TYPE 0x00
|
||||
#define VOR_TYPE 0x01
|
||||
|
||||
#if 1
|
||||
/*耳机配对状态*/
|
||||
typedef enum {
|
||||
VOX_PAIR_NONE = 0, //无效
|
||||
VOX_PAIR_ING, //配对中
|
||||
VOX_PAIR_OK, //配对完成
|
||||
VOX_PAIR_KEEP, //不处理,保持当前状态
|
||||
}e_Vox_Pairing_State;
|
||||
|
||||
/*耳机配对记录*/
|
||||
typedef enum {
|
||||
VOX_PAIRED_NONE = 0, //无配对过
|
||||
VOX_PAIRED_OK, //有配对记录
|
||||
}e_Vox_Paired_State;
|
||||
#endif
|
||||
|
||||
#if VOX_ENABLE
|
||||
|
||||
/******************************************************************************\
|
||||
Macro definitions
|
||||
\******************************************************************************/
|
||||
/*
|
||||
VOX过流档位设置,在系统初始化中(Vox_init())通过配置VOX_CON0,
|
||||
|
||||
SFRADDR = VOX_CON0; //设置VOX输出200mA,负载识别电流2.5uA。
|
||||
SFRDATA &= 0xE0;
|
||||
SFRDATA |= (VOX_IOUT_200MA << 3) | VOX_ADT_Cur_2_5UA;
|
||||
//Vox轻重载滤波时间配置
|
||||
SFRADDR = VOX_CON2;
|
||||
SFRDATA |= (VOX_LIGHT_TO_HAVEY_128 << 2) | VOX_HAVEY_TO_LIGHT_8;
|
||||
|
||||
*/
|
||||
/*Vox输出电流过流保护阈值。*/
|
||||
#define VOX_IOUT_200MA 0x00
|
||||
#define VOX_IOUT_300MA 0x01
|
||||
#define VOX_IOUT_400MA 0x02
|
||||
#define VOX_IOUT_500MA 0x03
|
||||
/*自动识别负载电流阈值。*/
|
||||
#define VOX_ADT_Cur_0_5UA 0x00
|
||||
#define VOX_ADT_Cur_1_5UA 0x01
|
||||
#define VOX_ADT_Cur_2_5UA 0x02
|
||||
#define VOX_ADT_Cur_3_5UA 0x03
|
||||
#define VOX_ADT_Cur_4_5UA 0x04
|
||||
#define VOX_ADT_Cur_5_5UA 0x05
|
||||
#define VOX_ADT_Cur_6_5UA 0x06
|
||||
#define VOX_ADT_Cur_7_5UA 0x07
|
||||
/*轻载转重载滤波时间配置。*/
|
||||
#define VOX_LIGHT_TO_HAVEY_1 0x00
|
||||
#define VOX_LIGHT_TO_HAVEY_8 0x01
|
||||
#define VOX_LIGHT_TO_HAVEY_128 0x02
|
||||
#define VOX_LIGHT_TO_HAVEY_256 0x03
|
||||
/*重载转轻载滤波时间配置。*/
|
||||
#define VOX_HAVEY_TO_LIGHT_0_125 0x00
|
||||
#define VOX_HAVEY_TO_LIGHT_1 0x01
|
||||
#define VOX_HAVEY_TO_LIGHT_8 0x02
|
||||
#define VOX_HAVEY_TO_LIGHT_64 0x03
|
||||
|
||||
#define BOXHEADER 0x55AA //VOX通讯数据包头
|
||||
|
||||
#define BOXIDCODE 0xFF //VOX通讯耳机->仓数据包头
|
||||
|
||||
#define Vox_TX_Interval 2 //Vox定时发送指令时间间隔
|
||||
|
||||
#define TIM_SHUTDOWN_DEBOUNCE 600 //关机前debounce时间
|
||||
|
||||
/******************************************************************************\
|
||||
Variables definitions
|
||||
\******************************************************************************/
|
||||
|
||||
/*耳机通道选择*/
|
||||
|
||||
#define TWS_VOL 0x04
|
||||
#define TWS_VOR 0x05
|
||||
#define TWS_BOX 0x02
|
||||
#define TWS_PC 0x03
|
||||
|
||||
/*耳机通道选择*/
|
||||
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;
|
||||
|
||||
|
||||
/* 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 {
|
||||
|
||||
Vox_Follow_Chg_InitSta = 0x00,
|
||||
|
||||
Vox_Follow_Chg_Sta1,
|
||||
|
||||
Vox_Follow_Chg_Sta2,
|
||||
|
||||
}e_Vox_Follow_Chg_Sta;
|
||||
|
||||
|
||||
/* VOX Enable Type */
|
||||
typedef enum {
|
||||
|
||||
VOX_TRANS_Mode = 0x00, //VOx UART 透传功能使能
|
||||
|
||||
VOX_COMM_Mode_Uart, //VOx 通讯 UART Mode
|
||||
|
||||
VOX_COMM_Mode_Reg, //VOx 通讯 Register Mode
|
||||
|
||||
VOX_VOUT_Mode, //VOx 5V 输出使能
|
||||
|
||||
VOX_ADT_Mode, //VOx 负载接入、存在识别功能使能,负载自动识别
|
||||
|
||||
VOX_PUnK_Mode, //Vox上拉电阻配置,上拉到VOX_Vup。
|
||||
|
||||
VOX_PD1K_Mode, //<SHIP_CTL[VOX_PD1K 5:4]> VOX 1K 电阻下拉使能 1: VOR 通过 1K 电阻下拉至 gnd
|
||||
|
||||
} VOX_Enable_Mode_e;
|
||||
|
||||
extern uint16_t Boost_Open_Atleast_Tim_Cnt;
|
||||
|
||||
extern bit Cover_Open_Flag;
|
||||
|
||||
|
||||
#ifdef VOX_RX
|
||||
|
||||
extern uint8_t Vox_Get_Vbat_Flag[2]; //耳机配对状态,VOL:低4bit;VOR:高4bit。0是无效,1是正在配对,2是配对成功,3不处理,保持当前状态。
|
||||
|
||||
extern idata uint8_t Vox_Get_BES_Addr_Flag[2] ;
|
||||
|
||||
#endif
|
||||
|
||||
//extern uint8_t Box_To_Bes_Comm_Debounce;
|
||||
|
||||
/******************************************************************************\
|
||||
UserCfg.Functions definitions
|
||||
\******************************************************************************/
|
||||
|
||||
extern void HandleTxCommand(VOX_BES_COMMAND_E TxCommand, e_Vox_Chan nVox_Chn_Select);
|
||||
extern void Vox_Det_Machine(void);
|
||||
extern void VOX_EN_Type(VOX_Enable_Mode_e VOX_Enable_Mode);
|
||||
|
||||
#ifdef VOX_RX
|
||||
extern void HandleVoxCommMsg(void);
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
51
UsrInc/watchdog/watchdog.h
Normal file
51
UsrInc/watchdog/watchdog.h
Normal file
@ -0,0 +1,51 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
*
|
||||
* @file watchdog.h
|
||||
* @brief watchdog module
|
||||
* @ic sy8835
|
||||
*
|
||||
* @version 1.0
|
||||
* @date 2024/11/01 09:59:40
|
||||
* @author Alex Xu
|
||||
*
|
||||
* Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
* All Rights Reserved
|
||||
*
|
||||
* History:
|
||||
* Revision Date Author Desc
|
||||
* 1.0.0 2024/11/01 Alex build this file
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef __WATCHDOG_H__
|
||||
#define __WATCHDOG_H__
|
||||
|
||||
#include "define.h"
|
||||
|
||||
#if 0
|
||||
|
||||
|
||||
/******************************************************************************\
|
||||
Macro definitions
|
||||
\******************************************************************************/
|
||||
|
||||
#define _WDT_TIME_65ms_ 0
|
||||
#define _WDT_TIME_1s_ 1
|
||||
|
||||
/******************************************************************************\
|
||||
Variables definitions
|
||||
\******************************************************************************/
|
||||
|
||||
|
||||
/******************************************************************************\
|
||||
UserCfg.Functions definitions
|
||||
\******************************************************************************/
|
||||
|
||||
extern void Watchdog_Clear(void);
|
||||
extern void Watchdog_Init(uint8_t watchdog_time );
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
39
UsrSrc/InitVars.c
Normal file
39
UsrSrc/InitVars.c
Normal file
@ -0,0 +1,39 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
*
|
||||
* @file adc.c
|
||||
* @brief adc module
|
||||
* @ic sy8835
|
||||
*
|
||||
* @version 1.0
|
||||
* @date 2024/11/01 15:00:40
|
||||
* @author Alex Xu
|
||||
*
|
||||
* Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
* All Rights Reserved
|
||||
*
|
||||
* History:
|
||||
* Revision Date Author Desc
|
||||
* 1.0.0 2024/11/01 Alex build this file
|
||||
******************************************************************************/
|
||||
/*_____ I N C L U D E S ____________________________________________________*/
|
||||
#include "define.h"
|
||||
|
||||
/******************************************************************************\
|
||||
Macro definitions
|
||||
\******************************************************************************/
|
||||
/*程序版本,第一个数代表在硬件存在改动不能兼容之前版本时加1,
|
||||
第二个数在功能存在改动时加1,第三个数在软件调试出现不同的
|
||||
测试版本时改动;高位数字变动时,低位数字清零。*/
|
||||
|
||||
#define FW_VER0 0x01 //程序版本0:代表在硬件存在改动不能兼容之前版本时加1
|
||||
#define FW_VER1 0x01 //程序版本1:代表在功能存在改动时加1
|
||||
#define FW_VER2 0x01 //程序版本2:代表在软件调试出现不同的测试版本时改动时加1
|
||||
|
||||
/******************************************************************************\
|
||||
Variables definitions
|
||||
\******************************************************************************/
|
||||
char code Version_Addr[3] = {FW_VER0,FW_VER1,FW_VER2}; //设置ROM绝对地址存放软版本,两个参数存于ROM的3070、3071、3072位置处,小端模式存储。
|
||||
|
||||
|
||||
|
222
UsrSrc/adc/adc.c
Normal file
222
UsrSrc/adc/adc.c
Normal file
@ -0,0 +1,222 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
*
|
||||
* @file adc.c
|
||||
* @brief adc module
|
||||
* @ic sy8835
|
||||
*
|
||||
* @version 1.0
|
||||
* @date 2024/11/01 15:00:40
|
||||
* @author Alex Xu
|
||||
*
|
||||
* Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
* All Rights Reserved
|
||||
*
|
||||
* History:
|
||||
* Revision Date Author Desc
|
||||
* 1.0.0 2024/11/01 Alex build this file
|
||||
******************************************************************************/
|
||||
/*_____ I N C L U D E S ____________________________________________________*/
|
||||
|
||||
#include "adc.h"
|
||||
#include "system.h"
|
||||
#include "sys_tim.h"
|
||||
|
||||
#if ADC_ENABLE
|
||||
|
||||
/******************************************************************************\
|
||||
Macro definitions
|
||||
\******************************************************************************/
|
||||
|
||||
/******************************************************************************\
|
||||
Variables definitions
|
||||
\******************************************************************************/
|
||||
uint8_t ADC_Chn_Num = 0;
|
||||
|
||||
idata uint16_t Vbat_Adc = 0;
|
||||
|
||||
idata uint16_t g_Vpmu_Adc = 0;
|
||||
|
||||
idata uint16_t g_Vntc_Adc = 0;
|
||||
|
||||
idata uint16_t g_Vbjt_Adc = 0;
|
||||
|
||||
idata uint16_t g_Vp13_Adc = 0;
|
||||
|
||||
idata uint16_t g_Vref_Adc = 0;
|
||||
|
||||
uint8_t g_PMU_ADC_Chn = 0;
|
||||
|
||||
idata uint16_t g_pmu_Adc_Ivol = 0;
|
||||
|
||||
idata uint16_t g_pmu_Adc_Vin = 0;
|
||||
|
||||
idata uint16_t g_pmu_Adc_Vpmid = 0;
|
||||
|
||||
idata uint16_t g_pmu_Adc_Vor = 0;
|
||||
|
||||
idata uint16_t g_pmu_Adc_Vol = 0;
|
||||
|
||||
idata uint16_t g_pmu_Adc_Vdd = 0;
|
||||
|
||||
idata uint16_t g_pmu_Adc_Ivor = 0;
|
||||
|
||||
/******************************************************************************\
|
||||
Functions definitions
|
||||
\******************************************************************************/
|
||||
/*
|
||||
*******************************************************************************
|
||||
* void Adc_Init(void)
|
||||
*
|
||||
* Description : ADC Initialization. --- 系统初始化调用。
|
||||
*
|
||||
* Arguments : NONE
|
||||
|
||||
* Returns : NONE
|
||||
|
||||
* Notes : NONE
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
void Adc_Init(void)
|
||||
{
|
||||
SFRADDR = ADC_CTL2; //ADC 2.5V Enable b[7];ADC1 Pullup 100K Enable b[0].
|
||||
SFRDATA = 0x81;
|
||||
|
||||
SFRADDR = MFP_CTL0; //Set P14 As ADC1 For NTC
|
||||
SFRDATA |= 0x10;
|
||||
|
||||
ExtSfr_Write(ADC_CTL0,0xAB); //0B10101001,0xA9--ADC EN;Average time:16; Single mode; ADC CLK divided by 24=460k
|
||||
|
||||
// ADC_CTL1 = (ADC_PMU_CH0 + 1) | (ADC_NTC_CH1 + 1) | 0x80; //ADC Start Enable,Set Channel N Enabel.
|
||||
|
||||
SFRADDR = ADC_IntEn; //Enable ADC Interrupt.b[4:0]:ADC4-ADC0
|
||||
SFRDATA |= 0x03;
|
||||
|
||||
EX6 = 1; //ADC IRQ Enable
|
||||
}
|
||||
|
||||
/*
|
||||
*******************************************************************************
|
||||
* void PMU_ADC_Chn_Data(PMU_ADC_CHANNELS_E pmu_Adc_Chn)
|
||||
*
|
||||
* Description : 设置相应通道的使能。在主循环中按通道设置各个通道的使能,在中断中获取对应的ADC值,减少主函数的阻塞。
|
||||
*
|
||||
* Arguments : NONE
|
||||
|
||||
* Returns : NONE
|
||||
|
||||
* Notes : NONE
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
void PMU_ADC_Chn_Data(PMU_ADC_CHANNELS_E pmu_Adc_Chn)
|
||||
{
|
||||
I2cSfr_Write( XSEN_CTRL , (0x08 | pmu_Adc_Chn) );
|
||||
|
||||
g_PMU_ADC_Chn = pmu_Adc_Chn;
|
||||
|
||||
ADC_CTL1 = 0x81; //ADC Start Enable,Set Channel N Enabel.
|
||||
|
||||
SFRADDR = ADC_IntEn; //Enable ADC Interrupt.b[4:0]:ADC4-ADC0
|
||||
SFRDATA = 0x01;
|
||||
}
|
||||
|
||||
/*
|
||||
*******************************************************************************
|
||||
* void EX6_ADC_isr(void ) interrupt Interrupt_Vector_IE6
|
||||
*
|
||||
* Description : System External Intterupt 6 adc Interrupt.
|
||||
*
|
||||
* Arguments : NONE
|
||||
|
||||
* Returns : NONE
|
||||
|
||||
* Notes : NONE
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
void EX6_ADC_isr(void) interrupt Interrupt_Vector_IE6
|
||||
{
|
||||
uint8_t reg_addr_bk = 0;
|
||||
|
||||
reg_addr_bk = SFRADDR;
|
||||
|
||||
if(ADC_IntFlag & 0x01)
|
||||
{
|
||||
g_Vpmu_Adc = ExtSfr_Read(ADC_CH0_L);
|
||||
g_Vpmu_Adc |= (uint16_t)( ( ExtSfr_Read(ADC_CH0_H) & 0x03 ) << 8 );
|
||||
|
||||
g_Vpmu_Adc = ((uint32_t)g_Vpmu_Adc * 2500) >> 10 ; //ADC的LSB = 2500mV / 1024 = 2.44mV
|
||||
|
||||
/*获取xSen对应的ADC值*/
|
||||
switch (g_PMU_ADC_Chn)
|
||||
{
|
||||
case pmu_ADC_IVOL:
|
||||
g_pmu_Adc_Ivol = g_Vpmu_Adc >> 2; //采样比例4mV/mA
|
||||
break;
|
||||
|
||||
case pmu_ADC_VBAT:
|
||||
Vbat_Adc = g_Vpmu_Adc << 1; //vbat的2分压
|
||||
break;
|
||||
|
||||
case pmu_ADC_VIN:
|
||||
g_pmu_Adc_Vin = g_Vpmu_Adc << 3; //vin的8分压
|
||||
break;
|
||||
|
||||
case pmu_ADC_VPMID:
|
||||
g_pmu_Adc_Vpmid = g_Vpmu_Adc << 2; //PMID的4分压
|
||||
break;
|
||||
|
||||
case pmu_ADC_VOR:
|
||||
g_pmu_Adc_Vor = g_Vpmu_Adc << 2; //vor的4分压
|
||||
break;
|
||||
|
||||
case pmu_ADC_VOL:
|
||||
g_pmu_Adc_Vol = g_Vpmu_Adc << 2; //vol的4分压
|
||||
break;
|
||||
|
||||
case pmu_ADC_VDD:
|
||||
g_pmu_Adc_Vdd = g_Vpmu_Adc << 1; //vdd的2分压
|
||||
break;
|
||||
|
||||
case pmu_ADC_IVOR:
|
||||
g_pmu_Adc_Ivor = g_Vpmu_Adc >> 2; //采样比例4mV/mA
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(ADC_IntFlag & 0x02)
|
||||
{
|
||||
g_Vntc_Adc = ExtSfr_Read(ADC_CH1_L);
|
||||
g_Vntc_Adc |= (uint16_t)( ( ExtSfr_Read(ADC_CH1_H) & 0x03 ) << 8 );
|
||||
}
|
||||
|
||||
if(ADC_IntFlag & 0x04)
|
||||
{
|
||||
g_Vbjt_Adc = ExtSfr_Read(ADC_CH2_L);
|
||||
g_Vbjt_Adc |= (uint16_t)( ( ExtSfr_Read(ADC_CH2_H) & 0x03 ) << 8 );
|
||||
}
|
||||
|
||||
if(ADC_IntFlag & 0x08)
|
||||
{
|
||||
g_Vp13_Adc = ExtSfr_Read(ADC_CH3_L);
|
||||
g_Vp13_Adc |= (uint16_t)( ( ExtSfr_Read(ADC_CH3_H) & 0x03 ) << 8 );
|
||||
}
|
||||
|
||||
if(ADC_IntFlag & 0x10)
|
||||
{
|
||||
g_Vref_Adc = ExtSfr_Read(ADC_CH4_L);
|
||||
g_Vref_Adc |= (uint16_t)( ( ExtSfr_Read(ADC_CH4_H) & 0x03 ) << 8 );
|
||||
}
|
||||
|
||||
ADC_IntFlag = 0x0F;
|
||||
|
||||
SFRADDR = reg_addr_bk;
|
||||
}
|
||||
|
||||
|
||||
#endif
|
||||
|
603
UsrSrc/bat/bat.c
Normal file
603
UsrSrc/bat/bat.c
Normal file
@ -0,0 +1,603 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
*
|
||||
* @file bat.c
|
||||
* @brief Voltage-based RC model gauge algorithm
|
||||
* @ic sy8835
|
||||
*
|
||||
* @version 1.0
|
||||
* @date 2024/11/01 17:35:40
|
||||
* @author Alex Xu
|
||||
*
|
||||
* Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
* All Rights Reserved
|
||||
*
|
||||
* History:
|
||||
* Revision Date Author Desc
|
||||
* 1.0.0 2024/11/01 Alex build this file
|
||||
******************************************************************************
|
||||
*/
|
||||
#include "bat.h"
|
||||
#include "adc.h"
|
||||
#include "pmu.h"
|
||||
|
||||
idata uint8_t bat_level = 0;
|
||||
idata uint8_t bat_level_Pec = 0;
|
||||
|
||||
bit F_batlevel_low = 0; //电池低压
|
||||
|
||||
#if 0
|
||||
|
||||
#if GAUGE_ENABLE
|
||||
|
||||
/******************************************************************************\
|
||||
Macro definitions
|
||||
\******************************************************************************/
|
||||
|
||||
/******************************************************************************\
|
||||
Variables definitions
|
||||
\******************************************************************************/
|
||||
|
||||
static idata const uint16 ocv_zero = 3200;
|
||||
static idata const uint16 ocv_full = 4200;
|
||||
static idata uint8 ocv_delta[20] = {255 ,93 ,24 ,48 ,38 ,41 ,34 ,30 ,33 ,40 ,48 ,66 ,84 ,78 ,74 ,79 ,82 ,85 ,86 ,85};
|
||||
|
||||
//带插值版的参数
|
||||
static idata const uint16 kint_0deg[5] = { 25, 32, 31, 27, 24}; //初值,当小于0度时采用此值
|
||||
|
||||
static idata const uint8 Kint_soc0[6] = { 1, 22, 160, 255, 25, 20 }; //SOC=0~10%,不同温度Kint的delta值,每8度一个delta值*8,如第一个值代表0~7度,第二个值代表8~15度
|
||||
static idata const uint8 Kint_soc1[6] = { 6, 0, 12, 110, 0, 0 }; //SOC=10~25%,不同温度Kint的delta值,每8度一个delta值*8,如第一个值代表0~7度,第二个值代表8~15度
|
||||
static idata const uint8 Kint_soc2[6] = { 0, 10, 15, 40, 10, 0 }; //SOC=25~50%,不同温度Kint的delta值,每8度一个delta值*8,如第一个值代表0~7度,第二个值代表8~15度
|
||||
static idata const uint8 Kint_soc3[6] = { 38, 18, 48, 160, 38, 29 }; //SOC=50~80%,不同温度Kint的delta值,每8度一个delta值*8,如第一个值代表0~7度,第二个值代表8~15度
|
||||
static idata const uint8 Kint_soc4[6] = { 14, 45, 80, 210, 88, 29 }; //SOC=80~100%,不同温度Kint的delta值,每8度一个delta值*8,如第一个值代表0~7度,第二个值代表8~15度
|
||||
|
||||
//uint8 k_ratio_chg_fast[5];
|
||||
//uint8 k_ratio_chg_norm[5];
|
||||
|
||||
static idata const uint8 k_ratio_chg_temp[7] = { 128, 54, 42, 32, 32, 46, 32 }; //20210304 充电kint各温度区间补偿系数
|
||||
static idata const uint8 k_ratio_chg_temprange[6] = { 5, 10, 16, 35, 44, 55 }; //将温度划分成7个区间,默认为5度以下,5~9,10~14,15~34,35~44,45~55,55以上
|
||||
|
||||
//int8 fastchgth; //快充阈值,当充电电流大于这个阈值时,选择k_ratio_chg_fast,否则选择k_ratio_chg_norm
|
||||
|
||||
//高位开始代表从15度开始SOC值是否需要减1,如15度相比25度容量衰减超过1%,则bit15=1,然后14度和15度一样,则bit14=0,如果13度比15度容量小1%,则bit13=1,依次类推
|
||||
//小于0度固定和0度补偿值一样,此方式最大补偿值为每1度补1%,16度以上不补偿
|
||||
static idata uint16 c_delta = 0;
|
||||
|
||||
//用户写入参数
|
||||
uint8 c_ratio_customer = 0; //客户参数区写入的值,客户预存各种场景容量损失,可以灵活补偿负载/温度/老化等多种场景
|
||||
|
||||
//电量计中间变量
|
||||
static uint32 K_int = 0;
|
||||
static uint16 OCV_int16 = 0;
|
||||
static uint32 OCV_int32 = 0;
|
||||
|
||||
static uint8 SOC_int = 0; //直接从OCV表查表得到的SOC,(100-SOC_int)*Qmax为到充满需要的容量,SOC_int由于未补偿负载,除非常温和负载大小和建模一致否则放电使用此SOC会有误差
|
||||
static int8 SOC_dsg = 0; //放电时使用的SOC,在不同温度下会有跳变,SOC_dsg=SOC_int-c_ratio_0deg/c_ratio_10deg
|
||||
uint8 SOC_report = 0; //上报的SOC值,结合库仑计信息和SOC_int/SOC_dsg之间
|
||||
|
||||
//20210219 更新基于OCV的平滑算法
|
||||
static uint16 OCV_deltahalf = 0; //用于追赶SOC的OCV累计溢出值,取各SOC 0.5%对应的OCV delta值
|
||||
static uint8 OCV_count = 0; //计算当前和上次更新SOC_report的差值
|
||||
static uint16 OCV_lastupdate = 0; //记录上次更新SOC_report的OCV值
|
||||
|
||||
|
||||
/******************************************************************************\
|
||||
Functions definitions
|
||||
\******************************************************************************/
|
||||
|
||||
//20210304新增对于充电温度补偿
|
||||
/*
|
||||
*******************************************************************************
|
||||
* static uint8 Kint_Rate_chg(int8 temperature_s)
|
||||
*
|
||||
* Description : 对充电温度进行补偿
|
||||
|
||||
* Arguments : NONE
|
||||
|
||||
* Returns : NONE
|
||||
|
||||
* Notes : NONE
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
static uint8 Kint_Rate_chg(int8 temperature_s)//查找不同温度下充电时Kint补偿系数
|
||||
{
|
||||
if(temperature_s > k_ratio_chg_temprange[5])
|
||||
return k_ratio_chg_temp[6];
|
||||
if(temperature_s > k_ratio_chg_temprange[4])
|
||||
return k_ratio_chg_temp[5];
|
||||
if(temperature_s > k_ratio_chg_temprange[3])
|
||||
return k_ratio_chg_temp[4];
|
||||
if(temperature_s > k_ratio_chg_temprange[2])
|
||||
return k_ratio_chg_temp[3];
|
||||
if(temperature_s > k_ratio_chg_temprange[1])
|
||||
return k_ratio_chg_temp[2];
|
||||
if(temperature_s > k_ratio_chg_temprange[0])
|
||||
return k_ratio_chg_temp[1];
|
||||
|
||||
return k_ratio_chg_temp[0];
|
||||
}
|
||||
|
||||
/*查表获得Kint值*/
|
||||
/*
|
||||
*******************************************************************************
|
||||
* static uint16 Kint_Find_delta(int8 temperature_s)
|
||||
*
|
||||
* Description : 对充电温度进行补偿
|
||||
|
||||
* Arguments : NONE
|
||||
|
||||
* Returns : NONE
|
||||
|
||||
* Notes : NONE
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
static uint16 Kint_Find_delta(int8 temperature_s, uint8 current_s)
|
||||
{
|
||||
uint8 temprange,i,temperature_use,tempindex;
|
||||
// uint16 Kint_chg_temp = 0;
|
||||
uint32 Kintsum = 0;
|
||||
// uint16 Kint_temp = 0;
|
||||
|
||||
if (temperature_s < 0)
|
||||
temperature_use = 0;
|
||||
else if (temperature_s > 47)
|
||||
temperature_use = 47;
|
||||
else
|
||||
temperature_use = temperature_s; //温度限定在0~63度,超过63度或者低于0度则用63度和0度 temperature_s = 35
|
||||
|
||||
temprange = temperature_use >> 3; //找出温度区间 temperature_use/8 = 35/8 = 4 为何要用8取模和取余?Kinit表是以8度为一个区间取值
|
||||
tempindex = temperature_use - (temprange << 3); //对温度取余,得到某个区间第几个温度值 temperature_use%8 = 35 % 8 = 3
|
||||
|
||||
if (SOC_int > 80)
|
||||
{
|
||||
for (i = temprange; i > 0; i--)
|
||||
{
|
||||
Kintsum = Kintsum + (((uint32)Kint_soc4[i-1])<<3); //温度大于某个区间就从0区间到此区间的所有的delta值*8并累加,例如:35℃,所在温度区间为32~39℃,第四区间。
|
||||
}
|
||||
|
||||
for (i = tempindex; i > 0; i--)
|
||||
{
|
||||
Kintsum = Kintsum + ((uint32)Kint_soc4[temprange]); //将不足一个区间(0-8只间的值)数据按照加法累加,计算温度余数对应的kint累加值;例如:35℃,在温度区间余数为35-32=3℃。
|
||||
}
|
||||
Kintsum = Kintsum >> 3; //由于delta放大了8倍,这里要除以8
|
||||
Kintsum = Kintsum + kint_0deg[4]; //得到此温度下的放电Kint值
|
||||
}
|
||||
else if (SOC_int > 50)
|
||||
{
|
||||
for (i = temprange; i > 0; i--)
|
||||
{
|
||||
Kintsum = Kintsum + (((uint32)Kint_soc3[i-1]) << 3); //温度大于某个区间就将区间的delta值*8
|
||||
|
||||
}
|
||||
for (i = tempindex; i > 0; i--)
|
||||
{
|
||||
Kintsum = Kintsum + ((uint32)Kint_soc3[temprange]); //将不足一个区间(8个值)数据按照加法累加
|
||||
|
||||
}
|
||||
Kintsum = Kintsum >> 3; //由于delta放大了8倍,这里要除以8
|
||||
Kintsum = Kintsum + kint_0deg[3]; //得到此温度下的放电Kint值
|
||||
}
|
||||
|
||||
else if (SOC_int > 25)
|
||||
{
|
||||
for (i = temprange; i > 0; i--)
|
||||
{
|
||||
Kintsum = Kintsum + (((uint32)Kint_soc2[i-1]) << 3); //温度大于某个区间就将区间的delta值*8
|
||||
|
||||
}
|
||||
for (i = tempindex; i > 0; i--)
|
||||
{
|
||||
Kintsum = Kintsum + ((uint32)Kint_soc2[temprange]); //将不足一个区间(8个值)数据按照加法累加
|
||||
|
||||
}
|
||||
Kintsum = Kintsum >> 3; //由于delta放大了8倍,这里要除以8
|
||||
Kintsum = Kintsum + kint_0deg[2]; //得到此温度下的放电Kint值
|
||||
}
|
||||
|
||||
else if (SOC_int > 10)
|
||||
{
|
||||
for (i = temprange; i > 0; i--)
|
||||
{
|
||||
Kintsum = Kintsum + (((uint32)Kint_soc1[i-1] )<< 3); //温度大于某个区间就将区间的delta值*8
|
||||
|
||||
}
|
||||
for (i = tempindex; i > 0; i--)
|
||||
{
|
||||
Kintsum = Kintsum + ((uint32)Kint_soc1[temprange]); //将不足一个区间(8个值)数据按照加法累加
|
||||
|
||||
}
|
||||
Kintsum = Kintsum >> 3; //由于delta放大了8倍,这里要除以8
|
||||
Kintsum = Kintsum + kint_0deg[1]; //得到此温度下的放电Kint值
|
||||
}
|
||||
else
|
||||
{
|
||||
for (i = temprange; i > 0; i--)
|
||||
{
|
||||
Kintsum = Kintsum + (((uint32)Kint_soc0[i-1]) << 3); //温度大于某个区间就将区间的delta值*8
|
||||
|
||||
}
|
||||
for (i = tempindex; i > 0; i--)
|
||||
{
|
||||
Kintsum = Kintsum + ((uint32)Kint_soc0[temprange]); //将不足一个区间(8个值)数据按照加法累加
|
||||
|
||||
}
|
||||
Kintsum = Kintsum >> 3; //由于delta放大了8倍,这里要除以8
|
||||
Kintsum = Kintsum + kint_0deg[0]; //得到此温度下的放电Kint值
|
||||
}
|
||||
|
||||
if(current_s > 0)
|
||||
{
|
||||
Kintsum = Kintsum * Kint_Rate_chg(temperature_s);
|
||||
}
|
||||
|
||||
return (uint16)Kintsum;
|
||||
}
|
||||
|
||||
//2023/2/17以上代码为通过查表找出随SOC,温度和充放电倍率变化的Kint值,可以根据需要适当减少数组数量,增加常温下不同SOC区间的Kint值以提高常温精度
|
||||
//2023/2/17下面代码引入current_s标志位主要是为了解决没有充放电时SOC出现反弹的问题
|
||||
//2023/2/17 如果对低温性能要求不高,可以删掉SOC_dsg,SOC_Dsg的只是单纯在SOC_int基础上低温时直接减去一个随温度变化的值SOC_dsg = SOC_int - c_ratio_customer;
|
||||
//如果不对SOC_int做低温补偿就不会出现SOC_dsg这个值造成差异。那么这个代码就可以精简掉SOC_dsg
|
||||
//这里代码还做了一个基于OCV_count的平滑,如果OCV差值只要超过0.5%(OCV_deltahalf),就允许快速平滑SOC。
|
||||
//实际应用例子,因为我们的OCV-SOC_int表是基于常温的,假设某个OCV值下SOC_int=20%,但是目前是低温状态,查表得到c_ratio_customer=10%,那么SOC_dsg=10%。即实际当前是只有10%
|
||||
//电量,但是SOC_int=20%,这时上报的SOC_report就要从初始的20%(=SOC_int)平滑到放电截止的时0%(SOC_dsg=0%,SOC_int=10%),因此SOC_report就要以2倍的速度下降,所以引入OCV_deltahalf
|
||||
//但还有一种场景是在低温下SOC_report=SOC——dsg,但是此时恢复到常温,比如低温下SOC_report=SOC_dsg=10%,但是回到常温对应电量有20%,因此显示10%要更满速度到0%才能使电量充分放完
|
||||
|
||||
static void SOC_report_cal(uint8 current_s) //current_s在具体实现上用charger存在标志位取代即可
|
||||
{
|
||||
if(OCV_int16 > OCV_lastupdate) //取绝对值
|
||||
OCV_count = OCV_int16 - OCV_lastupdate;
|
||||
else
|
||||
OCV_count = OCV_lastupdate - OCV_int16;
|
||||
|
||||
if (current_s > 0) //充电时,建议改成charger插入状态
|
||||
{
|
||||
if((SOC_int == 100) && (SOC_report < 100)) //如果SOC_int已经到达100%则SOC_report快速趋近100%
|
||||
{
|
||||
SOC_report++;
|
||||
OCV_lastupdate = OCV_int16;
|
||||
}
|
||||
else if((OCV_count > OCV_deltahalf) && (SOC_int > SOC_report))
|
||||
{
|
||||
SOC_report++;
|
||||
OCV_lastupdate = OCV_int16;
|
||||
}
|
||||
}
|
||||
else //放电时
|
||||
{
|
||||
if((SOC_dsg == 0) && (SOC_report > 0)) //如果SOC_dsg已经到达0%则SOC_report快速趋近0%
|
||||
{
|
||||
SOC_report--;
|
||||
OCV_lastupdate = OCV_int16;
|
||||
}
|
||||
else if((OCV_count > OCV_deltahalf) && (SOC_report > SOC_dsg))
|
||||
{
|
||||
SOC_report--;
|
||||
OCV_lastupdate = OCV_int16;
|
||||
}
|
||||
else if((OCV_count > (OCV_deltahalf << 2)) && (SOC_report < SOC_dsg)) //OCV变化2%SOC对应的Delta允许变化1%
|
||||
{
|
||||
if(SOC_report > 0)
|
||||
{
|
||||
SOC_report--;
|
||||
OCV_lastupdate = OCV_int16;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(SOC_report == 100)
|
||||
OCV_lastupdate = ocv_full;
|
||||
if(SOC_report == 0)
|
||||
OCV_lastupdate = ocv_zero;
|
||||
|
||||
bat_level = SOC_report;
|
||||
}
|
||||
|
||||
|
||||
//20210108更新版的SOC_dsg计算方法(计算出温度或者客户写入的容量损失后的容量)
|
||||
//20210118修正代码中bug
|
||||
static void SOC_dsg_cal(int8 temperature_s)
|
||||
{
|
||||
int8 i;
|
||||
uint16 k;
|
||||
|
||||
SOC_dsg = SOC_int;//大于16度保持不变
|
||||
|
||||
if (temperature_s < 16)//低于16度做补偿,按位补偿相减
|
||||
{
|
||||
k = 0x8000;
|
||||
for (i=16; i > temperature_s; i--)
|
||||
{
|
||||
if (c_delta & k)
|
||||
SOC_dsg--;
|
||||
k = k >> 1;
|
||||
}
|
||||
}
|
||||
|
||||
if (c_ratio_customer != 0)
|
||||
{
|
||||
SOC_dsg = SOC_int - c_ratio_customer;
|
||||
}
|
||||
if (SOC_dsg < 0)
|
||||
SOC_dsg = 0;
|
||||
}
|
||||
|
||||
//2023/2/17 查OCV表计算SOC_int
|
||||
static uint8 SOCint_Calc(uint16 ocv)
|
||||
{
|
||||
uint8 i = 0;
|
||||
uint8 k, j;
|
||||
uint16 ocv_sum;
|
||||
uint16 ocv_now;
|
||||
|
||||
ocv_now = (uint16)ocv << 3;
|
||||
|
||||
ocv_sum = ocv_zero << 3;
|
||||
for (k = 0; k < 20; k++)
|
||||
{
|
||||
for (j = 0; j < 5; j++)
|
||||
{
|
||||
//2021/04/01 避免OCV=OCV_zero时SOC=1%而不是0%
|
||||
if ((ocv_sum) >=(ocv_now))
|
||||
goto Findsoc;
|
||||
ocv_sum = ocv_sum + ocv_delta[k];
|
||||
i++;
|
||||
}
|
||||
}
|
||||
Findsoc:
|
||||
//20210219
|
||||
OCV_deltahalf = ocv_delta[k] >> 4;//OCV_deltahalf取0.5%对应的OCV差值(由于ocv_delta[k]为8倍的1%SOC OCV差值)
|
||||
return i;
|
||||
}
|
||||
|
||||
/*
|
||||
*******************************************************************************
|
||||
* void Gauge_Init(int vbat_init, int current_init, int temp_init)
|
||||
*
|
||||
* Description : Gauge Initialization
|
||||
*
|
||||
* Arguments :int vbat_init:Bat Adc Value
|
||||
* int current_init:Charger Exist Flag
|
||||
* int temp_init: Bat NTC Adc Value
|
||||
*
|
||||
* Returns :None
|
||||
|
||||
* Notes :
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
static void Gauge_Init(int vbat_init, uint8 current_init, int temp_init)
|
||||
{
|
||||
if (vbat_init < (ocv_zero))
|
||||
{
|
||||
OCV_int16 = (ocv_zero);
|
||||
}
|
||||
else if(vbat_init > (ocv_full))
|
||||
{
|
||||
OCV_int16 = (ocv_full);
|
||||
}
|
||||
else
|
||||
OCV_int16 = vbat_init;
|
||||
|
||||
OCV_int32 = ((uint32)OCV_int16) << 16;
|
||||
|
||||
SOC_int = SOCint_Calc((uint16)(OCV_int32 >> 16));
|
||||
|
||||
SOC_dsg_cal((int8)temp_init);
|
||||
|
||||
//testdata = SOC_dsg;
|
||||
SOC_report_cal(current_init);//平滑处理返回 平滑后的SOC值SOC_report
|
||||
|
||||
}
|
||||
/*
|
||||
*******************************************************************************
|
||||
* void Gauge_Update(int vbat_new, int current_new, int temp_new)
|
||||
*
|
||||
* Description : Gauge Updata
|
||||
*
|
||||
* Arguments : int vbat_new:Bat Adc Value
|
||||
int current_new:Charge Current
|
||||
int temp_new:Bat NTC Value
|
||||
|
||||
* Returns : None
|
||||
|
||||
* Notes :
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
static void Gauge_Update(int vbat_new, uint8 current_new, int temp_new)
|
||||
{
|
||||
|
||||
K_int = Kint_Find_delta((int8)temp_new,current_new);
|
||||
|
||||
OCV_int32 = OCV_int32 - (K_int * (OCV_int32 >> 16)) + (K_int * vbat_new);
|
||||
|
||||
OCV_int16 = (OCV_int32 >> 16);
|
||||
if (OCV_int16 > (ocv_full))
|
||||
{
|
||||
OCV_int32 = ((uint32) ocv_full ) << 16;
|
||||
}
|
||||
if (OCV_int16 < (ocv_zero))
|
||||
{
|
||||
OCV_int32 = ((uint32) ocv_zero) << 16;
|
||||
}
|
||||
//20210401 增加 OCV_int16 = (OCV_int32 >> 16);避免没有及时更新OCV_int16
|
||||
OCV_int16 = (OCV_int32 >> 16);
|
||||
|
||||
SOC_int = SOCint_Calc(OCV_int16);
|
||||
|
||||
SOC_dsg_cal((int8)temp_new);
|
||||
|
||||
SOC_report_cal(current_new);//平滑处理返回 平滑后的SOC值SOC_report
|
||||
}
|
||||
|
||||
void Bat_Cal_Init(void)
|
||||
{
|
||||
uint8 Charger_On = 0;
|
||||
uint8 Vbat_Init = 0;
|
||||
uint16 Vbat_NTC_Value = 0;
|
||||
|
||||
Charger_On = CHIP_STA4 & 0x07;
|
||||
#if ADC_ENABLE
|
||||
Vbat_Init = Vbat_Adc; //获取Bat电压
|
||||
Vbat_NTC_Value = Vntc_Adc;
|
||||
#endif
|
||||
Gauge_Init(Vbat_Init,Charger_On,Vbat_NTC_Value);
|
||||
#ifdef _DEBUG_BAT
|
||||
printf("Gauge Init!\r\n");
|
||||
#endif
|
||||
}
|
||||
|
||||
void Bat_Gauge_Handle(void)
|
||||
{
|
||||
uint8 Charger_On = 0;
|
||||
uint8 Vbat_Adc_Value = 0;
|
||||
uint16 Vbat_NTC_Value = 0;
|
||||
|
||||
Charger_On = CHIP_STA4 & 0x07;
|
||||
#if ADC_ENABLE
|
||||
Vbat_Adc_Value = Vbat_Adc; //获取Bat电压
|
||||
Vbat_NTC_Value = Vntc_Adc;
|
||||
#endif
|
||||
Gauge_Update(Vbat_Adc_Value,Charger_On,Vbat_NTC_Value);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
#else
|
||||
|
||||
//bit F_batlevel_low = 0; //电池低压
|
||||
|
||||
#if BAT_VALUE
|
||||
|
||||
#define C_offset_bat_level_MAX 150
|
||||
#define C_offset_bat_level_MIN 10
|
||||
|
||||
#define C_bat_level_protect 0
|
||||
#define C_bat_level_lowpower 1
|
||||
|
||||
|
||||
bit F_batlevel_protect = 0; //低电保护
|
||||
|
||||
idata uint8_t offset_bat_level = ( C_offset_bat_level_MAX + C_offset_bat_level_MIN ) / 2;
|
||||
|
||||
|
||||
#define C_batLevel_SetMax 20
|
||||
|
||||
/*充电电池电压会浮高,具体电压需要测试。*/
|
||||
const uint16_t Boost_batlevel_Threshold[C_batLevel_SetMax] =
|
||||
{
|
||||
3000, //0%
|
||||
3050, //5%
|
||||
3100, //10%
|
||||
3200, //15%
|
||||
3250, //20%
|
||||
3300, //25%
|
||||
3350, //30%
|
||||
3400, //4
|
||||
3450,
|
||||
3500, //5
|
||||
3575,
|
||||
3650, //6
|
||||
3720,
|
||||
3800, //7
|
||||
3850,
|
||||
3900, //8
|
||||
3975,
|
||||
4050, //9
|
||||
4125,
|
||||
4200 //10
|
||||
};
|
||||
#if 0
|
||||
const uint16_t Charging_batlevel_Threshold1[C_batLevel_SetMax] =
|
||||
{
|
||||
3050, //1
|
||||
3150, //2
|
||||
3350, //3
|
||||
3450, //4
|
||||
3550, //5
|
||||
3700, //6
|
||||
3850, //7
|
||||
3950, //8
|
||||
4100, //9
|
||||
4200 //10
|
||||
};
|
||||
#endif
|
||||
void check_bat_level(void)
|
||||
{
|
||||
uint8_t i = 0;
|
||||
//get bat level
|
||||
#if ADC_ENABLE
|
||||
for(i=0; i < C_batLevel_SetMax; i++)
|
||||
{
|
||||
#if 0
|
||||
|
||||
if( Vbat_Adc < Boost_batlevel_Threshold[i] )
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
#else
|
||||
if(ChgStatus == CHG_STA_ING) //充电
|
||||
{
|
||||
if( Vbat_Adc < Boost_batlevel_Threshold[i] + 50 )
|
||||
break;
|
||||
}
|
||||
else //放电
|
||||
{
|
||||
if( Vbat_Adc < Boost_batlevel_Threshold[i] )
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
if( i > bat_level )
|
||||
{
|
||||
offset_bat_level++;
|
||||
}
|
||||
else
|
||||
{
|
||||
offset_bat_level--;
|
||||
}
|
||||
|
||||
if( pmu_Info.pmu_Chip_STA & INIT_OK )
|
||||
{
|
||||
bat_level = i;
|
||||
bat_level_Pec = 5 * bat_level;
|
||||
}
|
||||
|
||||
//debounce
|
||||
if( (offset_bat_level > C_offset_bat_level_MAX) || (offset_bat_level < C_offset_bat_level_MIN) )
|
||||
{
|
||||
//update
|
||||
bat_level = i;
|
||||
bat_level_Pec = 5 * bat_level;
|
||||
offset_bat_level = ( C_offset_bat_level_MAX + C_offset_bat_level_MIN ) / 2;
|
||||
}
|
||||
#if 1
|
||||
if( bat_level <= C_bat_level_protect )
|
||||
{
|
||||
F_batlevel_protect = 1;
|
||||
}
|
||||
else if( bat_level > ( C_bat_level_protect + 1 ) )
|
||||
{
|
||||
F_batlevel_protect = 0;
|
||||
}
|
||||
#endif
|
||||
if( bat_level <= C_bat_level_lowpower )
|
||||
{
|
||||
F_batlevel_low = 1;
|
||||
}
|
||||
else if( bat_level > (C_bat_level_lowpower + 1) )
|
||||
{
|
||||
F_batlevel_low = 0;
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif
|
523
UsrSrc/charger/charger_module.c
Normal file
523
UsrSrc/charger/charger_module.c
Normal file
@ -0,0 +1,523 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
*
|
||||
* @file charger_module.c
|
||||
* @brief charger module
|
||||
* @ic sy8835
|
||||
*
|
||||
* @version 1.0
|
||||
* @date 2024/11/01 17:35:40
|
||||
* @author Alex Xu
|
||||
*
|
||||
* Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
* All Rights Reserved
|
||||
*
|
||||
* History:
|
||||
* Revision Date Author Desc
|
||||
* 1.0.0 2024/11/01 Alex build this file
|
||||
******************************************************************************
|
||||
*/
|
||||
/*_____ I N C L U D E S ____________________________________________________*/
|
||||
#include "charger_module.h"
|
||||
#include "adc.h"
|
||||
#include "sys_tim.h"
|
||||
#include "discharge_module.h"
|
||||
#include "system.h"
|
||||
#include "vox_module.h"
|
||||
#include "led.h"
|
||||
#include "userapp.h"
|
||||
|
||||
bit Charger_Done = 0;
|
||||
|
||||
#ifdef NTC_ENABLE
|
||||
bit NTC_Pro_Flag = 0;
|
||||
#endif
|
||||
|
||||
|
||||
idata TE_CHG_STA ChgStatus; // CHG状态定义
|
||||
|
||||
#if CHARGER_ENABLE
|
||||
/******************************************************************************\
|
||||
Macro definitions
|
||||
\******************************************************************************/
|
||||
#define NTC_PRO_DEBOUNCE_TIM 10
|
||||
|
||||
/******************************************************************************\
|
||||
Variables definitions
|
||||
\******************************************************************************/
|
||||
|
||||
|
||||
|
||||
idata uint8_t gConstant_Cur_Max_Setting = CHG_ICC_2_00MA; //Charge最大充电电流。
|
||||
|
||||
|
||||
idata s_gCharger_Cfg gCharge_Cfg;
|
||||
|
||||
/******************************************************************************\
|
||||
Functions definitions
|
||||
\******************************************************************************/
|
||||
|
||||
/*
|
||||
*******************************************************************************
|
||||
* void Charger_init(void)
|
||||
*
|
||||
* Description : Charger Initialization
|
||||
*
|
||||
* Arguments : NONE
|
||||
|
||||
* Returns : NONE
|
||||
|
||||
* Notes : NONE
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
|
||||
void Charger_Init(void)
|
||||
{
|
||||
gCharge_Cfg.nTrickle_Cur = CHG_ITC_20MA;
|
||||
|
||||
gCharge_Cfg.nIterm_Cur = CHG_ITERM_20MA;
|
||||
|
||||
gCharge_Cfg.nConstant_Cur = gConstant_Cur_Max_Setting;
|
||||
|
||||
gCharge_Cfg.nVFloat = CHG_VFLOAT_4_200V;
|
||||
|
||||
I2cSfr_Write( IRQ_EN0, VDPM_IRQ );
|
||||
}
|
||||
|
||||
#ifdef NTC_ENABLE
|
||||
/*
|
||||
*******************************************************************************
|
||||
* uint8_t Charger_NTC_Control(uint8_t Charge_sta)
|
||||
*
|
||||
* Description : Charger NTC Control
|
||||
* NTC 支持 103 和 104 电阻,NTC 温度检测由软件通过 ADC 采集 NTC 引脚电压。
|
||||
* 如果支持电量计温度检测线性化,支持电量计方案 103 的 NTC 需要并一个 8.2k
|
||||
|
||||
* 电阻(20uA 电流,103 NTC 需要串联 10k 电阻),104 的 NTC 并联 82k 电阻。
|
||||
* 在使能充电前,软件先检测NTC 温度,如果 NTC 浮空,屏蔽 NTC 功能,
|
||||
* 并锁定;如果 NTC 下拉到 0V,关闭充电和放电。NTC 保护后,软件关闭充电,
|
||||
* 温度恢复正常并持续 250ms,再继续充电。
|
||||
*
|
||||
* Arguments : NTC_Protect_Type_e NTC_Type:Shield 、JEITA or IEC;Charge_sta:Charge or not
|
||||
|
||||
* Returns :NTC_Flag (0:Shield; 1:JEITA; 2:IEC)
|
||||
|
||||
* Notes : NONE
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
uint8_t PMU_NTC_Handle(uint8_t Charge_sta)
|
||||
{
|
||||
uint16_t NTC_Adc = 0;
|
||||
|
||||
uint8_t NTC_Flag = FALSE;
|
||||
|
||||
bit NTC_Change_CV_Chg_Flag;
|
||||
|
||||
static bit DisChg_NTC_Low_Pro_Flag;
|
||||
static bit DisChg_NTC_High_Pro_Flag;
|
||||
|
||||
static bit CHG_NTC_Low_Pro_Flag;
|
||||
static bit CHG_NTC_High_Pro_Flag;
|
||||
|
||||
static bit NTC_250mA_Chg_Flag;
|
||||
static bit NTC_500mA_Chg_Flag;
|
||||
|
||||
#if ADC_ENABLE
|
||||
NTC_Adc = g_Vntc_Adc;
|
||||
#endif
|
||||
|
||||
if( NTC_Adc >= 2000 ) ////屏蔽NTC功能,NTC浮空,屏蔽 NTC 功能,并锁定。
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
#if NTC_JEITA
|
||||
|
||||
if( Charge_sta ) //VBUS plugin status 充电模式
|
||||
{
|
||||
if( ( NTC_Adc <= T_0C ) && ( NTC_Adc > T_60C ) )
|
||||
{
|
||||
if( NTC_Adc > T_10C ) //0.5*ICC充电
|
||||
{
|
||||
NTC_250mA_Chg_Flag = 1;
|
||||
|
||||
gCharge_Cfg.nConstant_Cur = gConstant_Cur_Max_Setting / 2;
|
||||
|
||||
if( NTC_500mA_Chg_Flag )
|
||||
{
|
||||
if( NTC_Adc > T_8C )
|
||||
{
|
||||
NTC_500mA_Chg_Flag = 0;
|
||||
|
||||
//gCharge_Cur.nConstant_Cur = gConstant_Cur_Max_Setting / 2;
|
||||
}
|
||||
else
|
||||
{
|
||||
gCharge_Cfg.nConstant_Cur = gConstant_Cur_Max_Setting;
|
||||
}
|
||||
}
|
||||
|
||||
NTC_Flag = FALSE;
|
||||
}
|
||||
else
|
||||
if( NTC_Adc <= T_10C && NTC_Adc > T_45C ) //1*ICC充电
|
||||
{
|
||||
NTC_500mA_Chg_Flag = 1;
|
||||
|
||||
gCharge_Cfg.nConstant_Cur = gConstant_Cur_Max_Setting;
|
||||
|
||||
if( NTC_250mA_Chg_Flag )
|
||||
{
|
||||
if( NTC_Adc <= T_12C )
|
||||
{
|
||||
NTC_250mA_Chg_Flag = 0;
|
||||
|
||||
// gCharge_Cur.nConstant_Cur = gConstant_Cur_Max_Setting;
|
||||
}
|
||||
else
|
||||
{
|
||||
gCharge_Cfg.nConstant_Cur = gConstant_Cur_Max_Setting / 2;
|
||||
}
|
||||
}
|
||||
|
||||
gCharge_Cfg.nVFloat = CHG_VFLOAT_4_200V;
|
||||
|
||||
if( NTC_Change_CV_Chg_Flag )
|
||||
{
|
||||
if( NTC_Adc <= T_42C )
|
||||
{
|
||||
NTC_Change_CV_Chg_Flag = 0;
|
||||
|
||||
// gCharge_Cur.nVFloat = CHG_VFLOAT_4_200V;
|
||||
}
|
||||
else
|
||||
{
|
||||
gCharge_Cfg.nVFloat = CHG_VFLOAT_4_050V;
|
||||
}
|
||||
}
|
||||
|
||||
NTC_Flag = FALSE;
|
||||
}
|
||||
else
|
||||
if( NTC_Adc <= T_45C ) //浮充电压4.05V
|
||||
{
|
||||
NTC_Change_CV_Chg_Flag = 1;
|
||||
|
||||
gCharge_Cfg.nVFloat = CHG_VFLOAT_4_050V;
|
||||
|
||||
if( NTC_500mA_Chg_Flag )
|
||||
{
|
||||
if(NTC_Adc <= T_47C)
|
||||
{
|
||||
NTC_500mA_Chg_Flag = 0;
|
||||
|
||||
// gCharge_Cur.nVFloat = CHG_VFLOAT_4_050V;
|
||||
}
|
||||
else
|
||||
{
|
||||
gCharge_Cfg.nVFloat = CHG_VFLOAT_4_200V;
|
||||
}
|
||||
}
|
||||
|
||||
NTC_Flag = FALSE;
|
||||
}
|
||||
|
||||
if( CHG_NTC_Low_Pro_Flag )
|
||||
{
|
||||
if( NTC_Adc < T_3C)
|
||||
{
|
||||
CHG_NTC_Low_Pro_Flag = 0;
|
||||
NTC_Flag = FALSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
NTC_Flag = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
if( CHG_NTC_High_Pro_Flag )
|
||||
{
|
||||
if( NTC_Adc > T_57C )
|
||||
{
|
||||
CHG_NTC_High_Pro_Flag = 0;
|
||||
NTC_Flag = FALSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
NTC_Flag = TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if( NTC_Adc > T_0C ) //不充电
|
||||
{
|
||||
CHG_NTC_Low_Pro_Flag = 1;
|
||||
|
||||
#ifdef _DEBUG_CHARGER
|
||||
printf("NTC Low Pro!NTC_Adc:%d,(line:%d)\r\n",(uint16)NTC_Adc,(uint16)__LINE__);
|
||||
#endif
|
||||
NTC_Flag = TRUE;
|
||||
}
|
||||
else
|
||||
if( NTC_Adc <= T_60C ) //不充电
|
||||
{
|
||||
|
||||
CHG_NTC_High_Pro_Flag = 1;
|
||||
|
||||
NTC_Flag = TRUE;
|
||||
|
||||
#ifdef _DEBUG_CHARGER
|
||||
printf("NTC High Pro!NTC_Adc:%d,(line:%d)\r\n",(uint16)NTC_Adc,(uint16)__LINE__);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
DisChg_NTC_Low_Pro_Flag = 0;
|
||||
DisChg_NTC_High_Pro_Flag = 0;
|
||||
}
|
||||
else //放电模式
|
||||
{
|
||||
CHG_NTC_Low_Pro_Flag = 0;
|
||||
CHG_NTC_High_Pro_Flag = 0;
|
||||
|
||||
if( NTC_Adc <= T_N20C && NTC_Adc > T_80C ) //正常放电
|
||||
{
|
||||
if( DisChg_NTC_Low_Pro_Flag )
|
||||
{
|
||||
if( NTC_Adc < T_N15C )
|
||||
{
|
||||
DisChg_NTC_Low_Pro_Flag = 0;
|
||||
NTC_Flag = FALSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
NTC_Flag = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
if( DisChg_NTC_High_Pro_Flag )
|
||||
{
|
||||
if( NTC_Adc > T_75C )
|
||||
{
|
||||
DisChg_NTC_High_Pro_Flag = 0;
|
||||
NTC_Flag = FALSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
NTC_Flag = TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
else //异常不放电
|
||||
{
|
||||
if( NTC_Adc > T_N20C )
|
||||
{
|
||||
DisChg_NTC_Low_Pro_Flag = 1;
|
||||
}
|
||||
else
|
||||
if( NTC_Adc < T_80C )
|
||||
{
|
||||
DisChg_NTC_High_Pro_Flag = 1;
|
||||
}
|
||||
|
||||
NTC_Flag = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
#elif NTC_IEC
|
||||
|
||||
if(Charge_sta) //VBUS plugin status 充电模式
|
||||
{
|
||||
if(NTC_Adc <= T_0C && NTC_Adc > T_45C) //正常充电
|
||||
{
|
||||
if(CHG_NTC_Low_Pro_Flag)
|
||||
{
|
||||
if( NTC_Adc < T_3C )
|
||||
{
|
||||
CHG_NTC_Low_Pro_Flag = 0;
|
||||
|
||||
NTC_Flag = FALSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
NTC_Flag = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
if(CHG_NTC_High_Pro_Flag)
|
||||
{
|
||||
if( NTC_Adc > T_42C )
|
||||
{
|
||||
CHG_NTC_High_Pro_Flag = 0;
|
||||
|
||||
NTC_Flag = FALSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
NTC_Flag = TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
else //异常不充电
|
||||
{
|
||||
if(NTC_Adc > T_0C)
|
||||
{
|
||||
CHG_NTC_Low_Pro_Flag = 1;
|
||||
}
|
||||
else
|
||||
if(NTC_Adc <= T_45C)
|
||||
{
|
||||
CHG_NTC_High_Pro_Flag = 1;
|
||||
}
|
||||
|
||||
#ifdef _DEBUG_CHARGER
|
||||
printf("NTC Pro!NTC_Adc:%d,CHG_CTL:0x%x,(line:%d)\r\n",(uint16)NTC_Adc,(uint16)CHG_CTL,(uint16)__LINE__);
|
||||
#endif
|
||||
NTC_Flag = TRUE;
|
||||
}
|
||||
|
||||
DisChg_NTC_Low_Pro_Flag = 0;
|
||||
DisChg_NTC_High_Pro_Flag = 0;
|
||||
}
|
||||
else //放电模式
|
||||
{
|
||||
CHG_NTC_Low_Pro_Flag = 0;
|
||||
CHG_NTC_High_Pro_Flag = 0;
|
||||
|
||||
if( (NTC_Adc <= T_N20C) && (NTC_Adc > T_80C) ) //正常放电
|
||||
{
|
||||
if( DisChg_NTC_Low_Pro_Flag )
|
||||
{
|
||||
if( NTC_Adc < T_N15C )
|
||||
{
|
||||
DisChg_NTC_Low_Pro_Flag = 0;
|
||||
|
||||
NTC_Flag = FALSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
NTC_Flag = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
if(DisChg_NTC_High_Pro_Flag)
|
||||
{
|
||||
if( NTC_Adc > T_75C )
|
||||
{
|
||||
DisChg_NTC_High_Pro_Flag = 0;
|
||||
|
||||
NTC_Flag = FALSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
NTC_Flag = TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
else //异常不放电
|
||||
{
|
||||
if(NTC_Adc > T_N20C)
|
||||
{
|
||||
DisChg_NTC_Low_Pro_Flag = 1;
|
||||
}
|
||||
else
|
||||
if(NTC_Adc <= T_80C)
|
||||
{
|
||||
DisChg_NTC_High_Pro_Flag = 1;
|
||||
}
|
||||
|
||||
NTC_Flag = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
return NTC_Flag;
|
||||
}
|
||||
|
||||
#endif
|
||||
/*
|
||||
*******************************************************************************
|
||||
* void Charger_Handler(void)
|
||||
*
|
||||
* Description : Charger Handle. ---- 充电过程除了根据 NTC 动态调节充电电流和截止电压外,其他由硬件控制。充电过程
|
||||
发生异常,硬件进行相应处理,并发送标志位,软件可以进行相应处理。
|
||||
*
|
||||
* Arguments : NONE
|
||||
|
||||
* Returns : NONE
|
||||
|
||||
* Notes : NONE
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
/*
|
||||
1、充电超时:充电超时后,软件关闭充电使能,等待VIN拔出。
|
||||
*/
|
||||
void Charger_Handler(void)
|
||||
{
|
||||
if( pmu_Info.pmu_Fault_STA2 & ( Fault_Sta2_VinUV | Fault_Sta2_VinOVP | Fault_Sta2_CHIP_OTP | Fault_Sta2_PMID_OCP_SHP ) ) //检测到VIN异常、芯片过热、PMID异常,则关闭Charger使能后返回。
|
||||
{
|
||||
Set_PMU_CHG(OFF); //Disable Charger
|
||||
|
||||
ChgStatus = CHG_NONE;
|
||||
|
||||
Charger_Done = 0;
|
||||
#ifdef _DEBUG_CHARGER
|
||||
printf("No Chg\r\n");
|
||||
#endif
|
||||
return;
|
||||
}
|
||||
|
||||
/*各项保护都无需软件处理,只处理充电超时,超时后需要等VBUS重新插拔后才重新开始Charger流程。*/
|
||||
|
||||
#ifdef NTC_ENABLE
|
||||
|
||||
/*NTC Handle*/ //使能Charger前先检测NTC温度,异常就不开充电。(CHIP_STA4 & 0x80):PG
|
||||
if( PMU_NTC_Handle(CHG_ON) ) //NTC保护,不充电。
|
||||
{
|
||||
Set_PMU_CHG(OFF); //Disable Charger.
|
||||
|
||||
NTC_Pro_Flag = 1;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
NTC_Pro_Flag = 0;
|
||||
|
||||
#endif
|
||||
|
||||
if( (pmu_Info.pmu_Chip_STA & ChipSTA_DISCHG) == ChipSTA_CHG_DONE ) //Charg complete interrupt
|
||||
{
|
||||
#ifdef _DEBUG_CHARGER
|
||||
printf("Chg Done\r\n");
|
||||
#endif
|
||||
Charger_Done = 1;
|
||||
|
||||
ChgStatus = CHG_STA_COMPLETED;
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
I2cSfr_Write( CHG_ICC_SET, gCharge_Cfg.nConstant_Cur );
|
||||
|
||||
I2cSfr_Write( CHG_VFLOAT_SET, gCharge_Cfg.nVFloat );
|
||||
|
||||
I2cSfr_Write( CHG_ITC_ITERM_SET, ( gCharge_Cfg.nTrickle_Cur << 4 ) | gCharge_Cfg.nIterm_Cur );
|
||||
|
||||
Set_PMU_CHG(ON); //Enable Charger
|
||||
|
||||
ChgStatus = CHG_STA_ING;
|
||||
#ifdef _DEBUG_CHARGER
|
||||
printf("Chg ing\r\n");
|
||||
#endif
|
||||
Charger_Done = 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
|
216
UsrSrc/discharge/discharge_module.c
Normal file
216
UsrSrc/discharge/discharge_module.c
Normal file
@ -0,0 +1,216 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
*
|
||||
* @file discharge_module.c
|
||||
* @brief discharge module
|
||||
* @ic sy8835
|
||||
*
|
||||
* @version 1.0
|
||||
* @date 2024/11/01 17:35:40
|
||||
* @author Alex Xu
|
||||
*
|
||||
* Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
* All Rights Reserved
|
||||
*
|
||||
* History:
|
||||
* Revision Date Author Desc
|
||||
* 1.0.0 2024/11/01 Alex build this file
|
||||
******************************************************************************
|
||||
*/
|
||||
#include "discharge_module.h"
|
||||
#include "vox_module.h"
|
||||
#include "adc.h"
|
||||
#include "charger_module.h"
|
||||
#include "sys_tim.h"
|
||||
#include "system.h"
|
||||
#include "led.h"
|
||||
#include "bat.h"
|
||||
|
||||
bit gBoost_Prepared_Flag = 0; //Boost满足开启条件。
|
||||
|
||||
#if DISCHARGE_ENABLE
|
||||
/******************************************************************************\
|
||||
Macro definitions
|
||||
\******************************************************************************/
|
||||
|
||||
/******************************************************************************\
|
||||
Variables definitions
|
||||
\******************************************************************************/
|
||||
|
||||
|
||||
|
||||
bit gBoost_UVLO_Flag = 0;
|
||||
|
||||
/******************************************************************************\
|
||||
Functions definitions
|
||||
\******************************************************************************/
|
||||
|
||||
#if 0
|
||||
/*
|
||||
*******************************************************************************
|
||||
* void DisCharge_Boost_Open(void)
|
||||
*
|
||||
* Description : Boost Open
|
||||
* VIN 存在时,Boost 在电池电压高于 UVLO(硬件关闭 2.8/3.0V,硬件清 boost 使能。开
|
||||
* 软件实现,有 VIN,3.6V,无 VIN,3.3V)和电池存在的情况下才能开启。
|
||||
*
|
||||
* Arguments : NONE
|
||||
|
||||
* Returns : NONE
|
||||
|
||||
* Notes : NONE
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
void DisCharge_Boost_Open(void)
|
||||
{
|
||||
if( gBoost_Prepared_Flag ) //Boost需满足开启条件
|
||||
{
|
||||
BST_EN = 1; //Boost Enable;异常时由硬件主动关闭。
|
||||
|
||||
#ifdef _DEBUG_DISCHARGE
|
||||
printf("Bst Open\r\n");
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
*******************************************************************************
|
||||
* void DisCharge_Boost_Close(void)
|
||||
*
|
||||
* Description : Boost Close;主要是出现异常时由硬件主动关闭,软件在电池LOW电量状态下,是否需要关闭boost输出?
|
||||
*
|
||||
* Arguments :
|
||||
|
||||
* Returns :
|
||||
|
||||
* Notes :
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
void DisCharge_Boost_Close(void)
|
||||
{
|
||||
if( (BST_EN & 0x01) && gBoost_Prepared_Flag )
|
||||
{
|
||||
BST_EN = 0; //Boost Disable
|
||||
gBoost_Prepared_Flag = 0;
|
||||
|
||||
#ifdef _DEBUG_DISCHARGE
|
||||
printf("Bst Close\r\n");
|
||||
#endif
|
||||
}
|
||||
}
|
||||
#endif
|
||||
/*
|
||||
*******************************************************************************
|
||||
* void DisCharge_Handler(void)
|
||||
*
|
||||
* Description : Boost放电的保护功能包括:输出短路保护,电池 UVLO 保护,放电过流保护,过温保护。
|
||||
*
|
||||
* Arguments :
|
||||
|
||||
* Returns :
|
||||
|
||||
* Notes :
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
|
||||
void DisCharge_Handler(void)
|
||||
{
|
||||
/*放电过流保护 --- 硬件实现*/
|
||||
#if 0
|
||||
|
||||
gBoost_Prepared_Flag = 1;
|
||||
|
||||
#else
|
||||
|
||||
/*过温保护 --- 硬件实现*/
|
||||
if( pmu_Info.pmu_Fault_STA2 & Fault_Sta2_CHIP_OTP )
|
||||
{
|
||||
gBoost_Prepared_Flag = 0;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
/*Boost Input UVLO 硬件实现*/
|
||||
if( pmu_Info.pmu_Fault_STA2 & Fault_Sta2_BoostUV )
|
||||
{
|
||||
gBoost_Prepared_Flag = 0;
|
||||
|
||||
gBoost_UVLO_Flag = 1;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
#if BAT_VALUE
|
||||
|
||||
if( F_batlevel_protect )
|
||||
{
|
||||
Set_PMU_Boost(OFF);
|
||||
|
||||
gBoost_Prepared_Flag = 0;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
/*输出过流保护 (使用中断标志位,Boost短路中断发生后会锁存,需要写1清零。)-- 短路保护后一直打嗝或者打嗝BOOST_HICCUP_TIM次之后disable boost,打嗝时间 250ms(软件实现)。*/
|
||||
if( pmu_Info.pmu_Fault_STA2 & Fault_Sta2_PMID_OCP_SHP )
|
||||
{
|
||||
#ifdef _DEBUG_DISCHARGE
|
||||
printf("Boost Pro Output Short!\r\n");
|
||||
#endif
|
||||
gBoost_Prepared_Flag = 0;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
#ifdef NTC_ENABLE
|
||||
/*NTC Handle*/ //使能Boost前先检测NTC温度,异常就不开放电。
|
||||
if( PMU_NTC_Handle( DISCHG_ON ) ) //NTC保护,不放电。
|
||||
{
|
||||
gBoost_Prepared_Flag = 0;
|
||||
|
||||
Set_PMU_Boost(OFF);
|
||||
|
||||
NTC_Pro_Flag = 1;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
NTC_Pro_Flag = 0;
|
||||
|
||||
#endif
|
||||
|
||||
gBoost_Prepared_Flag = 1;
|
||||
|
||||
/*
|
||||
VIN 存在时,Boost 在电池电压高于 UVLO(硬件关闭 2.8/3.0V,硬件清 boost 使能。开
|
||||
软件实现,有 VIN,3.6V,无 VIN,3.3V)和电池存在的情况下才能开启。
|
||||
软件上只作有 VIN,3.6V开boost,无 VIN,3.3V开boost逻辑。
|
||||
只关注VIN存在时的UVLO恢复Boost情况。无VIN情况下由硬件处理。
|
||||
*/
|
||||
if ( gBoost_UVLO_Flag )
|
||||
{
|
||||
if( ChgStatus == CHG_STA_ING ) //充电中
|
||||
{
|
||||
if( Vbat_Adc >= OPEN_BOOST_VIN )
|
||||
{
|
||||
gBoost_Prepared_Flag = 1;
|
||||
|
||||
gBoost_UVLO_Flag = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
gBoost_Prepared_Flag = 0; //Boost Disable
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
}
|
||||
|
||||
#endif
|
||||
|
66
UsrSrc/gpio/gpio.c
Normal file
66
UsrSrc/gpio/gpio.c
Normal file
@ -0,0 +1,66 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
*
|
||||
* @file gpio.c
|
||||
* @brief gpio module
|
||||
* @ic sy8835
|
||||
*
|
||||
* @version 1.0
|
||||
* @date 2024/11/01 15:00:40
|
||||
* @author Alex Xu
|
||||
*
|
||||
* Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
* All Rights Reserved
|
||||
*
|
||||
* History:
|
||||
* Revision Date Author Desc
|
||||
* 1.0.0 2024/11/01 Alex build this file
|
||||
******************************************************************************/
|
||||
/*_____ I N C L U D E S ____________________________________________________*/
|
||||
#include "gpio.h"
|
||||
#include "sleep.h"
|
||||
#include "userapp.h"
|
||||
#include "led.h"
|
||||
|
||||
|
||||
/******************************************************************************\
|
||||
Macro definitions
|
||||
\******************************************************************************/
|
||||
|
||||
/******************************************************************************\
|
||||
Variables definitions
|
||||
\******************************************************************************/
|
||||
//uint8_t System_Rst_Cnt = 0; //系统软复位定时器
|
||||
|
||||
/******************************************************************************\
|
||||
Functions definitions
|
||||
\******************************************************************************/
|
||||
|
||||
/*
|
||||
*******************************************************************************
|
||||
* void Gpio_Init(void)
|
||||
*
|
||||
* Description : gpio Initialization. --- 系统初始化调用。
|
||||
*
|
||||
* Arguments :
|
||||
|
||||
* Returns :
|
||||
|
||||
* Notes :
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
#if 0
|
||||
void GPIO_Init(void)
|
||||
{
|
||||
/* GPIO */
|
||||
|
||||
// SFRADDR = P0_OE;
|
||||
// SFRDATA |= 0x1C; //P02,P03,P04设置成输出模式
|
||||
|
||||
SFRADDR = P1_OE;
|
||||
SFRDATA = 0x01;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
105
UsrSrc/hall/hall.c
Normal file
105
UsrSrc/hall/hall.c
Normal file
@ -0,0 +1,105 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
*
|
||||
* @file hall.c
|
||||
* @brief hall module
|
||||
* @ic sy8835
|
||||
*
|
||||
* @version 1.0
|
||||
* @date 2024/11/01 15:00:40
|
||||
* @author Alex Xu
|
||||
*
|
||||
* Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
* All Rights Reserved
|
||||
*
|
||||
* History:
|
||||
* Revision Date Author Desc
|
||||
* 1.0.0 2024/11/01 Alex build this file
|
||||
******************************************************************************/
|
||||
/*_____ I N C L U D E S ____________________________________________________*/
|
||||
#include "hall.h"
|
||||
#include "key.h"
|
||||
#include "led.h"
|
||||
#include "vox_module.h"
|
||||
#include "userapp.h"
|
||||
#include "charger_module.h"
|
||||
#include "sleep.h"
|
||||
|
||||
|
||||
|
||||
/******************************************************************************\
|
||||
Macro definitions
|
||||
\******************************************************************************/
|
||||
|
||||
/******************************************************************************\
|
||||
Variables definitions
|
||||
\******************************************************************************/
|
||||
|
||||
CoverStatus_E CoverStatus;
|
||||
|
||||
bit CoverEvent_Flg = 0; //Hall开关触发事件标志位
|
||||
bit CoverEvent_Flg_led = 0;
|
||||
|
||||
#if HALL_ENABLE
|
||||
|
||||
uint8_t Hall_Sta_bk = 0xff;
|
||||
|
||||
/******************************************************************************\
|
||||
Functions definitions
|
||||
\******************************************************************************/
|
||||
|
||||
|
||||
/*
|
||||
*******************************************************************************
|
||||
* void Hall_Handle(void)
|
||||
*
|
||||
* Description : Hall Handle --- 主循环中调用,调用周期10ms。CoverStatus --- 充电仓盖子状态。
|
||||
*
|
||||
* Arguments : NONE
|
||||
|
||||
* Returns : NONE
|
||||
|
||||
* Notes : NONE
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
|
||||
void Hall_Handler(void)
|
||||
{
|
||||
uint8_t Hall_Sta = 0;
|
||||
|
||||
Hall_Sta = pmu_Info.pmu_Chip_STA & HALL_STA;
|
||||
|
||||
if( Hall_Sta != Hall_Sta_bk)
|
||||
{
|
||||
if( pmu_Info.pmu_Chip_STA & HALL_STA ) //Hall 高电平
|
||||
{
|
||||
#if HALL_OPEN_LEV_SET
|
||||
CoverStatus = OPEN;
|
||||
#else
|
||||
CoverStatus = CLOSE;
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
#if HALL_OPEN_LEV_SET
|
||||
CoverStatus = CLOSE;
|
||||
#else
|
||||
CoverStatus = OPEN;
|
||||
#endif
|
||||
}
|
||||
|
||||
CoverEvent_Flg = 1;
|
||||
|
||||
CoverEvent_Flg_led = 1;
|
||||
|
||||
#ifdef LED_DISPLAY
|
||||
LED_On_Flag = 1;
|
||||
#endif
|
||||
|
||||
Hall_Sta_bk = Hall_Sta;
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
265
UsrSrc/i2c_simu/i2c_simu.c
Normal file
265
UsrSrc/i2c_simu/i2c_simu.c
Normal file
@ -0,0 +1,265 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
*
|
||||
* @file i2c_simu.h
|
||||
* @brief i2c gpio simu module
|
||||
* @ic sy8835
|
||||
*
|
||||
* @version 1.0
|
||||
* @date 2024/10/31 09:59:40
|
||||
* @author Alex Xu
|
||||
*
|
||||
* Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
* All Rights Reserved
|
||||
*
|
||||
* History:
|
||||
* Revision Date Author Desc
|
||||
* 1.0.0 2024/10/31 Alex Xu build this file
|
||||
******************************************************************************
|
||||
*/
|
||||
#include "i2c_simu.h"
|
||||
|
||||
#if GPIO_I2C_SIMULATE
|
||||
|
||||
/******************************************************************************\
|
||||
Macro definitions
|
||||
\******************************************************************************/
|
||||
|
||||
/******************************************************************************\
|
||||
Variables definitions
|
||||
\******************************************************************************/
|
||||
|
||||
idata bool F_I2C_SIMU_INIT = false;
|
||||
idata bool F_I2C_SIMU_ERROR = false;
|
||||
|
||||
/******************************************************************************\
|
||||
Functions definitions
|
||||
\******************************************************************************/
|
||||
|
||||
void I2C_GPIOInit(void)
|
||||
{
|
||||
// if(F_I2C_SIMU_INIT)
|
||||
// return;
|
||||
|
||||
_pin_i2c_scl_config();
|
||||
_pin_i2c_sda_config();
|
||||
|
||||
F_I2C_SIMU_INIT = true;
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
* Function Name : I2C_delay
|
||||
* Description : Simulation IIC Timing series delay
|
||||
* Input : None
|
||||
* Output : None
|
||||
* Return : None
|
||||
****************************************************************************** */
|
||||
void I2C_delay(void)
|
||||
{
|
||||
uint8_t t = 0;
|
||||
|
||||
#ifdef __I2C_SPEED_FAST__
|
||||
t = 1;
|
||||
#else
|
||||
t = 20;
|
||||
#endif
|
||||
|
||||
while(t > 0)
|
||||
{
|
||||
t--;
|
||||
}
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
* Function Name : I2C_Start
|
||||
* Description : Master Start Simulation IIC Communication
|
||||
* Input : None
|
||||
* Output : None
|
||||
* Return : Wheather Start
|
||||
****************************************************************************** */
|
||||
bool I2C_Start(void)
|
||||
{
|
||||
_I2C_SDA_H();
|
||||
|
||||
_I2C_SCL_H();
|
||||
I2C_delay();
|
||||
|
||||
if(!_READ_I2C_SDA())
|
||||
{
|
||||
#ifdef __I2C_SIMU_DEBUG__
|
||||
printf("\n\rThe I2C bus is busy!\r\n");
|
||||
#endif
|
||||
return FALSE; //SDA线为低电平则总线忙,退出
|
||||
}
|
||||
_I2C_SDA_L();
|
||||
I2C_delay();
|
||||
|
||||
if(_READ_I2C_SDA())
|
||||
{
|
||||
#ifdef __I2C_SIMU_DEBUG__
|
||||
printf("\n\rThe I2C bus is busy!\r\n");
|
||||
#endif
|
||||
return FALSE; //SDA线为高电平则总线出错,退出
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
/*******************************************************************************
|
||||
* Function Name : I2C_Stop
|
||||
* Description : Master Stop Simulation IIC Communication
|
||||
* Input : None
|
||||
* Output : None
|
||||
* Return : None
|
||||
****************************************************************************** */
|
||||
void I2C_Stop(void)
|
||||
{
|
||||
_I2C_SCL_L();
|
||||
_I2C_SDA_L();
|
||||
I2C_delay();
|
||||
|
||||
_I2C_SCL_H();
|
||||
I2C_delay();
|
||||
|
||||
_I2C_SDA_H();
|
||||
I2C_delay();
|
||||
I2C_delay();
|
||||
}
|
||||
/*******************************************************************************
|
||||
* Function Name : I2C_Ack
|
||||
* Description : Master Send Acknowledge Single
|
||||
* Input : None
|
||||
* Output : None
|
||||
* Return : None
|
||||
****************************************************************************** */
|
||||
void I2C_Ack(void)
|
||||
{
|
||||
_I2C_SCL_L();
|
||||
I2C_delay();
|
||||
|
||||
_I2C_SDA_L();
|
||||
I2C_delay();
|
||||
|
||||
_I2C_SCL_H();
|
||||
I2C_delay();
|
||||
I2C_delay();
|
||||
|
||||
_I2C_SCL_L();
|
||||
I2C_delay();
|
||||
}
|
||||
/*******************************************************************************
|
||||
* Function Name : I2C_NoAck
|
||||
* Description : Master Send No Acknowledge Single
|
||||
* Input : None
|
||||
* Output : None
|
||||
* Return : None
|
||||
****************************************************************************** */
|
||||
void I2C_NoAck(void)
|
||||
{
|
||||
_I2C_SCL_L();
|
||||
I2C_delay();
|
||||
|
||||
_I2C_SDA_H();
|
||||
I2C_delay();
|
||||
|
||||
_I2C_SCL_H();
|
||||
I2C_delay();
|
||||
|
||||
_I2C_SCL_L();
|
||||
I2C_delay();
|
||||
}
|
||||
/*******************************************************************************
|
||||
* Function Name : I2C_WaitAck
|
||||
* Description : Master Reserive Slave Acknowledge Single
|
||||
The statue of the ACK will be output by the USART
|
||||
* Input : None
|
||||
* Output : None
|
||||
* Return : none
|
||||
****************************************************************************** */
|
||||
void I2C_WaitAck(void)
|
||||
{
|
||||
_I2C_SCL_L();
|
||||
I2C_delay();
|
||||
|
||||
_I2C_SDA_H();
|
||||
I2C_delay();
|
||||
|
||||
_I2C_SCL_H();
|
||||
I2C_delay();
|
||||
I2C_delay();
|
||||
|
||||
if(_READ_I2C_SDA())
|
||||
{
|
||||
#ifdef __I2C_SIMU_DEBUG__
|
||||
printf("No ACK from the I2Cbus\r\n");
|
||||
#endif
|
||||
}
|
||||
|
||||
_I2C_SCL_L();
|
||||
I2C_delay();
|
||||
}
|
||||
/*******************************************************************************
|
||||
* Function Name : I2C_SendByte
|
||||
* Description : Master Send a Byte to Slave
|
||||
* Input : Will Send Date
|
||||
* Output : None
|
||||
* Return : None
|
||||
****************************************************************************** */
|
||||
void I2C_SendByte(uint8_t SendByte) //数据从高位到低位//
|
||||
{
|
||||
uint8_t i = 8;
|
||||
|
||||
while(i--)
|
||||
{
|
||||
_I2C_SCL_L();
|
||||
|
||||
if( SendByte & 0x80 )
|
||||
{
|
||||
_I2C_SDA_H();
|
||||
}
|
||||
else
|
||||
{
|
||||
_I2C_SDA_L();
|
||||
}
|
||||
|
||||
SendByte<<=1;
|
||||
I2C_delay();
|
||||
_I2C_SCL_H();
|
||||
I2C_delay();
|
||||
}
|
||||
|
||||
_I2C_SCL_L();
|
||||
}
|
||||
/*******************************************************************************
|
||||
* Function Name : I2C_RadeByte
|
||||
* Description : Master Reserive a Byte From Slave
|
||||
* Input : None
|
||||
* Output : None
|
||||
* Return : Date From Slave
|
||||
****************************************************************************** */
|
||||
unsigned char I2C_ReadByte(void) //数据从高位到低位//
|
||||
{
|
||||
uint8_t i = 8;
|
||||
uint8_t ReceiveByte = 0;
|
||||
|
||||
_I2C_SDA_H();
|
||||
while(i--)
|
||||
{
|
||||
ReceiveByte<<=1;
|
||||
_I2C_SCL_L();
|
||||
I2C_delay();
|
||||
|
||||
_I2C_SCL_H();
|
||||
I2C_delay();
|
||||
if(_READ_I2C_SDA())
|
||||
{
|
||||
ReceiveByte |= 0x01;
|
||||
}
|
||||
}
|
||||
_I2C_SCL_L();
|
||||
|
||||
return ReceiveByte;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
303
UsrSrc/key/key.c
Normal file
303
UsrSrc/key/key.c
Normal file
@ -0,0 +1,303 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
*
|
||||
* @file key.c
|
||||
* @brief key module
|
||||
* @ic sy8835
|
||||
*
|
||||
* @version 1.0
|
||||
* @date 2024/11/01 15:00:40
|
||||
* @author Alex Xu
|
||||
*
|
||||
* Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
* All Rights Reserved
|
||||
*
|
||||
* History:
|
||||
* Revision Date Author Desc
|
||||
* 1.0.0 2024/11/01 Alex build this file
|
||||
******************************************************************************/
|
||||
/*_____ I N C L U D E S ____________________________________________________*/
|
||||
#include "key.h"
|
||||
#include "system.h"
|
||||
#include "led.h"
|
||||
#include "sleep.h"
|
||||
#include "adc.h"
|
||||
#include "bat.h"
|
||||
#include "vox_module.h"
|
||||
#include "userapp.h"
|
||||
#include "hall.h"
|
||||
|
||||
#if KEY_ENABLE
|
||||
/******************************************************************************\
|
||||
Macro definitions
|
||||
\******************************************************************************/
|
||||
#define KEY_PRESS_500MS_CNT 25 //按键按下500ms(调用周期20ms)
|
||||
|
||||
#define KEY_PRESS_2S_CNT 100 //按键按下计数2s(调用周期20ms)
|
||||
|
||||
#define KEY_PRESS_5S_CNT 250
|
||||
|
||||
#define KEY_PRESS_8S_CNT 400 //按键按下计数8s(调用周期20ms)
|
||||
|
||||
/******************************************************************************\
|
||||
Variables definitions
|
||||
\******************************************************************************/
|
||||
|
||||
bit Key_Press_short_irq = 0;
|
||||
bit Key_Press_l_irq = 0;
|
||||
bit Key_Press_ll_irq = 0;
|
||||
|
||||
idata KEY_EVENT_E Event_key = 0;
|
||||
|
||||
uint8_t Key_TWS_Pair_Tim = 0;
|
||||
uint8_t Key_TWS_Pair_Cnt = 0;
|
||||
|
||||
uint16_t Key_Press_Debounce = 0;
|
||||
|
||||
#define KEY_TWS_PAIR_TIMER 20
|
||||
#define KEY_TWS_PAIR_CNT 5
|
||||
|
||||
#define KEY_TWS_PAIR_CLEAR_CNT 30
|
||||
|
||||
/******************************************************************************\
|
||||
Functions definitions
|
||||
\******************************************************************************/
|
||||
|
||||
|
||||
/*
|
||||
*******************************************************************************
|
||||
* void Key_Handler(void)
|
||||
*
|
||||
* Description : Key Handler --- 主循环中调用,调用周期5ms。其中长按(按键时间大于2s)需要判断抬键动作才触发。
|
||||
CoverStatus --- 充电仓盖子状态。(本函数提供对应Key事件标志位,后续应用待定)
|
||||
(调用周期20ms)
|
||||
*
|
||||
* Arguments : NONE
|
||||
|
||||
* Returns : NONE
|
||||
|
||||
* Notes : NONE
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
void Key_Handler(void)
|
||||
{
|
||||
static bit Key_Press_Flag;
|
||||
|
||||
static bit Key_Lift_Flag;
|
||||
|
||||
static bit nKey_Press_short_irq;
|
||||
|
||||
static bit nKey_Press_2s_Flag;
|
||||
|
||||
static bit nKey_Press_8s_Flag;
|
||||
|
||||
if( pmu_Info.pmu_Chip_STA & KEY_STA ) //Key的状态值:1:按下;
|
||||
{
|
||||
Key_Press_Debounce++;
|
||||
if( Key_Press_Debounce >= KEY_PRESS_2S_CNT ) //长按2s,需要抬键判断
|
||||
{
|
||||
if( !nKey_Press_2s_Flag )
|
||||
{
|
||||
nKey_Press_2s_Flag = 1;
|
||||
}
|
||||
}
|
||||
else
|
||||
if( Key_Press_Debounce >= KEY_PRESS_8S_CNT ) //长按8s,VOX掉电
|
||||
{
|
||||
if( !nKey_Press_8s_Flag )
|
||||
{
|
||||
nKey_Press_8s_Flag = 1;
|
||||
|
||||
Key_Press_ll_irq = 1;
|
||||
}
|
||||
}
|
||||
|
||||
Key_Press_Flag = 1;
|
||||
|
||||
Key_Lift_Flag = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
if( Key_Press_Flag )
|
||||
{
|
||||
Key_Press_Flag = 0;
|
||||
|
||||
Key_Lift_Flag = 1;
|
||||
|
||||
nKey_Press_8s_Flag = 0;
|
||||
|
||||
if( (Key_Press_Debounce <= KEY_PRESS_500MS_CNT) ) //松开按键,按下时间小于500ms,则识别为短按,显示电量
|
||||
{
|
||||
Key_Press_short_irq = 1;
|
||||
|
||||
nKey_Press_short_irq = 1;
|
||||
#ifdef LED_DISPLAY
|
||||
LED_On_Flag = 1;
|
||||
#endif
|
||||
}
|
||||
else
|
||||
if( (Key_Press_Debounce < KEY_PRESS_5S_CNT) ) //按键时间大于2s小于5s则判断为长按2s。
|
||||
{
|
||||
if( nKey_Press_2s_Flag )
|
||||
{
|
||||
nKey_Press_2s_Flag = 0;
|
||||
|
||||
Key_Press_l_irq = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Key_Press_Debounce = 0;
|
||||
}
|
||||
|
||||
if( Key_Lift_Flag )
|
||||
{
|
||||
Key_Lift_Flag = 0;
|
||||
|
||||
if( Key_Press_l_irq )
|
||||
{
|
||||
Key_Press_l_irq = 0;
|
||||
/*todo*/
|
||||
Event_key = KEY_EVENT_L_2S;
|
||||
|
||||
Key_TWS_Pair_Tim = 0;
|
||||
|
||||
/*耳机配对*/
|
||||
|
||||
#ifdef _DEBUG_KEY
|
||||
printf("long 2s press\r\n");
|
||||
#endif
|
||||
}
|
||||
/*长按8s,系统强制进shipmode.*/
|
||||
if( Key_Press_ll_irq )
|
||||
{
|
||||
Key_Press_ll_irq = 0;
|
||||
/*todo*/
|
||||
Event_key = KEY_EVENT_LL_8S;
|
||||
|
||||
#ifdef _DEBUG_KEY
|
||||
printf("supper long 8s press\r\n");
|
||||
#endif
|
||||
}
|
||||
|
||||
if( nKey_Press_short_irq )
|
||||
{
|
||||
nKey_Press_short_irq = 0;
|
||||
|
||||
/*todo*/
|
||||
Event_key = KEY_EVENT_SHORT;
|
||||
|
||||
#ifdef _DEBUG_KEY
|
||||
printf("short press\r\n");
|
||||
#endif
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Event_key = KEY_EVENT_Empty;
|
||||
}
|
||||
|
||||
#if 1
|
||||
if ( CoverStatus == OPEN )
|
||||
{
|
||||
if( Event_key == KEY_EVENT_L_2S ) //长按2s,充电仓发送配对指令。
|
||||
{
|
||||
if( Key_TWS_Pair_Tim < 1 )
|
||||
{
|
||||
#ifdef VOX_TX
|
||||
HandleTxCommand(VHOUSE_CMD_PAIR,VOR_CHAN); //右耳发配对指令,区分耳机通道。
|
||||
#endif
|
||||
Vox_Get_BES_Addr_Flag[VOL_TYPE] = 0x00;
|
||||
Vox_Get_BES_Addr_Flag[VOR_TYPE] = 0x00;
|
||||
}
|
||||
else
|
||||
{
|
||||
if(Key_TWS_Pair_Cnt > KEY_TWS_PAIR_CNT) //耳机蓝牙地址置换超时10s,关闭蓝牙地址置换,开启VOX 5V。
|
||||
{
|
||||
Key_TWS_Pair_Cnt = 0;
|
||||
#if VOX_ENABLE
|
||||
VOX_EN_Type(VOX_VOUT_Mode);
|
||||
#endif
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
if( Vox_Get_BES_Addr_Flag[VOR_TYPE] == 0x01 ) /*收到右耳回复的CMD3指令。*/
|
||||
{
|
||||
#ifdef VOX_TX
|
||||
HandleTxCommand(VHOUSE_CMD_EXCH_TWS_BTADDR,VOL_CHAN); /*获取到右耳回复的CMD3指令,转发给左耳。*/
|
||||
#endif
|
||||
Vox_Get_BES_Addr_Flag[VOR_TYPE] = 0x02;
|
||||
}
|
||||
else
|
||||
if( Vox_Get_BES_Addr_Flag[VOR_TYPE] == 0x02 )
|
||||
{
|
||||
if( Vox_Get_BES_Addr_Flag[VOL_TYPE] != 0x00 )
|
||||
{
|
||||
#ifdef VOX_TX
|
||||
HandleTxCommand(VHOUSE_CMD_EXCH_TWS_BTADDR,VOR_CHAN); /*获取到右耳回复的CMD3指令,转发给左耳。*/
|
||||
#endif
|
||||
Vox_Get_BES_Addr_Flag[VOL_TYPE] = 0x00;
|
||||
Vox_Get_BES_Addr_Flag[VOR_TYPE] = 0x00;
|
||||
|
||||
Key_TWS_Pair_Tim = 0;
|
||||
Event_key = KEY_EVENT_Empty;
|
||||
|
||||
VOX_EN_Type(VOX_VOUT_Mode);
|
||||
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
#ifdef VOX_TX
|
||||
HandleTxCommand(VHOUSE_CMD_PAIR,VOL_CHAN);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(Key_TWS_Pair_Tim > KEY_TWS_PAIR_TIMER) //3s重发一次。重发5次后超时
|
||||
{
|
||||
Key_TWS_Pair_Cnt++;
|
||||
Key_TWS_Pair_Tim = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
Key_TWS_Pair_Tim++;
|
||||
}
|
||||
}
|
||||
else
|
||||
if( Event_key == KEY_EVENT_LL_8S )
|
||||
{
|
||||
if( Key_TWS_Pair_Tim < KEY_TWS_PAIR_CLEAR_CNT ) //每隔200ms发送一次,持续时间3s。
|
||||
{
|
||||
if( Key_TWS_Pair_Tim % 2*Vox_TX_Interval )
|
||||
{
|
||||
#ifdef VOX_TX
|
||||
HandleTxCommand(VHOUSE_CMD_CLEAR_PAIR,VOR_CHAN);
|
||||
#endif
|
||||
}
|
||||
else
|
||||
if( Key_TWS_Pair_Tim % Vox_TX_Interval )
|
||||
{
|
||||
#ifdef VOX_TX
|
||||
HandleTxCommand(VHOUSE_CMD_CLEAR_PAIR,VOL_CHAN);
|
||||
#endif
|
||||
}
|
||||
|
||||
Key_TWS_Pair_Tim++;
|
||||
}
|
||||
else
|
||||
{
|
||||
Event_key = KEY_EVENT_Empty;
|
||||
Key_TWS_Pair_Tim = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
#endif
|
||||
|
353
UsrSrc/led/led.c
Normal file
353
UsrSrc/led/led.c
Normal file
@ -0,0 +1,353 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
*
|
||||
* @file led.c
|
||||
* @brief led module
|
||||
* @ic sy8835
|
||||
*
|
||||
* @version 1.0
|
||||
* @date 2024/11/01 15:00:40
|
||||
* @author Alex Xu
|
||||
*
|
||||
* Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
* All Rights Reserved
|
||||
*
|
||||
* History:
|
||||
* Revision Date Author Desc
|
||||
* 1.0.0 2024/11/01 Alex build this file
|
||||
******************************************************************************/
|
||||
/*_____ I N C L U D E S ____________________________________________________*/
|
||||
|
||||
#include "led.h"
|
||||
#include "pwm.h"
|
||||
|
||||
|
||||
#ifdef LED_DISPLAY
|
||||
|
||||
volatile uint8_t Display_RSta = LED_OFF; // 显示状态
|
||||
volatile uint8_t Display_GSta = LED_OFF; // 显示状态
|
||||
volatile uint8_t Display_YSta = LED_OFF; // 显示状态
|
||||
volatile uint8_t Display_BSta = LED_OFF; // 显示状态
|
||||
|
||||
|
||||
/******************************************************************************\
|
||||
Macro definitions
|
||||
\******************************************************************************/
|
||||
|
||||
/******************************************************************************\
|
||||
Variables definitions
|
||||
\******************************************************************************/
|
||||
static TS_LED_INFO LED;
|
||||
/******************************************************************************\
|
||||
Functions definitions
|
||||
\******************************************************************************/
|
||||
|
||||
/*
|
||||
* 函数名称 : LED_Init
|
||||
* 功能描述 : LED初始化
|
||||
* 参 数 : NONE
|
||||
* 返回值 : NONE
|
||||
*/
|
||||
/******************************************************************************/
|
||||
void LED_Init(void)
|
||||
/******************************************************************************/
|
||||
{
|
||||
SFRADDR = P1_OE;
|
||||
SFRDATA = 0x0F;
|
||||
|
||||
LEDR_OFF();
|
||||
LEDG_OFF();
|
||||
LEDB_OFF();
|
||||
LEDY_OFF();
|
||||
}
|
||||
|
||||
/*
|
||||
* 函数名称 : LED_On
|
||||
* 功能描述 : 点亮LED
|
||||
* 参 数 : LED的ID
|
||||
* 返回值 : NONE
|
||||
*/
|
||||
/******************************************************************************/
|
||||
static void LED_On(uint8_t LedId)
|
||||
/******************************************************************************/
|
||||
{
|
||||
switch(LedId)
|
||||
{
|
||||
case LED_R:
|
||||
LEDR_ON();
|
||||
break;
|
||||
|
||||
case LED_G:
|
||||
LEDG_ON();
|
||||
break;
|
||||
|
||||
case LED_Y:
|
||||
LEDY_ON();
|
||||
break;
|
||||
|
||||
case LED_B:
|
||||
LEDB_ON();
|
||||
break;
|
||||
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* 函数名称 : LED_Off
|
||||
* 功能描述 : 熄灭LED
|
||||
* 参 数 : LED的ID
|
||||
* 返回值 : NONE
|
||||
*/
|
||||
/******************************************************************************/
|
||||
static void LED_Off(uint8_t LedId)
|
||||
/******************************************************************************/
|
||||
{
|
||||
switch(LedId)
|
||||
{
|
||||
case LED_R:
|
||||
LEDR_OFF();
|
||||
break;
|
||||
|
||||
case LED_G:
|
||||
LEDG_OFF();
|
||||
break;
|
||||
|
||||
case LED_Y:
|
||||
LEDY_OFF();
|
||||
break;
|
||||
|
||||
case LED_B:
|
||||
LEDB_OFF();
|
||||
break;
|
||||
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* 函数名称 : LED_Clr
|
||||
* 功能描述 : 熄灭全部LED
|
||||
* 参 数 : NONE
|
||||
* 返回值 : NONE
|
||||
*/
|
||||
/******************************************************************************/
|
||||
void LED_Clr(void)
|
||||
/******************************************************************************/
|
||||
{
|
||||
uint8_t i;
|
||||
for(i=0;i<LED_ID_MAX;i++)
|
||||
{
|
||||
LED.State[i]=LED_OFF;
|
||||
LED.Light_Dir[i] = SHOW_NONE;
|
||||
LED.Flash_Duty[i]=0;
|
||||
LED.Flash_Period[i]=0;
|
||||
LED.Flash_Times[i]=0;
|
||||
LED.Timer[i]=0;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* 函数名称 : LED_Set
|
||||
* 功能描述 : LED工作方式设置
|
||||
* 参 数 : State:工作方式 / Period:闪烁周期(频率,单位ms) / Times:闪烁次数,当次数等于0xff时,一直闪。
|
||||
* 返回值 : NONE
|
||||
*/
|
||||
/******************************************************************************/
|
||||
void LED_Set(uint8_t LedId,uint8_t State,uint16_t Period,uint16_t Times)
|
||||
/******************************************************************************/
|
||||
{
|
||||
LED.State[LedId] = State;
|
||||
LED.Flash_Duty[LedId] = Period / 2;
|
||||
LED.Flash_Period[LedId] = Period;
|
||||
LED.Flash_Times[LedId] = Times;
|
||||
LED.Timer[LedId] = 0;
|
||||
}
|
||||
#ifdef PWM_ENABLE
|
||||
/*
|
||||
* 函数名称 : HuXiLED_Set
|
||||
* 功能描述 : 呼吸灯LED工作方式设置
|
||||
* 参 数 : State:工作方式 / Period:闪烁周期(频率,单位ms) / Times:闪烁次数,当次数等于0xff时,一直闪。
|
||||
* 返回值 : NONE
|
||||
*/
|
||||
/******************************************************************************/
|
||||
void HuXiLED_Set(uint8_t LedId,uint8_t State,uint8_t Dir)
|
||||
/******************************************************************************/
|
||||
{
|
||||
LED.State[LedId] = State;
|
||||
LED.Light_Dir[LedId] = Dir;
|
||||
LED.Flash_Duty[LedId] = PWM_REL_VALUE;
|
||||
LED.Timer[LedId] = 0;
|
||||
}
|
||||
#endif
|
||||
/*
|
||||
* 函数名称 : LED_Service
|
||||
* 功能描述 : LED驱动,需放在100ms时间片中
|
||||
* 参 数 : NONE
|
||||
* 返回值 : NONE
|
||||
*/
|
||||
/******************************************************************************/
|
||||
void LED_Drv(void)
|
||||
/******************************************************************************/
|
||||
{
|
||||
uint8_t i = 0;
|
||||
static bit PWM_Dir_Flag;
|
||||
|
||||
for(i = 0;i < LED_ID_MAX;i++)
|
||||
{
|
||||
switch(LED.State[i])
|
||||
{
|
||||
case LED_ON:
|
||||
LED_On(i);
|
||||
break;
|
||||
|
||||
case LED_OFF:
|
||||
LED_Off(i);
|
||||
break;
|
||||
|
||||
case LED_FLASH:
|
||||
if(LED.Timer[i] < LED.Flash_Duty[i])
|
||||
{
|
||||
LED_On(i);
|
||||
}
|
||||
else
|
||||
{
|
||||
LED_Off(i);
|
||||
}
|
||||
|
||||
if(LED.Timer[i] >= LED.Flash_Period[i]) //LED.Timer[i]表示累加的时间
|
||||
{
|
||||
LED.Timer[i] = 0;
|
||||
if(LED.Flash_Times[i] > 0)
|
||||
{
|
||||
LED.Flash_Times[i]--;
|
||||
}
|
||||
if(LED.Flash_Times[i] == 0)
|
||||
{
|
||||
LED.State[i] = LED_OFF;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case LED_KEEP_FLASHING:
|
||||
if(LED.Timer[i] <= LED.Flash_Duty[i])
|
||||
{
|
||||
LED_On(i);
|
||||
}
|
||||
else
|
||||
{
|
||||
LED_Off(i);
|
||||
}
|
||||
|
||||
if(LED.Timer[i] >= LED.Flash_Period[i])
|
||||
{
|
||||
LED.Timer[i] = 0;
|
||||
}
|
||||
break;
|
||||
|
||||
#ifdef PWM_ENABLE
|
||||
|
||||
case LED_BREATHING_LIGHT:
|
||||
|
||||
if( LED.Light_Dir[i] == SHOW_NONE )
|
||||
{
|
||||
PWM_Disable(i);
|
||||
PWM_Dir_Flag = 0;
|
||||
LED.State[i] = LED_OFF;
|
||||
}
|
||||
else
|
||||
{
|
||||
if( LED.Light_Dir[i] == SLOW_LIGHT )
|
||||
{
|
||||
if( !PWM_Dir_Flag )
|
||||
{
|
||||
PWM_Dir_Flag = 1;
|
||||
|
||||
LED.Flash_Duty[i] = PWM_REL_VALUE;
|
||||
}
|
||||
|
||||
LED.Flash_Duty[i]++;
|
||||
if( LED.Flash_Duty[i] >= PWM_REL_FULL )
|
||||
{
|
||||
LED.Light_Dir[i] = SHOW_NONE;
|
||||
}
|
||||
}
|
||||
else
|
||||
if( LED.Light_Dir[i] == SLOW_DARK )
|
||||
{
|
||||
if( !PWM_Dir_Flag )
|
||||
{
|
||||
PWM_Dir_Flag = 1;
|
||||
|
||||
LED.Flash_Duty[i] = PWM_REL_FULL;
|
||||
}
|
||||
|
||||
LED.Flash_Duty[i]--;
|
||||
if( LED.Flash_Duty[i] <= PWM_REL_VALUE )
|
||||
{
|
||||
LED.Light_Dir[i] = SHOW_NONE;
|
||||
}
|
||||
}
|
||||
else
|
||||
if( LED.Light_Dir[i] == SHOW_NORMAL )
|
||||
{
|
||||
if( LED.Flash_Duty[i] >= PWM_REL_FULL )
|
||||
{
|
||||
PWM_Dir_Flag = 1;
|
||||
}
|
||||
else
|
||||
if( LED.Flash_Duty[i] <= (PWM_REL_VALUE + 1) )
|
||||
{
|
||||
PWM_Dir_Flag = 0;
|
||||
}
|
||||
|
||||
if(PWM_Dir_Flag)
|
||||
{
|
||||
LED.Flash_Duty[i]--;
|
||||
}
|
||||
else
|
||||
{
|
||||
LED.Flash_Duty[i]++;
|
||||
}
|
||||
}
|
||||
|
||||
PWM_Duty_Set(i, LED.Flash_Duty[i]);
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
if (i == LED_R)
|
||||
{
|
||||
Display_RSta = LED.State[i]; // LED_OFF == DISPLAY_OFF
|
||||
}
|
||||
else
|
||||
if (i == LED_G)
|
||||
{
|
||||
Display_GSta = LED.State[i]; // LED_OFF == DISPLAY_OFF
|
||||
}
|
||||
else
|
||||
if (i == LED_Y)
|
||||
{
|
||||
Display_YSta = LED.State[i]; // LED_OFF == DISPLAY_OFF
|
||||
}
|
||||
else
|
||||
if (i == LED_B)
|
||||
{
|
||||
Display_BSta = LED.State[i]; // LED_OFF == DISPLAY_OFF
|
||||
}
|
||||
|
||||
// printf("LED.Flash_Duty[%d]:%d,LED.State:%d,LED.Light_Dir:%d.\r\n",(u16)i,(u16)(LED.Flash_Duty[i]),(u16)(LED.State[i]),(u16)(LED.Light_Dir[i]));
|
||||
}
|
||||
|
||||
for(i=0;i<LED_ID_MAX;i++)
|
||||
{
|
||||
LED.Timer[i] += LED_PLUS_TIME;
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
68
UsrSrc/main.c
Normal file
68
UsrSrc/main.c
Normal file
@ -0,0 +1,68 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
*
|
||||
* @file main.c
|
||||
* @brief main module
|
||||
* @ic sy8835
|
||||
*
|
||||
* @version 1.0
|
||||
* @date 2024/11/01 17:35:40
|
||||
* @author Alex Xu
|
||||
*
|
||||
* Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
* All Rights Reserved
|
||||
*
|
||||
* History:
|
||||
* Revision Date Author Desc
|
||||
* 1.0.0 2024/11/01 Alex build this file
|
||||
******************************************************************************
|
||||
*/
|
||||
/*_____ I N C L U D E S ____________________________________________________*/
|
||||
#include "define.h"
|
||||
#include "userapp.h"
|
||||
#include "watchdog.h"
|
||||
#include "sys_tim.h"
|
||||
#include "system.h"
|
||||
#include "led.h"
|
||||
#include "charger_module.h"
|
||||
#include "adc.h"
|
||||
#include "vox_module.h"
|
||||
|
||||
|
||||
/******************************************************************************\
|
||||
Macro definitions
|
||||
\******************************************************************************/
|
||||
|
||||
/******************************************************************************\
|
||||
Variables definitions
|
||||
\******************************************************************************/
|
||||
|
||||
|
||||
/******************************************************************************\
|
||||
Functions definitions
|
||||
\******************************************************************************/
|
||||
|
||||
void main(void )
|
||||
{
|
||||
System_Init(); //ϵͳ³õʼ»¯
|
||||
|
||||
#ifdef _DEBUG_MAIN
|
||||
|
||||
printf("System Init.\r\n");
|
||||
|
||||
#endif
|
||||
|
||||
while(1)
|
||||
{
|
||||
|
||||
#if WTG_ENABLE
|
||||
WDT = 1;
|
||||
SWDT = 1;
|
||||
#endif
|
||||
Sys_Tim0_Handler(); //¶¨Ê±Æ÷
|
||||
|
||||
UserAPP();
|
||||
}
|
||||
}
|
||||
|
||||
|
359
UsrSrc/pmu/pmu.c
Normal file
359
UsrSrc/pmu/pmu.c
Normal file
@ -0,0 +1,359 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
*
|
||||
* @file pmu.c
|
||||
* @brief pmu module
|
||||
* @ic sy8835
|
||||
*
|
||||
* @version 1.0
|
||||
* @date 2024/11/01 09:59:40
|
||||
* @author Alex Xu
|
||||
*
|
||||
* Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
* All Rights Reserved
|
||||
*
|
||||
* History:
|
||||
* Revision Date Author Desc
|
||||
* 1.0.0 2024/11/01 Alex Xu build this file
|
||||
******************************************************************************
|
||||
*/
|
||||
/*_____ I N C L U D E S ____________________________________________________*/
|
||||
|
||||
#include "pmu.h"
|
||||
|
||||
|
||||
/******************************************************************************\
|
||||
Macro definitions
|
||||
\******************************************************************************/
|
||||
|
||||
/******************************************************************************\
|
||||
Variables definitions
|
||||
\******************************************************************************/
|
||||
|
||||
g_PMU_Info pmu_Info; //pmu状态信息
|
||||
|
||||
#if 0
|
||||
g_PMU_Sys_Cfg pmu_Sys_Cfg;
|
||||
|
||||
g_PMU_CHG_Cfg pmu_Chg_Cfg;
|
||||
|
||||
g_PMU_Vox_Cfg pmu_Vox_Cfg;
|
||||
#endif
|
||||
/******************************************************************************\
|
||||
Functions definitions
|
||||
\******************************************************************************/
|
||||
/*
|
||||
*******************************************************************************
|
||||
* void pmu_Init( void )
|
||||
*
|
||||
* Description : pmu Initialization
|
||||
*
|
||||
* Arguments : NONE
|
||||
|
||||
* Returns : NONE
|
||||
|
||||
* Notes : NONE
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
void pmu_Init(void)
|
||||
{
|
||||
//I2cSfr_Write(IRQ_EN0, 0x04);
|
||||
|
||||
//I2cSfr_Write(IRQ_EN1, 0x00);
|
||||
|
||||
/*1、配置HALL、KEY。*/
|
||||
I2cSfr_Write(I2CR_RST_CFG, 0x08); //HALL开盒退出ShipMode功能;KEY长按复位VDD,若处于ShipMode模式,则退出ShipMode模式;
|
||||
|
||||
/*2、PMU中断边沿使能配置;*/
|
||||
ExtSfr_Write(IRQ_PIN_CFG, 0x0A); //配置PMU中断为下降沿触发。
|
||||
|
||||
I2cSfr_Write( VDPM_VDD_CHG_EN, VDD_BYPASS );
|
||||
}
|
||||
|
||||
/*
|
||||
*******************************************************************************
|
||||
* HAL_StatusTypeDef Get_PMU_Info( g_PMU_Info *n_pmu_Info )
|
||||
*
|
||||
* Description : Get pmu Information
|
||||
*
|
||||
* Arguments : g_PMU_Info *n_pmu_Info
|
||||
|
||||
* Returns : HAL_StatusTypeDef
|
||||
|
||||
* Notes : NONE
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
HAL_StatusTypeDef Get_PMU_Info( g_PMU_Info *n_pmu_Info )
|
||||
{
|
||||
|
||||
#if 0
|
||||
if( n_pmu_Info == NULL )
|
||||
{
|
||||
return HAL_ERROR;
|
||||
}
|
||||
#endif
|
||||
n_pmu_Info->pmu_Fault_STA0 = I2cSfr_Read( FAULT_STA0 );
|
||||
|
||||
n_pmu_Info->pmu_Fault_STA1 = I2cSfr_Read( FAULT_STA1 );
|
||||
|
||||
n_pmu_Info->pmu_Fault_STA2 = I2cSfr_Read( FAULT_STA2 );
|
||||
|
||||
n_pmu_Info->pmu_Chip_STA = I2cSfr_Read( CHIP_STA );
|
||||
|
||||
n_pmu_Info->pmu_VOX_STA = I2cSfr_Read( VOX_STA );
|
||||
|
||||
return HAL_OK;
|
||||
}
|
||||
#if 0
|
||||
|
||||
/*
|
||||
*******************************************************************************
|
||||
* HAL_StatusTypeDef Set_PMU_Config( g_PMU_Sys_Cfg *n_PMU_Sys_Cfg )
|
||||
*
|
||||
* Description : Set pmu Config
|
||||
*
|
||||
* Arguments : g_PMU_Sys_Cfg *n_PMU_Sys_Cfg
|
||||
|
||||
* Returns : HAL_StatusTypeDef
|
||||
|
||||
* Notes : NONE
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
HAL_StatusTypeDef Set_PMU_Sys_Config( g_PMU_Sys_Cfg *n_PMU_Sys_Cfg )
|
||||
{
|
||||
#if 0
|
||||
if( n_PMU_Sys_Cfg == NULL )
|
||||
{
|
||||
return HAL_ERROR;
|
||||
}
|
||||
#endif
|
||||
I2cSfr_Write( I2CR_RST_CFG, n_PMU_Sys_Cfg->pmu_Rst_Cfg );
|
||||
|
||||
I2cSfr_Write( POWER_CTRL_CMD, n_PMU_Sys_Cfg->pmu_PWR_Ctrl_Cmd );
|
||||
|
||||
I2cSfr_Write( CHG_VPMID_SET, n_PMU_Sys_Cfg->pmu_VPMID_Cfg );
|
||||
|
||||
I2cSfr_Write( IRQ_EN0, n_PMU_Sys_Cfg->pmu_IRQ_En0 );
|
||||
|
||||
I2cSfr_Write( IRQ_EN1, n_PMU_Sys_Cfg->pmu_IRQ_En1 );
|
||||
|
||||
I2cSfr_Write( XSEN_CTRL, n_PMU_Sys_Cfg->pmu_Xsen_Ctrl );
|
||||
|
||||
I2cSfr_Write( POWER_LED_CTRL0, n_PMU_Sys_Cfg->pmu_LED_Ctrl0 );
|
||||
|
||||
I2cSfr_Write( WDT1_CFG, n_PMU_Sys_Cfg->pmu_WDT1_Cfg );
|
||||
|
||||
I2cSfr_Write( WDT1_RST, n_PMU_Sys_Cfg->pmu_WDT1_Rst );
|
||||
|
||||
return HAL_OK;
|
||||
}
|
||||
|
||||
/*
|
||||
*******************************************************************************
|
||||
* HAL_StatusTypeDef Set_PMU_CHG_Config( g_PMU_CHG_Cfg *n_PMU_CHG_Cfg )
|
||||
*
|
||||
* Description : Set pmu CHG Config
|
||||
*
|
||||
* Arguments : g_PMU_CHG_Cfg *n_PMU_CHG_Cfg
|
||||
|
||||
* Returns : HAL_StatusTypeDef
|
||||
|
||||
* Notes : NONE
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
HAL_StatusTypeDef Set_PMU_CHG_Config( g_PMU_CHG_Cfg *n_PMU_CHG_Cfg )
|
||||
{
|
||||
#if 0
|
||||
if( n_PMU_CHG_Cfg == NULL )
|
||||
{
|
||||
return HAL_ERROR;
|
||||
}
|
||||
#endif
|
||||
I2cSfr_Write( VDPM_VDD_CHG_EN, n_PMU_CHG_Cfg->pmu_VDPM_VDD_CHG_En );
|
||||
|
||||
I2cSfr_Write( CHG_VFLOAT_SET, n_PMU_CHG_Cfg->pmu_Chg_VFLOAT_Cfg );
|
||||
|
||||
I2cSfr_Write( CHG_ICC_SET, n_PMU_CHG_Cfg->pmu_Chg_ICC_Cfg );
|
||||
|
||||
I2cSfr_Write( CHG_ITC_ITERM_SET, n_PMU_CHG_Cfg->pmu_Chg_ITC_Iterm_Cfg );
|
||||
|
||||
return HAL_OK;
|
||||
}
|
||||
#endif
|
||||
/*
|
||||
*******************************************************************************
|
||||
* void Set_PMU_CHG(uint8_t Chg_En)
|
||||
*
|
||||
* Description : Set PMU CHG Enable
|
||||
*
|
||||
* Arguments : NONE
|
||||
|
||||
* Returns : NONE
|
||||
|
||||
* Notes : NONE
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
void Set_PMU_CHG(uint8_t Chg_En)
|
||||
{
|
||||
uint8_t I2cSfr_Temp = 0;
|
||||
|
||||
I2cSfr_Temp = I2cSfr_Read( VDPM_VDD_CHG_EN );
|
||||
|
||||
if( Chg_En )
|
||||
{
|
||||
I2cSfr_Temp |= BUCK_CHG_EN;
|
||||
}
|
||||
else
|
||||
{
|
||||
I2cSfr_Temp &= ~BUCK_CHG_EN;
|
||||
}
|
||||
|
||||
I2cSfr_Write( VDPM_VDD_CHG_EN, I2cSfr_Temp );
|
||||
}
|
||||
|
||||
/*
|
||||
*******************************************************************************
|
||||
* void Set_PMU_Boost(uint8_t Boost_En)
|
||||
*
|
||||
* Description : Set PMU Boost Enable
|
||||
*
|
||||
* Arguments : NONE
|
||||
|
||||
* Returns : NONE
|
||||
|
||||
* Notes : NONE
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
void Set_PMU_Boost(uint8_t Boost_En)
|
||||
{
|
||||
uint8_t I2cSfr_Temp = 0;
|
||||
|
||||
I2cSfr_Temp = I2cSfr_Read( BST_COMM_EN );
|
||||
|
||||
if( Boost_En )
|
||||
{
|
||||
I2cSfr_Temp |= BST_COMM_EN_Boost_En;
|
||||
}
|
||||
else
|
||||
{
|
||||
I2cSfr_Temp &= ~BST_COMM_EN_Boost_En;
|
||||
}
|
||||
|
||||
I2cSfr_Write( BST_COMM_EN, I2cSfr_Temp );
|
||||
}
|
||||
|
||||
/*
|
||||
*******************************************************************************
|
||||
* void Set_PMU_Boost_Vout(uint8_t Boost_Vout)
|
||||
*
|
||||
* Description : Set PMU Boost Vout Value
|
||||
*
|
||||
* Arguments : NONE
|
||||
|
||||
* Returns : NONE
|
||||
|
||||
* Notes : NONE
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
void Set_PMU_Boost_Vout(uint8_t Boost_Vout)
|
||||
{
|
||||
uint8_t I2cSfr_Temp = 0;
|
||||
|
||||
I2cSfr_Temp = I2cSfr_Read( CHG_VPMID_SET ) & 0xC0;
|
||||
|
||||
I2cSfr_Write( CHG_VPMID_SET, I2cSfr_Temp | Boost_Vout );
|
||||
}
|
||||
|
||||
/*
|
||||
*******************************************************************************
|
||||
* HAL_StatusTypeDef Set_PMU_VOX_Config( g_PMU_Vox_Cfg *n_PMU_Vox_Cfg )
|
||||
*
|
||||
* Description : Set pmu Vox Config
|
||||
*
|
||||
* Arguments : g_PMU_Vox_Cfg *n_PMU_Vox_Cfg
|
||||
|
||||
* Returns : HAL_StatusTypeDef
|
||||
|
||||
* Notes : NONE
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
HAL_StatusTypeDef Set_PMU_VOX_Config( g_PMU_Vox_Cfg *n_PMU_Vox_Cfg )
|
||||
{
|
||||
#if 0
|
||||
if( n_PMU_Vox_Cfg == NULL )
|
||||
{
|
||||
return HAL_ERROR;
|
||||
}
|
||||
#endif
|
||||
I2cSfr_Write( BST_COMM_EN, n_PMU_Vox_Cfg->pmu_BST_COMM_En );
|
||||
|
||||
I2cSfr_Write( VOX_CFG, n_PMU_Vox_Cfg->pmu_VOX_Cfg );
|
||||
|
||||
return HAL_OK;
|
||||
}
|
||||
|
||||
/*
|
||||
*******************************************************************************
|
||||
* void Set_PMU_Enter_ShipMode(void)
|
||||
*
|
||||
* Description : Set PMU Enter ShipMode
|
||||
*
|
||||
* Arguments : NONE
|
||||
|
||||
* Returns : NONE
|
||||
|
||||
* Notes : NONE
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
void Set_PMU_Enter_ShipMode(void)
|
||||
{
|
||||
I2cSfr_Write( POWER_CTRL_CMD, POWER_CTRL_CMD_ENTER_SHIPMODE );
|
||||
}
|
||||
|
||||
/*
|
||||
*******************************************************************************
|
||||
* void Set_PMU_En_ReChg(void)
|
||||
*
|
||||
* Description : Set PMU ReCharg.
|
||||
*
|
||||
* Arguments : NONE
|
||||
|
||||
* Returns : NONE
|
||||
|
||||
* Notes : NONE
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
void Set_PMU_En_ReChg(void)
|
||||
{
|
||||
I2cSfr_Write( POWER_CTRL_CMD, POWER_CTRL_CMD_RECHG_ENABLE );
|
||||
}
|
||||
|
||||
/*
|
||||
*******************************************************************************
|
||||
* void Set_PMU_Rst(void)
|
||||
*
|
||||
* Description : Set PMU Reset.
|
||||
*
|
||||
* Arguments : NONE
|
||||
|
||||
* Returns : NONE
|
||||
|
||||
* Notes : NONE
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
void Set_PMU_Rst(void)
|
||||
{
|
||||
I2cSfr_Write( POWER_CTRL_CMD, POWER_CTRL_CMD_RST_VDD );
|
||||
}
|
||||
|
194
UsrSrc/pwm/pwm.c
Normal file
194
UsrSrc/pwm/pwm.c
Normal file
@ -0,0 +1,194 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
*
|
||||
* @file pwm.c
|
||||
* @brief pwm module
|
||||
* @ic sy8835
|
||||
*
|
||||
* @version 1.0
|
||||
* @date 2024/11/01 09:50:40
|
||||
* @author Alex Xu
|
||||
*
|
||||
* Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
* All Rights Reserved
|
||||
*
|
||||
* History:
|
||||
* Revision Date Author Desc
|
||||
* 1.0.0 2024/11/01 Alex build this file
|
||||
* Description:PWM功能中,4个通道公用一个源;也就是分频数(PWM_PRE0)、计数初值(PWM0_REL)只有一个,通过更改PWMx_CMP设置不同通道PWM输出的占空比。
|
||||
******************************************************************************
|
||||
*/
|
||||
#include "pwm.h"
|
||||
|
||||
#ifdef PWM_ENABLE
|
||||
|
||||
/******************************************************************************\
|
||||
Macro definitions
|
||||
\******************************************************************************/
|
||||
|
||||
/******************************************************************************\
|
||||
Variables definitions
|
||||
\******************************************************************************/
|
||||
|
||||
|
||||
/******************************************************************************\
|
||||
Functions definitions
|
||||
\******************************************************************************/
|
||||
|
||||
/*
|
||||
*******************************************************************************
|
||||
* void PWM_Disable(Pwm_Channels_e nPWM_Ch)
|
||||
*
|
||||
* Description : PWM Disable PWM按通道禁能
|
||||
*
|
||||
* Arguments : None
|
||||
|
||||
* Returns :
|
||||
|
||||
* Notes :
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
void PWM_Disable(Pwm_Channels_e nPWM_Ch)
|
||||
{
|
||||
SFRADDR = MFP_CTL1;
|
||||
SFRDATA &= ~( 0x03 << (nPWM_Ch * 2) );
|
||||
|
||||
if(nPWM_Ch == PWM_ALL)
|
||||
{
|
||||
SFRADDR = MFP_CTL1;
|
||||
SFRDATA = 0x00;
|
||||
}
|
||||
}
|
||||
/*
|
||||
*******************************************************************************
|
||||
* void PWM_Init_Set(uint8_t nPWM_PRE,uint8_t nPWM_REL)
|
||||
*
|
||||
* Description : PWM Set1 设置PWM输出时钟分频、频率参数。
|
||||
例如:PWM输出PWM频率10kHz,占空比50%。
|
||||
则参数设置如下:PWM计数器时钟Fre(pwm) = Fre(sys)/PWM_PRE = 12M / n^PWM_PRE = 12M / 8 = 1.5MHz,
|
||||
PWM_REL = 255 - 1.5M / 10K = 255-150 = 105,
|
||||
nPWM_CMP = 105 + 150 * (1-50%) = 180。
|
||||
*
|
||||
* Arguments : uint8_t nPWM_PRE --- PWM counter reload value
|
||||
* uint8_t nPWM_REL --- PWM compare value
|
||||
*
|
||||
* Returns : NONE
|
||||
|
||||
* Notes : NONE
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
void PWM_Init_Set(uint8_t nPWM_PRE,uint8_t nPWM_REL)
|
||||
{
|
||||
SFRADDR = PWM_PRE; //PWM clock divide setting
|
||||
SFRDATA = nPWM_PRE & 0x07;
|
||||
|
||||
SFRADDR = PWM_REL; //PWM counter reload value
|
||||
SFRDATA = nPWM_REL;
|
||||
|
||||
SFRADDR = PWM_CTL;
|
||||
SFRDATA = 0x01;
|
||||
}
|
||||
|
||||
/*
|
||||
*******************************************************************************
|
||||
* void PWM_Duty_Set(Pwm_Channels_e nPWM_Ch,uint8_t nPWM_CMP)
|
||||
*
|
||||
* Description : PWM Set 按通道设置PWM输出占空比参数。
|
||||
例如:PWM输出PWM频率10kHz,占空比50%。
|
||||
则参数设置如下:PWM计数器时钟Fre(pwm) = Fre(sys)/PWM_PRE = 11.0592M / n^PWM_PRE = 11.0592M / 8 = 1.38MHz,
|
||||
PWM_REL = 255 - 1.5M / 10K = 255-150 = 105,
|
||||
nPWM_CMP = 105 + 150 * (1-50%) = 180。
|
||||
|
||||
*
|
||||
* Arguments : nPWM_Ch (PWM0 ~ PWM3);
|
||||
* uint8_t nPWM_CMP --- PWM compare value
|
||||
*
|
||||
* Returns : NONE
|
||||
|
||||
* Notes : NONE
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
void PWM_Duty_Set(Pwm_Channels_e nPWM_Ch,uint8_t nPWM_CMP)
|
||||
{
|
||||
SFRADDR = MFP_CTL1;
|
||||
SFRDATA &=~( 0x03 << nPWM_Ch*2 );
|
||||
SFRDATA |= 0x01 << nPWM_Ch*2;
|
||||
|
||||
SFRADDR = P1_OE;
|
||||
SFRDATA |= 0x01 << nPWM_Ch;
|
||||
|
||||
if(nPWM_Ch == PWM_CH0)
|
||||
{
|
||||
PWM0_CMP = nPWM_CMP;
|
||||
}
|
||||
else if(nPWM_Ch == PWM_CH1)
|
||||
{
|
||||
PWM1_CMP = nPWM_CMP;
|
||||
}
|
||||
else if(nPWM_Ch == PWM_CH2)
|
||||
{
|
||||
PWM2_CMP = nPWM_CMP;
|
||||
}
|
||||
else if(nPWM_Ch == PWM_CH3)
|
||||
{
|
||||
PWM3_CMP = nPWM_CMP;
|
||||
}
|
||||
}
|
||||
|
||||
#if 0
|
||||
|
||||
/*
|
||||
*******************************************************************************
|
||||
* void HuXi_Led(Pwm_Channels_e nPWM_Ch, uint8_t Delay_Timer)
|
||||
*
|
||||
* Description : 呼吸灯功能函数
|
||||
*
|
||||
* Arguments : Pwm_Channels_e nPWM_Ch:对应的PWM通道
|
||||
uint8_t Delay_Timer:更改一次PWM输出占空比所需的时间。
|
||||
|
||||
* Returns : None
|
||||
|
||||
* Notes : 注意PWM初始化设置中的PWM counter reload value,从而限定了PWM compare value的大小。
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
void HuXi_Led(Pwm_Channels_e nPWM_Ch, uint8_t Delay_Timer)
|
||||
{
|
||||
static uint8_t nHuXi_Cnt;
|
||||
static uint8_t nHuXi_Timer_Cnt;
|
||||
static bit HuXi_Dir_Flg;
|
||||
|
||||
nHuXi_Timer_Cnt++;
|
||||
if(nHuXi_Timer_Cnt <= Delay_Timer)
|
||||
return;
|
||||
|
||||
nHuXi_Timer_Cnt = 0;
|
||||
if(!HuXi_Dir_Flg)
|
||||
{
|
||||
nHuXi_Cnt += 2;
|
||||
if( nHuXi_Cnt >= 254 )
|
||||
{
|
||||
HuXi_Dir_Flg = 1;
|
||||
nHuXi_Cnt = 3;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
nHuXi_Cnt -= 2;
|
||||
if(nHuXi_Cnt <= 3)
|
||||
{
|
||||
HuXi_Dir_Flg = 0;
|
||||
nHuXi_Cnt = 3;
|
||||
}
|
||||
}
|
||||
|
||||
PWM_Duty_Set(nPWM_Ch, nHuXi_Cnt);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
267
UsrSrc/sleep/sleep.c
Normal file
267
UsrSrc/sleep/sleep.c
Normal file
@ -0,0 +1,267 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
*
|
||||
* @file sleep.c
|
||||
* @brief sleep module
|
||||
* @ic sy8835
|
||||
*
|
||||
* @version 1.0
|
||||
* @date 2024/11/01 17:35:40
|
||||
* @author Alex Xu
|
||||
*
|
||||
* Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
* All Rights Reserved
|
||||
*
|
||||
* History:
|
||||
* Revision Date Author Desc
|
||||
* 1.0.0 2024/11/01 Alex build this file
|
||||
******************************************************************************
|
||||
*/
|
||||
#include "sleep.h"
|
||||
#include "system.h"
|
||||
#include "vox_module.h"
|
||||
#include "sys_tim.h"
|
||||
|
||||
#if SLEEP_ENABLE
|
||||
|
||||
/******************************************************************************\
|
||||
Macro definitions
|
||||
\******************************************************************************/
|
||||
|
||||
/******************************************************************************\
|
||||
Variables definitions
|
||||
\******************************************************************************/
|
||||
bit Enter_Ship_Mode_Flag = 0; //进shipmode标志
|
||||
|
||||
uint8_t Boot_ShipMode_Flg = 0; //Wake Up From ShipMode
|
||||
|
||||
uint16_t gAwake_Source = 0; //唤醒源标志位
|
||||
|
||||
uint8_t Decnt_SleepDelay = ENTER_STANDBYMODE_CNT;
|
||||
|
||||
uint8_t Enter_ShipMode_Debounce = 0;
|
||||
|
||||
bit Enter_Sleep_Cnt_Restart_Flag = 0;
|
||||
|
||||
/******************************************************************************\
|
||||
Functions definitions
|
||||
\******************************************************************************/
|
||||
|
||||
|
||||
/*
|
||||
*******************************************************************************
|
||||
* void WakeUp_Init_Set(void)
|
||||
*
|
||||
* Description : 系统唤醒源使能设置,系统初始化调用。
|
||||
*
|
||||
*
|
||||
* Arguments : NONE
|
||||
|
||||
* Returns : NONE
|
||||
|
||||
* Notes : NONE
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
#if 0
|
||||
void WakeUp_Init_Set(void)
|
||||
{
|
||||
//set wakeup
|
||||
}
|
||||
#endif
|
||||
/*
|
||||
*******************************************************************************
|
||||
* void OutSleep_Handler(void)
|
||||
*
|
||||
* Description : 出Standby模式后开启中断和部分接口使能。
|
||||
*
|
||||
* Arguments : NONE
|
||||
|
||||
* Returns : NONE
|
||||
|
||||
* Notes : NONE
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
void OutSleep_Handler(void)
|
||||
{
|
||||
ES0 = 1; //UART0 IRQ
|
||||
|
||||
IEN2 = 3; //UART1、UART2 IRQ
|
||||
|
||||
EX5 = 1;
|
||||
EX6 = 1;
|
||||
|
||||
ET0 = 1; //timer0 IRQ
|
||||
ET1 = 1; //timer1 IRQ
|
||||
|
||||
SFRADDR = ADC_CTL0;
|
||||
SFRDATA |= 0x80; //ADC enable.
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
*******************************************************************************
|
||||
* void InSleep_Handler(void)
|
||||
*
|
||||
* Description : 进Standby模式前的准备工作;关闭中断、关闭部分接口的使能
|
||||
*
|
||||
* Arguments : NONE
|
||||
|
||||
* Returns : NONE
|
||||
|
||||
* Notes : NONE
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
void InSleep_Handler(void)
|
||||
{
|
||||
ES0 = 0; //UART0 IRQ Disable
|
||||
|
||||
IEN2 = 0; //UART1、UART2 IRQ Disable
|
||||
|
||||
EX5 = 0;
|
||||
EX6 = 0;
|
||||
|
||||
ET0 = 0; //timer0 IRQ Disable
|
||||
ET1 = 0; //timer1 IRQ Disable
|
||||
|
||||
SFRADDR = ADC_CTL0;
|
||||
SFRDATA &= ~0x80; //ADC Disable.
|
||||
}
|
||||
#if 0
|
||||
/*
|
||||
*******************************************************************************
|
||||
* bool Check_Shipmode_Wkup(void)
|
||||
*
|
||||
* Description : 查询shipmode唤醒源标志位函数。
|
||||
*
|
||||
* Arguments : None
|
||||
|
||||
* Returns : None
|
||||
|
||||
* Notes : bool Flag
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
bool Check_Shipmode_Wkup(void)
|
||||
{
|
||||
uint8_t Reg_Read_Value = 0;
|
||||
|
||||
Boot_ShipMode_Flg = 0;
|
||||
|
||||
// SFRADDR = SHIPWKUP_EN;
|
||||
// Reg_Read_Value = SFRDATA;
|
||||
|
||||
if(Reg_Read_Value & 0xF0) //Wakeup From ShipMode. --- VBUS、Key、Hall.
|
||||
{
|
||||
if(Reg_Read_Value & 0x40) //VBUS
|
||||
{
|
||||
Boot_ShipMode_Flg |= 0x40;
|
||||
}
|
||||
|
||||
if(Reg_Read_Value & 0x20) //Key
|
||||
{
|
||||
Boot_ShipMode_Flg |= 0x20;
|
||||
}
|
||||
|
||||
if(Reg_Read_Value & 0x10) //Hall 问题:此标志位在shipmode reset后,如果将P06(HALL)切成gpio模式后,会清零,待查。
|
||||
{
|
||||
Boot_ShipMode_Flg |= 0x10;
|
||||
}
|
||||
|
||||
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
#endif
|
||||
/*
|
||||
*******************************************************************************
|
||||
* void Enter_Sleep(void)
|
||||
*
|
||||
* Description : 进入休眠函数。
|
||||
*
|
||||
* Arguments : None
|
||||
|
||||
* Returns : None
|
||||
|
||||
* Notes : None
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
void Enter_Sleep(void)
|
||||
{
|
||||
//SHIP_CTL |= 0x30; //进入休眠模式后,VOX 1K电阻下拉使能。是否应用,根据实际测试情况定。
|
||||
/*关盖,boost没有使能(VOL/R轻载),vin没有---debounce 5s进入shipmode */
|
||||
/* 在shipmode,VOX状态可配置为下拉 */
|
||||
// if( (CoverStatus == CLOSE) && !(CHIP_STA4 & 0x80) && (CHIP_STA1 & 0x0C) == 0x0c ) //进入ShipMode的条件是什么?
|
||||
//if( (g_Plug_Irq_Flg == VBUS_PLGOUT_FLG) && (CHIP_STA1 & 0x0C) == 0x0c ) //进入ShipMode的条件是什么?
|
||||
if(Enter_Ship_Mode_Flag)
|
||||
{
|
||||
if(F_sys_tim_1s)
|
||||
{
|
||||
F_sys_tim_1s = 0;
|
||||
|
||||
Enter_ShipMode_Debounce++;
|
||||
|
||||
if(Enter_ShipMode_Debounce >= ENTER_SHIPMODE_CNT)
|
||||
{
|
||||
Boot_ShipMode_Flg = 0;
|
||||
|
||||
I2cSfr_Write(POWER_CTRL_CMD, POWER_CTRL_CMD_ENTER_SHIPMODE); //Enter ShipMode
|
||||
|
||||
Enter_ShipMode_Debounce = 0;
|
||||
}
|
||||
#ifdef _DEBUG_SLEEP
|
||||
else
|
||||
if(Enter_ShipMode_Debounce == ENTER_SHIPMODE_CNT - 1)
|
||||
{
|
||||
printf("Enter ShipMode!(line:%d)\r\n",__LINE__);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
InSleep_Handler(); //Disable All IRQ
|
||||
|
||||
PCON |= 0x02; //Enter StandbyMode, Only int0 or int1 can wake up system
|
||||
|
||||
OutSleep_Handler(); //Enable IRQ
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
*******************************************************************************
|
||||
* bool Check_Require_Sleep(void )
|
||||
*
|
||||
* Description : 查询休眠唤醒源标志位函数。
|
||||
*
|
||||
* Arguments : None
|
||||
|
||||
* Returns : None
|
||||
|
||||
* Notes : bool Flag
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
bit Check_Require_Sleep(void )
|
||||
{
|
||||
if( ( ChgStatus == CHG_STA_ING ) || ( ON == Vox_Vout_Enable ) || Enter_Sleep_Cnt_Restart_Flag ) /*VBUS plugin status存在、有中断、耳机处于充电状态情况下,Boost重载输出,系统不进休眠模式。 */
|
||||
{
|
||||
#ifdef _DEBUG_SLEEP
|
||||
printf("Not Get Into Sleep(ChgStatus:%d,Vox_Vout:%d,Restart_Flag:%d).\r\n",(u16)ChgStatus,(u16)Vox_Vout_Enable,(u16)Enter_Sleep_Cnt_Restart_Flag);
|
||||
#endif
|
||||
Enter_Sleep_Cnt_Restart_Flag = 0;
|
||||
/*处理对应的保护和中断唤醒事件。*/
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
170
UsrSrc/system/system.c
Normal file
170
UsrSrc/system/system.c
Normal file
@ -0,0 +1,170 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
*
|
||||
* @file system.c
|
||||
* @brief system module
|
||||
* @ic sy8835
|
||||
*
|
||||
* @version 1.0
|
||||
* @date 2024/11/01 15:00:40
|
||||
* @author Alex Xu
|
||||
*
|
||||
* Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
* All Rights Reserved
|
||||
*
|
||||
* History:
|
||||
* Revision Date Author Desc
|
||||
* 1.0.0 2024/11/01 Alex build this file
|
||||
* Attention:1、由于同一个Byte的中断标志位,会分配在不同的中断中,对于清中断标志位(写1清),不能用 |= ,需要用 = ;
|
||||
例如:IRQ_FLAG10 = 0x02; //Clear bit0,bit1 interrupt flag
|
||||
2、外部中断0,主要是用于系统唤醒功能,中断处理函数中无需作逻辑功能处理,必需预留接口!
|
||||
******************************************************************************/
|
||||
/*_____ I N C L U D E S ____________________________________________________*/
|
||||
|
||||
#include "system.h"
|
||||
#include "gpio.h"
|
||||
#include "adc.h"
|
||||
#include "hall.h"
|
||||
#include "key.h"
|
||||
#include "sleep.h"
|
||||
#include "uart.h"
|
||||
#include "bat.h"
|
||||
#include "sys_tim.h"
|
||||
#include "charger_module.h"
|
||||
#include "discharge_module.h"
|
||||
#include "led.h"
|
||||
#include "vox_module.h"
|
||||
#include "watchdog.h"
|
||||
#include "userapp.h"
|
||||
#include "pwm.h"
|
||||
#include "pmu.h"
|
||||
#include "user.h"
|
||||
|
||||
|
||||
/******************************************************************************\
|
||||
Macro definitions
|
||||
\******************************************************************************/
|
||||
|
||||
/******************************************************************************\
|
||||
Variables definitions
|
||||
\******************************************************************************/
|
||||
|
||||
/******************************************************************************\
|
||||
Functions definitions
|
||||
\******************************************************************************/
|
||||
|
||||
|
||||
/*
|
||||
*******************************************************************************
|
||||
* void System_Init(void)
|
||||
*
|
||||
* Description : System Initialization
|
||||
*
|
||||
* Arguments : NONE
|
||||
|
||||
* Returns : NONE
|
||||
|
||||
* Notes : NONE
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
void System_Init(void)
|
||||
{
|
||||
|
||||
#if UART0_ENABLE
|
||||
UART0_Init();
|
||||
#endif
|
||||
|
||||
#if UART1_ENABLE
|
||||
UART1_Init();
|
||||
#endif
|
||||
|
||||
#if UART2_ENABLE
|
||||
UART2_Init();
|
||||
#endif
|
||||
|
||||
Sys_Tim0_Init();
|
||||
|
||||
#if TIMER1_ENABLE
|
||||
Sys_Tim1_Init();
|
||||
#endif
|
||||
|
||||
#if WTG_ENABLE
|
||||
/* 65ms */
|
||||
WDTREL = 0x00; //WDTPS = 0,wdt_f = wdt_f1/2;WDTPS = 1,wdt_f = wdt_f1/32;
|
||||
/* 1s */
|
||||
// WDTREL = 0x80; //WDTPS = 0,wdt_f = wdt_f1/2;WDTPS = 1,wdt_f = wdt_f1/32;
|
||||
#endif
|
||||
|
||||
#if ADC_ENABLE
|
||||
Adc_Init();
|
||||
#endif
|
||||
|
||||
/* Interrupt Enable 根据应用选择必要的中断 */
|
||||
ExtSfr_Write(IRQ_PIN_CFG,0x08); //pmu 下降沿中断使能;双沿唤醒。
|
||||
|
||||
/* 开外部中断使能 */
|
||||
EX0 = 1;
|
||||
|
||||
EAL = 1; //开总中断。
|
||||
|
||||
#if CHARGER_ENABLE
|
||||
Charger_Init();
|
||||
#endif
|
||||
|
||||
#ifdef PWM_ENABLE
|
||||
PWM_Init_Set(3,PWM_REL_VALUE);
|
||||
#endif
|
||||
|
||||
#ifdef LED_DISPLAY
|
||||
LED_Init();
|
||||
LED_Clr();
|
||||
#endif
|
||||
|
||||
#if GAUGE_ENABLE
|
||||
// Bat_Cal_Init(); //电池电量初始化
|
||||
#endif
|
||||
|
||||
pmu_Init();
|
||||
|
||||
I2C_GPIOInit();
|
||||
|
||||
Systerm_State.Next_State = POWER_ON_STATE;
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
*******************************************************************************
|
||||
* void EX0_isr(void ) interrupt Interrupt_Vector_IE0
|
||||
*
|
||||
* Description : System External Intterupt 0
|
||||
*
|
||||
* Arguments : NONE
|
||||
|
||||
* Returns : NONE
|
||||
|
||||
* Notes : NONE
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
|
||||
void EX0_isr(void) interrupt Interrupt_Vector_IE0
|
||||
{
|
||||
#if 0
|
||||
if( IRQ_FLAG&0x01 ) //pmu irq negtive interrupt.
|
||||
{
|
||||
IRQ_FLAG = 0x01;
|
||||
// Get_PMU_Info(&pmu_Info); //获取pmu状态
|
||||
}
|
||||
#endif
|
||||
#if SLEEP_ENABLE
|
||||
|
||||
Enter_Sleep_Cnt_Restart_Flag = 1;
|
||||
|
||||
#endif
|
||||
|
||||
IRQ_FLAG = 0x0F;
|
||||
}
|
||||
|
||||
|
||||
|
246
UsrSrc/timer/sys_tim.c
Normal file
246
UsrSrc/timer/sys_tim.c
Normal file
@ -0,0 +1,246 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
*
|
||||
* @file sys_tim.c
|
||||
* @brief Timer module
|
||||
* @ic sy8835
|
||||
*
|
||||
* @version 1.0
|
||||
* @date 2024/11/01 15:00:40
|
||||
* @author Alex Xu
|
||||
*
|
||||
* Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
* All Rights Reserved
|
||||
*
|
||||
* History:
|
||||
* Revision Date Author Desc
|
||||
* 1.0.0 2024/11/01 Alex build this file
|
||||
******************************************************************************/
|
||||
/*_____ I N C L U D E S ____________________________________________________*/
|
||||
|
||||
#include "sys_tim.h"
|
||||
#include "vox_module.h"
|
||||
#include "system.h"
|
||||
#include "charger_module.h"
|
||||
#include "led.h"
|
||||
#include "pwm.h"
|
||||
|
||||
|
||||
/******************************************************************************\
|
||||
Macro definitions
|
||||
\******************************************************************************/
|
||||
|
||||
/******************************************************************************\
|
||||
Variables definitions
|
||||
\******************************************************************************/
|
||||
|
||||
uint8_t cnt_sys_tim_5ms = 0;
|
||||
uint8_t cnt_sys_tim_10ms = 0;
|
||||
uint8_t cnt_sys_tim_250ms = 0;
|
||||
uint16_t cnt_sys_tim_100ms = 0;
|
||||
uint8_t cnt_sys_tim_1s = 0;
|
||||
|
||||
bit F_sys_tim_1ms = 0;
|
||||
bit F_sys_tim_5ms = 0;
|
||||
bit F_sys_tim_10ms = 0;
|
||||
bit F_sys_tim_250ms = 0;
|
||||
bit F_sys_tim_100ms = 0;
|
||||
bit F_sys_tim_1s = 0;
|
||||
|
||||
|
||||
uint8_t F_sys_tim_tick = 0;
|
||||
bit F_sys_tim1_tick = 0;
|
||||
|
||||
bit F_sys_tim2_tick = 0;
|
||||
|
||||
|
||||
/******************************************************************************\
|
||||
Functions definitions
|
||||
\******************************************************************************/
|
||||
|
||||
|
||||
/*
|
||||
*******************************************************************************
|
||||
* void Sys_Tim_Handler(void )
|
||||
*
|
||||
* Description : Timer Handle
|
||||
*
|
||||
* Arguments : NONE
|
||||
|
||||
* Returns : NONE
|
||||
|
||||
* Notes : NONE
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
void Sys_Tim0_Handler(void)
|
||||
{
|
||||
if(F_sys_tim_tick == 0)
|
||||
return;
|
||||
F_sys_tim_tick = 0;
|
||||
//system tick
|
||||
F_sys_tim_1ms = 1;
|
||||
|
||||
//---------------5ms----------------------------------------
|
||||
cnt_sys_tim_5ms++;
|
||||
if(cnt_sys_tim_5ms >= 5)
|
||||
{
|
||||
cnt_sys_tim_5ms = 0;
|
||||
F_sys_tim_5ms = 1;
|
||||
}
|
||||
|
||||
//---------------10ms----------------------------------------
|
||||
cnt_sys_tim_10ms++;
|
||||
if(cnt_sys_tim_10ms >= 10)
|
||||
{
|
||||
cnt_sys_tim_10ms = 0;
|
||||
|
||||
F_sys_tim_10ms = 1;
|
||||
|
||||
}
|
||||
|
||||
//---------------100ms----------------------------------------
|
||||
cnt_sys_tim_100ms++;
|
||||
if(cnt_sys_tim_100ms >= 100)
|
||||
{
|
||||
cnt_sys_tim_100ms = 0;
|
||||
F_sys_tim_100ms = 1;
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
cnt_sys_tim_250ms++;
|
||||
if(cnt_sys_tim_250ms>=250)
|
||||
{
|
||||
cnt_sys_tim_250ms = 0;
|
||||
F_sys_tim_250ms = 1;
|
||||
//-----------------250ms-------------------------
|
||||
|
||||
cnt_sys_tim_1s++;
|
||||
if(cnt_sys_tim_1s >= 4)
|
||||
{
|
||||
cnt_sys_tim_1s = 0;
|
||||
F_sys_tim_1s = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
*******************************************************************************
|
||||
* void Delay10ms(void) //@11.0592MHz
|
||||
*
|
||||
* Description : 10msÈí¶¨Ê±º¯Êý
|
||||
*
|
||||
* Arguments : NONE
|
||||
|
||||
* Returns : NONE
|
||||
|
||||
* Notes : NONE
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
#if 0
|
||||
void Delay10ms(void) //@11.0592MHz
|
||||
{
|
||||
unsigned char i, j;
|
||||
|
||||
i = 108;
|
||||
j = 145;
|
||||
do
|
||||
{
|
||||
while (--j);
|
||||
} while (--i);
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief This function handles sys_tim Handler.
|
||||
* @param None
|
||||
* @retval None
|
||||
* 1ms
|
||||
*/
|
||||
void tim0_Interrupt(void) interrupt Interrupt_Vector_TF0 //interrupt address is 0x000B
|
||||
{
|
||||
//1ms
|
||||
TH0 += C_TIM0_Reload >> 8;
|
||||
TL0 += C_TIM0_Reload & 0xFF;
|
||||
|
||||
F_sys_tim_tick = 1;
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
*******************************************************************************
|
||||
* void Sys_Tim0_Init(void)
|
||||
*
|
||||
* Description : TImer0 Mode1 16bit timer Initialization
|
||||
*
|
||||
* Arguments : NONE
|
||||
|
||||
* Returns : NONE
|
||||
|
||||
* Notes : NONE
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
|
||||
void Sys_Tim0_Init(void)
|
||||
{
|
||||
TMOD = 0x01; //mode 1, 16bit timer
|
||||
|
||||
TH0 = C_TIM0_Reload >> 8;
|
||||
TL0 = C_TIM0_Reload & 0xFF;
|
||||
|
||||
ET0 = 1; //enable time0 interrupt
|
||||
TR0 = 1; //time0 run
|
||||
|
||||
}
|
||||
|
||||
#if TIMER1_ENABLE
|
||||
|
||||
/**
|
||||
* @brief This function handles sys_tim Handler.
|
||||
* @param None
|
||||
* @retval None
|
||||
* 1ms
|
||||
*/
|
||||
void tim1_Interrupt(void) interrupt Interrupt_Vector_TF1//interrupt address is 0x000B
|
||||
{
|
||||
//1ms
|
||||
TF1 = 0;
|
||||
|
||||
TH1 += C_TIM1_Reload >> 8;
|
||||
TL1 += C_TIM1_Reload & 0xFF;
|
||||
|
||||
F_sys_tim1_tick = 1;
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
*******************************************************************************
|
||||
* void Sys_Tim1_Init(void)
|
||||
*
|
||||
* Description : TImer1 Mode1 16bit timer Initialization
|
||||
*
|
||||
* Arguments : NONE
|
||||
|
||||
* Returns : NONE
|
||||
|
||||
* Notes : NONE
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
|
||||
void Sys_Tim1_Init(void)
|
||||
{
|
||||
TMOD |= 0x10; //mode 1, 16bit timer
|
||||
|
||||
TH1 = C_TIM1_Reload >> 8;
|
||||
TL1 = C_TIM1_Reload & 0xFF;
|
||||
|
||||
ET1 = 1; //enable time1 interrupt
|
||||
TR1 = 1; //time1 run
|
||||
}
|
||||
|
||||
#endif
|
||||
|
548
UsrSrc/uart/uart.c
Normal file
548
UsrSrc/uart/uart.c
Normal file
@ -0,0 +1,548 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
*
|
||||
* @file uart.c
|
||||
* @brief uart module
|
||||
* @ic sy8835
|
||||
*
|
||||
* @version 1.0
|
||||
* @date 2024/11/01 15:00:40
|
||||
* @author Alex Xu
|
||||
*
|
||||
* Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
* All Rights Reserved
|
||||
*
|
||||
* History:
|
||||
* Revision Date Author Desc
|
||||
* 1.0.0 2024/11/01 Alex build this file
|
||||
******************************************************************************/
|
||||
/*_____ I N C L U D E S ____________________________________________________*/
|
||||
#include "uart.h"
|
||||
#include "system.h"
|
||||
#include "vox_module.h"
|
||||
#include "sleep.h"
|
||||
|
||||
/******************************************************************************\
|
||||
Macro definitions
|
||||
\******************************************************************************/
|
||||
#define NONE_PARITY 0 //无校验
|
||||
#define ODD_PARITY 1 //奇校验
|
||||
#define EVEN_PARITY 2 //偶校验
|
||||
#define MARK_PARITY 3 //标记校验
|
||||
#define SPACE_PARITY 4 //空白校验
|
||||
|
||||
#define PARITYBIT EVEN_PARITY //定义校验位
|
||||
|
||||
/******************************************************************************\
|
||||
Variables definitions
|
||||
\******************************************************************************/
|
||||
|
||||
bit busy0;
|
||||
|
||||
#ifdef VOX_RX
|
||||
#if UART0_ENABLE
|
||||
idata uint8_t RX0_Buffer[COM0_Data_Lenth] = 0; //接收缓冲
|
||||
bit Uart0_RX_Finish_Flag = 0;
|
||||
#endif
|
||||
|
||||
#if UART1_ENABLE
|
||||
idata uint8_t RX1_Buffer[COM0_Data_Lenth] = 0; //接收缓冲
|
||||
bit Uart1_RX_Finish_Flag = 0;
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
#if UART0_ENABLE
|
||||
|
||||
/*
|
||||
*******************************************************************************
|
||||
* void UART0_Init(void)
|
||||
*
|
||||
* Description : UART0 Initialization UART0用于debug、打印、透传功能
|
||||
*
|
||||
* Arguments : NONE
|
||||
|
||||
* Returns : NONE
|
||||
|
||||
* Notes : NONE
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
|
||||
void UART0_Init(void)
|
||||
{
|
||||
#if 1
|
||||
/* vor、vol都使用uart0进行分时通讯。 */
|
||||
SFRADDR = P0_OE; //Set P02 And P03 As Output.
|
||||
SFRDATA |= 0x0C;
|
||||
|
||||
SFRADDR = P0_IE; //Set P02 And P03 As Input.
|
||||
SFRDATA |= 0x0C;
|
||||
|
||||
// SFRADDR = P0_PU; //Set P02 And P03 30K Pullup.
|
||||
// SFRDATA |= 0x0C;
|
||||
|
||||
SFRADDR = MFP_CTL0; //VOR、VOL都使用UART0进行分时通讯。
|
||||
SFRDATA &=~ 0x0F;
|
||||
SFRDATA |= 0x09;
|
||||
|
||||
|
||||
#else
|
||||
/* vor、vol使用不同uart进行通讯 */
|
||||
SFRADDR = P0_OE; //Set P02 As Output.
|
||||
SFRDATA |= 0x04;
|
||||
|
||||
SFRADDR = P0_IE; //Set P02 As Input.
|
||||
SFRDATA |= 0x04;
|
||||
|
||||
SFRADDR = MFP_CTL0; //VOR使用UART0进行通讯。
|
||||
SFRDATA &=~ 0x03;
|
||||
SFRDATA |= 0x01;
|
||||
|
||||
#endif
|
||||
|
||||
BD = 1; //Select additional Baudrate generator
|
||||
PCON |= 0x80; //Baudrate double enable
|
||||
|
||||
//baudrate set
|
||||
S0RELH = HIBYTE(S0REL_VALUE);
|
||||
S0RELL = LOBYTE(S0REL_VALUE);//s0rel=1023, baudrate = fclk/32 = 187.5k
|
||||
|
||||
S0CON = 0x52; //SCON: MODE 1, 8-bit UART, RI enable
|
||||
|
||||
ES0 = 1; //Enable UART0 IRQ
|
||||
}
|
||||
|
||||
/*
|
||||
*******************************************************************************
|
||||
* void Uart0SendPacket(uint8_t Length,uint8_t *TransBuf)
|
||||
*
|
||||
* Description : UART0 Send Packet
|
||||
*
|
||||
* Arguments : NONE
|
||||
|
||||
* Returns : NONE
|
||||
|
||||
* Notes : NONE
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
#ifdef VOX_TX
|
||||
|
||||
void Uart0SendPacket(uint16_t Length,uint8_t *TransBuf)
|
||||
{
|
||||
uint8_t i = 0;
|
||||
|
||||
S0CON &=~ UART_REC_ENABLE; //Disable UART0's RX
|
||||
|
||||
for(i=0;i<Length;i++)
|
||||
{
|
||||
while(busy0);
|
||||
// ACC = *TransBuf++;
|
||||
busy0 = 1;
|
||||
S0BUF = *TransBuf++;
|
||||
}
|
||||
|
||||
S0CON |= UART_REC_ENABLE; //Enabel UART0's RX
|
||||
}
|
||||
#endif
|
||||
|
||||
#define Vox_Comm_Data_Len 7
|
||||
|
||||
/*uart0中断处理函数*/
|
||||
void uart0_Interrupt(void) interrupt Interrupt_Vector_RI_TI
|
||||
{
|
||||
static uint8_t Rx0Status;
|
||||
|
||||
static uint16_t RX0_Cnt;
|
||||
static uint16_t RX0DataLen;
|
||||
|
||||
/*处理UART0发送中断*/
|
||||
if(TI0)
|
||||
{
|
||||
TI0 = 0;
|
||||
busy0 = 0;
|
||||
}
|
||||
|
||||
/*处理UART0接收中断*/
|
||||
if(RI0)
|
||||
{
|
||||
RI0 = 0;
|
||||
#if SLEEP_ENABLE
|
||||
Enter_Sleep_Cnt_Restart_Flag = 1;
|
||||
#endif
|
||||
|
||||
#ifdef VOX_RX
|
||||
|
||||
switch(Rx0Status)
|
||||
{
|
||||
case 0:
|
||||
if( S0BUF == (BOXHEADER >> 8) )
|
||||
{
|
||||
Rx0Status = 1;
|
||||
|
||||
RX0_Cnt = 0;
|
||||
|
||||
RX0_Buffer[RX0_Cnt] = S0BUF;
|
||||
|
||||
RX0_Cnt++;
|
||||
}
|
||||
else
|
||||
{
|
||||
Rx0Status = 0;
|
||||
|
||||
RX0_Cnt = 0;
|
||||
}
|
||||
break;
|
||||
|
||||
case 1:
|
||||
if(S0BUF == BOXHEADER)
|
||||
{
|
||||
Rx0Status = 2;
|
||||
|
||||
RX0_Buffer[RX0_Cnt] = S0BUF;
|
||||
|
||||
RX0_Cnt++;
|
||||
}
|
||||
else
|
||||
{
|
||||
Rx0Status = 0;
|
||||
|
||||
RX0_Cnt = 0;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
RX0_Buffer[RX0_Cnt] = S0BUF;
|
||||
|
||||
RX0_Cnt++;
|
||||
|
||||
if( RX0_Cnt == Vox_Comm_Data_Len )
|
||||
{
|
||||
RX0DataLen = RX0_Buffer[2] + 4; //获取数据长度
|
||||
}
|
||||
|
||||
if( (RX0DataLen == RX0_Cnt) || (RX0_Cnt > COM0_Data_Lenth) ) //当接收到的data个数等于RX0DataLen,这结束本次传输。
|
||||
{
|
||||
RX0_Cnt = 0;
|
||||
Rx0Status = 0;
|
||||
Uart0_RX_Finish_Flag = 1;
|
||||
}
|
||||
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
#if UART1_ENABLE
|
||||
|
||||
bit busy1 = 0;
|
||||
|
||||
/*
|
||||
*******************************************************************************
|
||||
* void UART1_Init(void)
|
||||
*
|
||||
* Description : UART1 Initialization UART1用于VOX通讯功能
|
||||
*
|
||||
* Arguments : NONE
|
||||
|
||||
* Returns : NONE
|
||||
|
||||
* Notes : NONE
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
void UART1_Init(void)
|
||||
{
|
||||
SFRADDR = P0_OE; //Set P03 As Output.
|
||||
SFRDATA |= 0x08;
|
||||
|
||||
SFRADDR = P0_IE; //Set P03 As Input.
|
||||
SFRDATA |= 0x08;
|
||||
|
||||
SFRADDR = MFP_CTL0; //VOL使用UART1进行通讯。
|
||||
SFRDATA &=~ 0x0C;
|
||||
SFRDATA |= 0x04;
|
||||
|
||||
//baudrate set
|
||||
S1RELH = HIBYTE(S1REL_VALUE);
|
||||
S1RELL = LOBYTE(S1REL_VALUE);//s1rel=1023, baudrate = fclk/32 = 187.5k
|
||||
|
||||
S1CON = 0x92; //S1CON: 8-bit UART1,REN1 、 RI1 、TI1 enable
|
||||
|
||||
IEN2 |= 1; //Enable UART1 IRQ
|
||||
}
|
||||
|
||||
/*
|
||||
*******************************************************************************
|
||||
* void Uart1SendPacket(uint16_t Length,uint8_t *TransBuf)
|
||||
*
|
||||
* Description : UART1 Send Packet
|
||||
*
|
||||
* Arguments : NONE
|
||||
|
||||
* Returns : NONE
|
||||
|
||||
* Notes : NONE
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
void Uart1SendPacket(uint16_t Length,uint8_t *TransBuf)
|
||||
{
|
||||
uint8_t i = 0;
|
||||
|
||||
S1CON &=~ UART_REC_ENABLE; //Disable UART0's RX
|
||||
|
||||
for(i=0;i<Length;i++)
|
||||
{
|
||||
while(busy1);
|
||||
//ACC = *TransBuf++;
|
||||
busy1 = 1;
|
||||
S1BUF = *TransBuf++;
|
||||
}
|
||||
|
||||
S1CON |= UART_REC_ENABLE; //Enabel UART0's RX
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
*******************************************************************************
|
||||
* void Uart1SendString(char *s)
|
||||
*
|
||||
* Description : UART1 Send String
|
||||
*
|
||||
* Arguments : NONE
|
||||
|
||||
* Returns : NONE
|
||||
|
||||
* Notes : NONE
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
|
||||
void Uart1SendString(char *s)
|
||||
{
|
||||
while(*s) //检测字符串结束标志
|
||||
{
|
||||
Uart1SendData(*s++); //发送当前字符
|
||||
}
|
||||
}
|
||||
|
||||
/*uart1中断处理函数*/
|
||||
void uart1_Interrupt(void) interrupt Interrupt_Vector_RI1_TI1
|
||||
{
|
||||
static uint8_t Rx1Status;
|
||||
|
||||
static uint16_t RX1_Cnt;
|
||||
static uint16_t RX1DataLen;
|
||||
|
||||
/*处理UART1发送中断*/
|
||||
if(S1CON & 0x02) //TI1 = 1
|
||||
{
|
||||
S1CON &= ~0x02; //TI1 = 0
|
||||
busy1 = 0;
|
||||
}
|
||||
|
||||
/*处理UART1接收中断*/
|
||||
if(S1CON & 0x01) //RI1 = 1
|
||||
{
|
||||
S1CON &= ~0x01;
|
||||
|
||||
#if SLEEP_ENABLE
|
||||
Enter_Sleep_Cnt_Restart_Flag = 1;
|
||||
#endif
|
||||
#ifdef VOX_RX
|
||||
|
||||
switch(Rx1Status)
|
||||
{
|
||||
case 0:
|
||||
|
||||
if(S1BUF == 0xAA)
|
||||
{
|
||||
Rx1Status = 1;
|
||||
|
||||
RX1_Cnt = 0;
|
||||
|
||||
RX1_Buffer[RX1_Cnt] = S1BUF;
|
||||
|
||||
RX1_Cnt++;
|
||||
}
|
||||
else
|
||||
{
|
||||
Rx1Status = 0;
|
||||
|
||||
RX1_Cnt = 0;
|
||||
}
|
||||
break;
|
||||
|
||||
case 1:
|
||||
|
||||
RX1_Buffer[RX1_Cnt] = S1BUF;
|
||||
|
||||
RX1_Cnt++;
|
||||
|
||||
if( RX1_Cnt == Vox_Comm_Data_Len )
|
||||
{
|
||||
RX1DataLen = RX1_Buffer[5] | (RX1_Buffer[6] << 8) + 9; //获取数据长度,Headr(1Byte) + Trandsmit Dir(1Byte) + CMD(2Bytes) + datalen(2Bytes) + CRC16(2Bytes)
|
||||
}
|
||||
|
||||
if( (RX1DataLen == RX1_Cnt) || (RX1_Cnt > COM0_Data_Lenth) ) //当接收到的data个数等于RX0DataLen,这结束本次传输。
|
||||
{
|
||||
RX1_Cnt = 0;
|
||||
Rx1Status = 0;
|
||||
Uart1_RX_Finish_Flag = 1;
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#if UART2_ENABLE
|
||||
|
||||
bit busy2 = 0;
|
||||
|
||||
#ifdef _DEBUG_ALL
|
||||
|
||||
char putchar(char c)
|
||||
{
|
||||
#if 0
|
||||
|
||||
while(!TI0);
|
||||
TI0 = 0;
|
||||
return (S0BUF = c);
|
||||
|
||||
#else
|
||||
|
||||
Uart2SendData(c);
|
||||
|
||||
return(c);
|
||||
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
/*
|
||||
*******************************************************************************
|
||||
* void UART2_Init(void)
|
||||
*
|
||||
* Description : UART2 Initialization UART1用于VOX通讯功能
|
||||
*
|
||||
* Arguments : NONE
|
||||
|
||||
* Returns : NONE
|
||||
|
||||
* Notes : NONE
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
void UART2_Init(void)
|
||||
{
|
||||
S2IOCFG = 0x0A;
|
||||
|
||||
//baudrate set
|
||||
S2RELH = HIBYTE(S2REL_VALUE);
|
||||
S2RELL = LOBYTE(S2REL_VALUE);//s1rel=1023, baudrate = fclk/32 = 187.5k
|
||||
|
||||
S2CON = 0x92; //S1CON: 8-bit UART1,REN1 、 RI1 、TI1 enable
|
||||
|
||||
IEN2 = 0x02; //Enable UART2 IRQ
|
||||
|
||||
}
|
||||
/*
|
||||
*******************************************************************************
|
||||
* void Uart2SendData(uint8_t Txdata)
|
||||
*
|
||||
* Description : UART2 Send Data
|
||||
*
|
||||
* Arguments : NONE
|
||||
|
||||
* Returns : NONE
|
||||
|
||||
* Notes : NONE
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
|
||||
void Uart2SendData(uint8_t Txdata)
|
||||
{
|
||||
while(busy2);
|
||||
|
||||
busy2 = 1;
|
||||
|
||||
S2BUF = Txdata;
|
||||
|
||||
}
|
||||
#if 0
|
||||
/*
|
||||
*******************************************************************************
|
||||
* void Uart2SendPacket(uint16_t Length,uint8_t *TransBuf)
|
||||
*
|
||||
* Description : UART2 Send Packet
|
||||
*
|
||||
* Arguments : NONE
|
||||
|
||||
* Returns : NONE
|
||||
|
||||
* Notes : NONE
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
void Uart2SendPacket(uint16_t Length,uint8_t *TransBuf)
|
||||
{
|
||||
uint16_t i = 0;
|
||||
for(i=0;i<Length;i++)
|
||||
{
|
||||
Uart2SendData(*TransBuf++);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
*******************************************************************************
|
||||
* void Uart2SendString(char *s)
|
||||
*
|
||||
* Description : UART2 Send String
|
||||
*
|
||||
* Arguments : NONE
|
||||
|
||||
* Returns : NONE
|
||||
|
||||
* Notes : NONE
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
|
||||
void Uart2SendString(char *s)
|
||||
{
|
||||
while(*s) //检测字符串结束标志
|
||||
{
|
||||
Uart2SendData(*s++); //发送当前字符
|
||||
}
|
||||
}
|
||||
#endif
|
||||
/*uart2中断处理函数*/
|
||||
|
||||
void uart2_Interrupt(void) interrupt Interrupt_Vector_IE8
|
||||
{
|
||||
/*处理UART1发送中断*/
|
||||
if(S2CON & 0x02) //TI2 = 1
|
||||
{
|
||||
S2CON &= ~0x02; //TI2 = 0
|
||||
busy2 = 0;
|
||||
}
|
||||
|
||||
/*处理UART1接收中断*/
|
||||
if(S2CON & 0x01) //RI2 = 1
|
||||
{
|
||||
S2CON &= ~0x01;
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
131
UsrSrc/user/user.c
Normal file
131
UsrSrc/user/user.c
Normal file
@ -0,0 +1,131 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
*
|
||||
* @file user.c
|
||||
* @brief user module
|
||||
* @ic sy8835
|
||||
*
|
||||
* @version 1.0
|
||||
* @date 2024/11/01 09:59:40
|
||||
* @author Alex Xu
|
||||
*
|
||||
* Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
* All Rights Reserved
|
||||
*
|
||||
* History:
|
||||
* Revision Date Author Desc
|
||||
* 1.0.0 2024/11/01 Alex Xu build this file
|
||||
******************************************************************************
|
||||
*/
|
||||
/*_____ I N C L U D E S ____________________________________________________*/
|
||||
|
||||
#include "user.h"
|
||||
|
||||
|
||||
/******************************************************************************\
|
||||
Macro definitions
|
||||
\******************************************************************************/
|
||||
|
||||
/******************************************************************************\
|
||||
Variables definitions
|
||||
\******************************************************************************/
|
||||
|
||||
/******************************************************************************\
|
||||
Functions definitions
|
||||
\******************************************************************************/
|
||||
|
||||
/*******************************************************************************
|
||||
* Function Name : ExtSfr_Write
|
||||
* Description : ExtSfr Write a Byte
|
||||
* Input : Will Send Date
|
||||
* Output : None
|
||||
* Return : None
|
||||
******************************************************************************
|
||||
*/
|
||||
void ExtSfr_Write(u8 reg_addr,u8 _dat)
|
||||
{
|
||||
SFRADDR = reg_addr;
|
||||
SFRDATA = _dat;
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
* Function Name : ExtSfr_Read
|
||||
* Description : ExtSfr Read a Byte
|
||||
* Input : Will Send Date
|
||||
* Output : None
|
||||
* Return : None
|
||||
******************************************************************************
|
||||
*/
|
||||
u8 ExtSfr_Read(u8 reg_addr)
|
||||
{
|
||||
u8 Data = 0;
|
||||
|
||||
SFRADDR = reg_addr;
|
||||
Data = SFRDATA;
|
||||
|
||||
return Data;
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
* Function Name : I2cSfr_Write
|
||||
* Description : I2cSfr Write a Byte
|
||||
* Input : Will Send Date
|
||||
* Output : None
|
||||
* Return : None
|
||||
******************************************************************************
|
||||
*/
|
||||
void I2cSfr_Write(u8 reg_addr,u8 _dat)
|
||||
{
|
||||
I2C_Start();
|
||||
|
||||
//device address
|
||||
I2C_SendByte(I2C_SFR_ADDR<<1);//send the address for write
|
||||
I2C_WaitAck();
|
||||
|
||||
//Register address
|
||||
I2C_SendByte(reg_addr);
|
||||
I2C_WaitAck();
|
||||
|
||||
//data
|
||||
I2C_SendByte(_dat);
|
||||
I2C_WaitAck();
|
||||
I2C_Stop();
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
* Function Name : I2cSfr_Read
|
||||
* Description : I2cSfr Read a Byte
|
||||
* Input : Will Send Date
|
||||
* Output : None
|
||||
* Return : None
|
||||
******************************************************************************
|
||||
*/
|
||||
u8 I2cSfr_Read(u8 reg_addr)
|
||||
{
|
||||
uint8_t readdata = 0;
|
||||
|
||||
I2C_Start();
|
||||
|
||||
//device address
|
||||
I2C_SendByte(I2C_SFR_ADDR<<1);//send the address for write
|
||||
I2C_WaitAck();
|
||||
|
||||
//Register address
|
||||
I2C_SendByte(reg_addr);
|
||||
I2C_WaitAck();
|
||||
|
||||
I2C_Start();
|
||||
|
||||
//device address
|
||||
I2C_SendByte((I2C_SFR_ADDR<<1) | 1);//send the address for read
|
||||
I2C_WaitAck();
|
||||
|
||||
//data
|
||||
readdata = I2C_ReadByte();
|
||||
I2C_NoAck();
|
||||
I2C_Stop();
|
||||
|
||||
return readdata;
|
||||
}
|
||||
|
||||
|
689
UsrSrc/userapp/userapp.c
Normal file
689
UsrSrc/userapp/userapp.c
Normal file
@ -0,0 +1,689 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
*
|
||||
* @file UserApp.c
|
||||
* @brief UserApp module
|
||||
* @ic sy8835
|
||||
*
|
||||
* @version 1.0
|
||||
* @date 2024/11/01 15:00:40
|
||||
* @author Alex Xu
|
||||
*
|
||||
* Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
* All Rights Reserved
|
||||
*
|
||||
* History:
|
||||
* Revision Date Author Desc
|
||||
* 1.0.0 2024/11/01 Alex build this file
|
||||
******************************************************************************/
|
||||
/*_____ I N C L U D E S ____________________________________________________*/
|
||||
|
||||
#include "userapp.h"
|
||||
#include "gpio.h"
|
||||
#include "adc.h"
|
||||
#include "hall.h"
|
||||
#include "key.h"
|
||||
#include "sleep.h"
|
||||
#include "system.h"
|
||||
#include "bat.h"
|
||||
#include "sys_tim.h"
|
||||
#include "charger_module.h"
|
||||
#include "discharge_module.h"
|
||||
#include "led.h"
|
||||
#include "vox_module.h"
|
||||
|
||||
/******************************************************************************\
|
||||
Macro definitions
|
||||
\******************************************************************************/
|
||||
#define LED_ON_CNT 100 //10s
|
||||
|
||||
#define LED_PRO_TIM 40
|
||||
|
||||
#define LED_OFF_CNT 1
|
||||
|
||||
/******************************************************************************\
|
||||
Variables definitions
|
||||
\******************************************************************************/
|
||||
|
||||
xdata s_sys_state Systerm_State = {SLEEP_STATE,AWAKE_STATE,AWAKE_STATE};
|
||||
|
||||
uint8_t LED_On_Timer = 0; //led亮时间计时
|
||||
|
||||
bit LED_On_Flag = 0;
|
||||
|
||||
bit Wkup_Earphone_Flag = 0; //保护消失后,需要升压唤醒耳机标志位
|
||||
|
||||
uint8_t Wkup_Source_Flag = 0; //唤醒源标志
|
||||
|
||||
#ifdef PWM_ENABLE
|
||||
|
||||
uint8_t Breathing_Light_Cnt = 0;
|
||||
#endif
|
||||
/******************************************************************************\
|
||||
Functions definitions
|
||||
\******************************************************************************/
|
||||
|
||||
/*****************************************************************************
|
||||
* Function : void LED_Display_App(void)
|
||||
* Description : 100ms调用周期
|
||||
* Input : None
|
||||
* Output : None
|
||||
* Return : None
|
||||
* Note : None
|
||||
*****************************************************************************/
|
||||
/*
|
||||
充电:
|
||||
1、充电中,无其它行为打断时,开关盒状态下都显示充电常亮灯效(1Hz闪烁);
|
||||
2、充满,常亮;可被其它灯效打断;
|
||||
|
||||
非充电:
|
||||
1、首次使用开盖灯效:①高电:亮4s后灭;②低电:1Hz闪4s后灭;
|
||||
2、非首次使用开盖灯效:①耳机在盒:亮4s后灭;②耳机不在盒:????
|
||||
③充电中,开盖闪一下,如何闪?亮多久后灭?
|
||||
3、关盖灯效,高电:亮4s后灭;低电:1Hz闪4s后灭;
|
||||
4、关盒状态下无灯效显示;
|
||||
|
||||
*/
|
||||
#ifdef LED_DISPLAY
|
||||
|
||||
void LED_Breating_Light_Off(void)
|
||||
{
|
||||
#ifdef PWM_ENABLE
|
||||
|
||||
LED_R_BREATHING_LIGHT(SHOW_NONE);
|
||||
|
||||
LED_G_BREATHING_LIGHT(SHOW_NONE);
|
||||
|
||||
LED_Y_BREATHING_LIGHT(SHOW_NONE);
|
||||
|
||||
LED_B_BREATHING_LIGHT(SHOW_NONE);
|
||||
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
void LED_Display_App(void)
|
||||
{
|
||||
#ifdef NTC_ENABLE
|
||||
static bit LED_On_Flag1;
|
||||
#endif
|
||||
static bit LED_On_Chg_Flag;
|
||||
|
||||
static bit LED_On_ChgDone_Flag;
|
||||
|
||||
static bit Disp_Bat_Lev;
|
||||
|
||||
#ifdef NTC_ENABLE
|
||||
/*NTC保护,4灯一直快闪(2Hz)*/
|
||||
if( NTC_Pro_Flag || Vox_Output_Short_Flag )
|
||||
{
|
||||
if( !LED_On_Flag1 )
|
||||
{
|
||||
LED_On_Flag1 = 1;
|
||||
|
||||
LED_On_Flag = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
if( Display_RSta != LED_KEEP_FLASHING )
|
||||
{
|
||||
Display_Red_Flash(20,10);
|
||||
}
|
||||
|
||||
if( Display_GSta != LED_KEEP_FLASHING )
|
||||
{
|
||||
Display_Green_Flash(20,10);
|
||||
}
|
||||
|
||||
if( Display_YSta != LED_KEEP_FLASHING )
|
||||
{
|
||||
Display_Yellow_Flash(20,10);
|
||||
}
|
||||
|
||||
if( Display_BSta != LED_KEEP_FLASHING )
|
||||
{
|
||||
Display_Blue_Flash(20,10);
|
||||
}
|
||||
}
|
||||
|
||||
#if SLEEP_ENABLE
|
||||
Enter_Sleep_Cnt_Restart_Flag = 1;
|
||||
#endif
|
||||
return;
|
||||
}
|
||||
|
||||
/* 保护消失后,需要开启5V升压一段时间。 */
|
||||
if( LED_On_Flag1 )
|
||||
{
|
||||
LED_On_Flag1 = 0;
|
||||
|
||||
LED_On_ChgDone_Flag = 0;
|
||||
|
||||
LED_On_Chg_Flag = 0;
|
||||
|
||||
Wkup_Earphone_Flag = 1;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
if (ChgStatus == CHG_STA_ING) //ChgStatus = CHG_STA_ING
|
||||
{
|
||||
if ( Charger_Done ) // 充电完成,4个LED常亮
|
||||
{
|
||||
if( !LED_On_ChgDone_Flag )
|
||||
{
|
||||
LED_On_ChgDone_Flag = 1;
|
||||
|
||||
LED_Breating_Light_Off();
|
||||
}
|
||||
|
||||
Display_AllOn();
|
||||
}
|
||||
else
|
||||
{
|
||||
if( !LED_On_Chg_Flag )
|
||||
{
|
||||
LED_On_Chg_Flag = 1;
|
||||
|
||||
LED_On_Flag = 1;
|
||||
|
||||
Breathing_Light_Cnt = LED_R;
|
||||
}
|
||||
else
|
||||
{
|
||||
#ifdef PWM_ENABLE
|
||||
if( LED_On_Timer < LED_OFF_CNT )
|
||||
{
|
||||
LED_On_Timer++;
|
||||
|
||||
switch ( Breathing_Light_Cnt )
|
||||
{
|
||||
case LED_R:
|
||||
|
||||
if( Display_RSta != LED_BREATHING_LIGHT )
|
||||
{
|
||||
LED_R_BREATHING_LIGHT(SLOW_DARK);
|
||||
}
|
||||
|
||||
break;
|
||||
case LED_G:
|
||||
if( Display_GSta != LED_BREATHING_LIGHT )
|
||||
{
|
||||
LED_G_BREATHING_LIGHT(SLOW_DARK);
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case LED_Y:
|
||||
if( Display_YSta != LED_BREATHING_LIGHT )
|
||||
{
|
||||
LED_Y_BREATHING_LIGHT(SLOW_DARK);
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case LED_B:
|
||||
if( Display_BSta != LED_BREATHING_LIGHT )
|
||||
{
|
||||
LED_B_BREATHING_LIGHT(SLOW_DARK);
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
if( LED_On_Timer < 15 ) //LED显示1.5s。
|
||||
{
|
||||
LED_On_Timer++;
|
||||
}
|
||||
else
|
||||
{
|
||||
LED_On_Timer = 0;
|
||||
|
||||
Breathing_Light_Cnt++;
|
||||
|
||||
if( Breathing_Light_Cnt >= LED_ID_MAX )
|
||||
{
|
||||
Breathing_Light_Cnt = LED_R;
|
||||
}
|
||||
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
CoverEvent_Flg_led = 0;
|
||||
|
||||
Earphone_Chg_Flag = 0;
|
||||
|
||||
Key_Press_short_irq = 0;
|
||||
|
||||
Disp_Bat_Lev = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
if( LED_On_Chg_Flag )
|
||||
{
|
||||
LED_On_Chg_Flag = 0;
|
||||
|
||||
LED_Breating_Light_Off();
|
||||
|
||||
LED_On_Flag = 1;
|
||||
|
||||
Wkup_Earphone_Flag = 1;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if( LED_On_Flag )
|
||||
{
|
||||
LED_On_Timer = 0;
|
||||
|
||||
LED_On_Flag = 0;
|
||||
|
||||
Display_AllOff();
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if( CoverEvent_Flg_led || Disp_Bat_Lev || Earphone_Chg_Flag || Key_Press_short_irq )
|
||||
{
|
||||
if( LED_On_Timer < LED_OFF_CNT )
|
||||
{
|
||||
LED_On_Timer++;
|
||||
}
|
||||
else
|
||||
if( LED_On_Timer < LED_ON_CNT ) //LED显示5s后灭。
|
||||
{
|
||||
LED_On_Timer++;
|
||||
|
||||
/*电量显示,25%电量左侧第1个灯闪;25%-50%电量2个灯常亮;50%-75%电量3个灯常亮;75%-100%电量4个灯常量。*/
|
||||
if(bat_level_Pec < 25)
|
||||
{
|
||||
if (Display_RSta != LED_KEEP_FLASHING)
|
||||
{
|
||||
Display_Red_KeepFlash(100);
|
||||
Display_Green_Off();
|
||||
Display_Yellow_Off();
|
||||
Display_Blue_Off();
|
||||
}
|
||||
}
|
||||
else
|
||||
if(bat_level_Pec < 50)
|
||||
{
|
||||
Display_Red_On();
|
||||
Display_Green_On();
|
||||
Display_Yellow_Off();
|
||||
Display_Blue_Off();
|
||||
}
|
||||
else
|
||||
if(bat_level_Pec < 75)
|
||||
{
|
||||
Display_Red_On();
|
||||
Display_Green_On();
|
||||
Display_Yellow_On();
|
||||
Display_Blue_Off();
|
||||
}
|
||||
else
|
||||
if(bat_level_Pec < 100)
|
||||
{
|
||||
Display_AllOn();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
CoverEvent_Flg_led = 0;
|
||||
|
||||
Disp_Bat_Lev = 0;
|
||||
|
||||
Earphone_Chg_Flag = 0;
|
||||
|
||||
Key_Press_short_irq = 0;
|
||||
|
||||
LED_On_Flag = 1; //清LED显示
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
/*
|
||||
*******************************************************************************
|
||||
* uint8_t ADC_GetValue_Machine(void)
|
||||
*
|
||||
* Description : ADC值获取函数,使能一个通道后,在中断中取值,每使能一个通道,需要运行一个UserAPP周期。 (5ms调用周期)
|
||||
*
|
||||
* Arguments : NONE
|
||||
|
||||
* Returns : 1:完成一次全通道采样;
|
||||
|
||||
* Notes : NONE
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
uint8_t ADC_GetValue_Machine(void)
|
||||
{
|
||||
#ifdef _DEBUG_ADC
|
||||
printf("adc chn:%d,pmu:%d,Ivol:%d,Vbat:%d,Vin:%d,Vpmid:%d,Vor:%d,Vol:%d,Vdd:%d,Ivor:%d.\r\n",(u16)ADC_Chn_Num,(u16)g_Vpmu_Adc,(u16)g_pmu_Adc_Ivol,(u16)Vbat_Adc,(u16)g_pmu_Adc_Vin,(u16)g_pmu_Adc_Vpmid,(u16)g_pmu_Adc_Vor,(u16)g_pmu_Adc_Vol,(u16)g_pmu_Adc_Vdd,(u16)g_pmu_Adc_Ivor);
|
||||
#endif
|
||||
|
||||
PMU_ADC_Chn_Data(ADC_Chn_Num++);
|
||||
|
||||
if( ADC_Chn_Num >= pmu_ADC_MAX )
|
||||
{
|
||||
ADC_Chn_Num = 0;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
*******************************************************************************
|
||||
* void System_Drivers_Machine(void)
|
||||
*
|
||||
* Description : 系统驱动相关程序处理。 (最小5ms调用周期)
|
||||
*
|
||||
* Arguments : NONE
|
||||
|
||||
* Returns : NONE
|
||||
|
||||
* Notes : NONE
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
void System_Drivers_Machine(void)
|
||||
{
|
||||
#if CHARGER_ENABLE
|
||||
Charger_Handler();
|
||||
#endif
|
||||
|
||||
#if DISCHARGE_ENABLE
|
||||
DisCharge_Handler();
|
||||
#endif
|
||||
|
||||
#if HALL_ENABLE
|
||||
Hall_Handler();
|
||||
#endif
|
||||
|
||||
#if KEY_ENABLE
|
||||
Key_Handler();
|
||||
#endif
|
||||
|
||||
#ifdef VOX_RX
|
||||
HandleVoxCommMsg();
|
||||
#endif
|
||||
|
||||
if ( F_sys_tim_100ms )
|
||||
{
|
||||
F_sys_tim_100ms = 0;
|
||||
#if BAT_VALUE
|
||||
check_bat_level();
|
||||
#endif
|
||||
|
||||
#ifdef LED_DISPLAY
|
||||
LED_Display_App();
|
||||
#endif
|
||||
|
||||
#if VOX_ENABLE
|
||||
Vox_Det_Machine();
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************************************
|
||||
* Function : PMU_State_Machine
|
||||
* Description : PMU Handle
|
||||
* Input : None
|
||||
* Output : None
|
||||
* Return : None
|
||||
* Note : None
|
||||
*****************************************************************************/
|
||||
|
||||
void PMU_State_Machine(void)
|
||||
{
|
||||
Get_PMU_Info( &pmu_Info ); //获取pmu状态
|
||||
}
|
||||
|
||||
/*****************************************************************************
|
||||
* Function : SysTerm_State_Machine
|
||||
* Description : System State Handle
|
||||
* Input : None
|
||||
* Output : None
|
||||
* Return : None
|
||||
* Note : None
|
||||
*****************************************************************************/
|
||||
uint8_t Power_index = 0;
|
||||
|
||||
void SysTem_State_Machine(void)
|
||||
{
|
||||
uint8_t ret = 0;
|
||||
|
||||
if(Systerm_State.Current_State != Systerm_State.Next_State)
|
||||
{
|
||||
Systerm_State.Pre_State = Systerm_State.Current_State ;
|
||||
Systerm_State.Current_State = Systerm_State.Next_State ;
|
||||
|
||||
switch(Systerm_State.Current_State)
|
||||
{
|
||||
case POWER_ON_STATE:
|
||||
/*
|
||||
系统上电初始化相关处理逻辑
|
||||
例如:LED显示UI、和耳机通信等功能;
|
||||
在这里进行简单示例,两个LED显示闪烁2次。
|
||||
*/
|
||||
#ifdef LED_DISPLAY
|
||||
LED_R_FLASH(100,3);
|
||||
|
||||
LED_G_FLASH(100,3);
|
||||
#endif
|
||||
|
||||
#ifdef _DEBUG_MAIN
|
||||
printf("Power On State!Hall(0x%x) (line:%d)\r\n", (uint16_t)CoverStatus,(uint16_t)__LINE__);
|
||||
#endif
|
||||
break;
|
||||
|
||||
case AWAKE_STATE:
|
||||
/*
|
||||
系统唤醒后需要处理的功能;
|
||||
1、使能中断;
|
||||
*/
|
||||
#ifdef _DEBUG_MAIN
|
||||
printf("Awake State (line:%d)\r\n", (uint16_t)__LINE__);
|
||||
#endif
|
||||
break;
|
||||
|
||||
case NORMAL_STATE:
|
||||
/*系统正常工作中需要处理的功能;
|
||||
1、初始化进入Sleep的定时器;
|
||||
*/
|
||||
#if SLEEP_ENABLE
|
||||
Decnt_SleepDelay = ENTER_STANDBYMODE_CNT;
|
||||
#endif
|
||||
#ifdef _DEBUG_MAIN
|
||||
printf("Normal State (line:%d)\r\n", (uint16_t)__LINE__);
|
||||
#endif
|
||||
break;
|
||||
|
||||
case SLEEP_STATE:
|
||||
/*
|
||||
进入Sleep模式前的一些准备工作;
|
||||
1、使能唤醒中断;
|
||||
*/
|
||||
|
||||
|
||||
#ifdef _DEBUG_MAIN
|
||||
printf("Sleep State (line:%d)\r\n", (uint16_t)__LINE__);
|
||||
#endif
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
switch(Systerm_State.Current_State)
|
||||
{
|
||||
case POWER_ON_STATE:
|
||||
/*上电初始化需要处理的功能;
|
||||
1、处理电池电量;
|
||||
2、获取shipmode唤醒后的唤醒标志位;
|
||||
*/
|
||||
Power_index++;
|
||||
if( Power_index >= pmu_ADC_MAX ) //上电启动后,需要采集完ADC所有通道的值后,再进去下一个状态机
|
||||
{
|
||||
Systerm_State.Next_State = AWAKE_STATE;
|
||||
|
||||
Power_index = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(bat_level == 0)
|
||||
{
|
||||
Systerm_State.Next_State = SLEEP_STATE; //电量为0,进入睡眠模式。
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case AWAKE_STATE:
|
||||
|
||||
Systerm_State.Next_State = NORMAL_STATE;
|
||||
|
||||
break;
|
||||
|
||||
case NORMAL_STATE:
|
||||
|
||||
/*1、唤醒后工作N ms后进入Sleep Mode,N需要大于100ms。
|
||||
2、有VIN存在、VOX放电、唤醒源中断的情况下,系不会进入sleep mode。
|
||||
*/
|
||||
#if SLEEP_ENABLE
|
||||
|
||||
if(F_sys_tim_1s)
|
||||
{
|
||||
F_sys_tim_1s = 0;
|
||||
#ifdef _DEBUG_PMU
|
||||
|
||||
printf("STA0:0x%x,STA1:0x%x,STA2:0x%x,Chip_STA:0x%x,VOX_STA:0x%x.Dec_Sleep:%d\r\n",(u16)(pmu_Info.pmu_Fault_STA0),(u16)(pmu_Info.pmu_Fault_STA1),(u16)(pmu_Info.pmu_Fault_STA2),(u16)(pmu_Info.pmu_Chip_STA),(u16)(pmu_Info.pmu_VOX_STA),(u16)Decnt_SleepDelay);
|
||||
// printf("Chg Sta:0x%x.,batPec:%d.\r\n",(u16)ChgStatus,(u16)bat_level_Pec);
|
||||
|
||||
// printf("Ivol:%d,Vbat:%d,Vin:%d,Vpmid:%d,Vor:%d,Vol:%d,Vdd:%d,Ivor:%d.\r\n",(u16)g_pmu_Adc_Ivol,(u16)Vbat_Adc,(u16)g_pmu_Adc_Vin,(u16)g_pmu_Adc_Vpmid,(u16)g_pmu_Adc_Vor,(u16)g_pmu_Adc_Vol,(u16)g_pmu_Adc_Vdd,(u16)g_pmu_Adc_Ivor);
|
||||
#endif
|
||||
|
||||
if(Decnt_SleepDelay > 0)
|
||||
{
|
||||
Decnt_SleepDelay--;
|
||||
|
||||
/*倒数进Sleep Mode过程中出现了中断,则重新计时。*/
|
||||
|
||||
if(Enter_Sleep_Cnt_Restart_Flag)
|
||||
{
|
||||
Enter_Sleep_Cnt_Restart_Flag = 0;
|
||||
|
||||
Decnt_SleepDelay = ENTER_STANDBYMODE_CNT;
|
||||
printf("Decnt_SleepDelay Reload.\r\n");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
#ifdef _DEBUG_MAIN
|
||||
printf("Enter Standby Mode!\r\n");
|
||||
#endif
|
||||
Systerm_State.Next_State = SLEEP_STATE; //进入Sleep Mode
|
||||
|
||||
Enter_ShipMode_Debounce = 0;
|
||||
/*清标志位*/
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
break;
|
||||
|
||||
case SLEEP_STATE:
|
||||
|
||||
/*
|
||||
1、检测唤醒源,是否需要唤醒系统;
|
||||
2、定时唤醒,更新电池电量;
|
||||
*/
|
||||
#if SLEEP_ENABLE
|
||||
|
||||
if(Check_Require_Sleep())
|
||||
{
|
||||
Enter_Sleep();
|
||||
}
|
||||
else
|
||||
{
|
||||
Systerm_State.Next_State = AWAKE_STATE;
|
||||
}
|
||||
|
||||
#endif
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*****************************************************************************
|
||||
* Function : UserAPP
|
||||
* Description : main()中调用,系统分为4个状态机,各个状态机5ms调用周期。
|
||||
* Input : None
|
||||
* Output : None
|
||||
* Return : None
|
||||
* Note : None
|
||||
*****************************************************************************/
|
||||
uint8_t Step_Cnt = 0;
|
||||
|
||||
void UserAPP(void)
|
||||
{
|
||||
//static uint8_t Step_Cnt;
|
||||
|
||||
if(F_sys_tim_5ms)
|
||||
{
|
||||
F_sys_tim_5ms = 0;
|
||||
|
||||
switch( Step_Cnt++ )
|
||||
{
|
||||
case 0:
|
||||
ADC_GetValue_Machine(); //用于获取各个通道的ADC值程序
|
||||
break;
|
||||
|
||||
case 1:
|
||||
PMU_State_Machine(); //用于PMU处理。
|
||||
break;
|
||||
|
||||
case 2:
|
||||
System_Drivers_Machine(); //用于执行芯片驱动程序
|
||||
break;
|
||||
|
||||
case 3:
|
||||
SysTem_State_Machine(); //用于应用程序
|
||||
Step_Cnt = 0;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if ( F_sys_tim_10ms )
|
||||
{
|
||||
F_sys_tim_10ms = 0;
|
||||
|
||||
LED_Drv();
|
||||
}
|
||||
|
||||
}
|
||||
|
1231
UsrSrc/vox/vox_module.c
Normal file
1231
UsrSrc/vox/vox_module.c
Normal file
File diff suppressed because it is too large
Load Diff
96
UsrSrc/watchdog/watchdog.c
Normal file
96
UsrSrc/watchdog/watchdog.c
Normal file
@ -0,0 +1,96 @@
|
||||
/*
|
||||
******************************************************************************
|
||||
*
|
||||
* @file watchdog.c
|
||||
* @brief watchdog module
|
||||
* @ic sy8835
|
||||
*
|
||||
* @version 1.0
|
||||
* @date 2024/11/01 15:00:40
|
||||
* @author Alex Xu
|
||||
*
|
||||
* Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||||
* All Rights Reserved
|
||||
*
|
||||
* History:
|
||||
* Revision Date Author Desc
|
||||
* 1.0.0 2024/11/01 Alex build this file
|
||||
******************************************************************************/
|
||||
/*_____ I N C L U D E S ____________________________________________________*/
|
||||
#include "watchdog.h"
|
||||
#if 0
|
||||
/*_____ D E F I N I T I O N S ______________________________________________*/
|
||||
|
||||
|
||||
/******************************************************************************\
|
||||
Macro definitions
|
||||
\******************************************************************************/
|
||||
|
||||
/******************************************************************************\
|
||||
Variables definitions
|
||||
\******************************************************************************/
|
||||
|
||||
|
||||
/******************************************************************************\
|
||||
Functions definitions
|
||||
\******************************************************************************/
|
||||
|
||||
|
||||
/*_____ F U N C T I O N S __________________________________________________*/
|
||||
|
||||
/*
|
||||
*******************************************************************************
|
||||
* void Watchdog_Init(uint8_t watchdog_time)
|
||||
*
|
||||
* Description : watchdog Initialization. WDT_TM = 0,则看门狗时钟为系统时钟的12分频,否则为系统时钟。
|
||||
wdtrel.7=1 则看门狗计数器时钟为Sys_Fre/12*32,wdtrel.7=0 则看门狗计数器时钟为Sys_Fre/12*2.
|
||||
Sys_Fre = 12MHz,wdtrel.7=0时,定时器范围:
|
||||
(1/Sys_Fre)*12*2*256~(1/Sys_Fre)*12*2*256*128 = 5ms~65ms
|
||||
|
||||
Sys_Fre = 12MHz,wdtrel.7=1时,定时器范围:
|
||||
(1/Sys_Fre)*12*32*256~(1/Sys_Fre)*12*32*256*128 = 80ms~1s
|
||||
*
|
||||
* Arguments :
|
||||
|
||||
* Returns :
|
||||
|
||||
* Notes :
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
void Watchdog_Init(uint8_t watchdog_time)
|
||||
{
|
||||
switch(watchdog_time)
|
||||
{
|
||||
case _WDT_TIME_65ms_:
|
||||
WDTREL = 0x00; //WDTPS = 0,wdt_f = wdt_f1/2;WDTPS = 1,wdt_f = wdt_f1/32;
|
||||
break;
|
||||
case _WDT_TIME_1s_:
|
||||
WDTREL = 0x80; //WDTPS = 0,wdt_f = wdt_f1/2;WDTPS = 1,wdt_f = wdt_f1/32;
|
||||
break;
|
||||
}
|
||||
SWDT = 1; //Watchdog Start
|
||||
}
|
||||
|
||||
/*
|
||||
*******************************************************************************
|
||||
* void Watchdog_Clear(void)
|
||||
*
|
||||
* Description : Feed watchdog 在系统初始化时未进行看门狗初始化,则不能在程序中进行喂狗操作!!!
|
||||
*
|
||||
* Arguments :
|
||||
|
||||
* Returns :
|
||||
|
||||
* Notes :
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
|
||||
void Watchdog_Clear(void)
|
||||
{
|
||||
WDT = 1;
|
||||
SWDT = 1;
|
||||
}
|
||||
|
||||
#endif
|
11
sy8835_demo.si4project/sy8835_demo.SearchResults
Normal file
11
sy8835_demo.si4project/sy8835_demo.SearchResults
Normal file
@ -0,0 +1,11 @@
|
||||
---- POWER_CTRL_CMD Matches (14 in 4 files) ----
|
||||
pmu.c (UsrSrc\pmu) line 135 : I2cSfr_Write( POWER_CTRL_CMD, n_PMU_Sys_Cfg->pmu_PWR_Ctrl_Cmd );
|
||||
Set_PMU_Enter_ShipMode in pmu.c (UsrSrc\pmu) : I2cSfr_Write( POWER_CTRL_CMD, POWER_CTRL_CMD_ENTER_SHIPMODE );
|
||||
Set_PMU_En_ReChg in pmu.c (UsrSrc\pmu) : I2cSfr_Write( POWER_CTRL_CMD, POWER_CTRL_CMD_RECHG_ENABLE );
|
||||
Set_PMU_Rst in pmu.c (UsrSrc\pmu) : I2cSfr_Write( POWER_CTRL_CMD, POWER_CTRL_CMD_RST_VDD );
|
||||
pmu.h (UsrInc\pmu) line 31 : #define POWER_CTRL_CMD_RECHG_ENABLE 0x11 //0x11:VIN正常是,写入此命令,IC将重新开启充电循环;
|
||||
pmu.h (UsrInc\pmu) line 33 : #define POWER_CTRL_CMD_RST_CMD 0x17 //0x17:CMD_RST,此命令将复位I2CR<0x20>~<0x4F>、VDD;
|
||||
pmu.h (UsrInc\pmu) line 35 : #define POWER_CTRL_CMD_ENTER_SHIPMODE 0xAA //0xAA:EnterShipmode,当且仅当在standby mode状态下写入此命令,IC进入ShipMode状态,在Charge Mode状态时,写入此命令无效;
|
||||
pmu.h (UsrInc\pmu) line 37 : #define POWER_CTRL_CMD_RST_VDD 0x33 //0x33:RstVDD,在任意状态下关闭VSYS 200ms,然后在重启VDD。
|
||||
reg3315.h (UsrInc\inc) line 53 : #define POWER_CTRL_CMD 0x4F
|
||||
Enter_Sleep in sleep.c (UsrSrc\sleep) : I2cSfr_Write(POWER_CTRL_CMD, POWER_CTRL_CMD_ENTER_SHIPMODE); //Enter ShipMode
|
7
sy8835_demo.si4project/sy8835_demo.bookmarks.xml
Normal file
7
sy8835_demo.si4project/sy8835_demo.bookmarks.xml
Normal file
@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<SourceInsightBookmarks
|
||||
AppVer="4.00.0084"
|
||||
AppVerMinReader="4.00.0009"
|
||||
>
|
||||
<Bookmarks/>
|
||||
</SourceInsightBookmarks>
|
BIN
sy8835_demo.si4project/sy8835_demo.sip_sym
Normal file
BIN
sy8835_demo.si4project/sy8835_demo.sip_sym
Normal file
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user