Compare commits

...

10 Commits

Author SHA1 Message Date
Michael Colton 2c1530d33f Control of the new frequency synth is pretty much working (not completely optimized, probably isn't taking full advantage of its resolution, and doesn't cover its full range yet) the PSDR can now tune from 2.5MHz to 175MHz! Sensitivity isn't great (currently around -90dbm on 7MHz and about -80-85dbm on 146.4MHz. Still pretty cool! 2016-05-07 15:01:37 -06:00
Michael Colton 53263f2416 Merge branch 'PSDR2.5_PCB' 2016-05-01 00:57:05 -06:00
Michael Colton 46dc8ad0af Trying to merge, it wants me to commit stuff first. 2016-05-01 00:56:50 -06:00
Michael Colton 155b2700d4 Oops, didn't actually commit the files. 2016-05-01 00:50:49 -06:00
Michael Colton 8b02d73d1c Didn't actually change much. This is testing with the new diode ring mixer. Seems to be working! Thank goodness!! Reception in 2m seems very weak... might need a preamp or something? 2016-05-01 00:49:43 -06:00
Michael Colton 59e59d7af1 Simple test that the GPS module is indeed talking and the MCU can indeed hear it. It's dropping characters though, and it's polling based and whatnot, so it will need to change fast. Also, so far, in my office, the GPS hasn't gotten a lock. Is the antenna good enough? How about the antenna match? 2016-04-21 20:55:56 -06:00
Michael Colton a211a0b9dd A heroic effort to push things forward. Now working includes the I2C interface and the code to talk to and start up the frequency synth. Flip flops are on, frequencies are being divided. No luck on actually getting a signal all the way through though. I currently suspect the transformers or the mixers..... how high can a quadrature sampling detector go again? :/ 2016-04-21 00:57:58 -06:00
Michael Colton 1890b25a4f PSDR 2.5 prototypes are assembled. This commit includes notes for things I want to change or improve (in the notes section of the schematic) as well as preliminary code changes to make it work on this hardware. Display comes on, lots of the parts are working, but no frequency synth yet, so it's hard to know how well the design is working. 2016-04-18 22:11:10 -06:00
Michael Colton d227015917 PSDR 2.5 PCB Layout is complete! Updated schematics, layout files, gerbers, and some minor changes to the solid models are included. That was brutal! 2016-03-25 09:27:13 -06:00
Michael Colton d784a1b607 Cleaning up the routing, a lot! At this point the goal is to increase performance, reliability, and manufacturability, but there is also an element of making it look good and being a perfectionist. I won't go too much longer. Backing up. 2016-03-20 12:06:36 -06:00
42 changed files with 126955 additions and 12335 deletions

14
.gitignore vendored
View File

@ -5,3 +5,17 @@ Source/BlankF4-2.launch
Source/StereoTurnerOnner.launch
Hardware/~$PSDR.pcb.inf
Hardware/Test Boards/~$MultiTestBoard2.pcb.inf
Hardware/PSDR.eco
Hardware/PSDR.rep
Hardware/PSDR_Layou1.pcb
Hardware/PSDR_Layou2.pcb
Hardware/PSDR_Layou3.pcb
Hardware/PSDR_Layout.pcb
Hardware/PSDR_Logic0.sch
Hardware/PSDR_Logic1.sch
Hardware/PSDR_Logic2.sch
Hardware/PSDR_Logic3.sch
Hardware/PSDR_PCB/3D/3DSettings.xml
Hardware/PSDR_PCB/PSDR_3DViewer.cce
Hardware/STM32F756_Config.ioc
Source/STM32F4 Test.launch

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,681 @@
% M48 INCH,LZ
T1C.014F095S300
X012200Y010400
X011770Y010570
X011870Y014820
X011380Y014990
X010400Y015200
X012750Y019590
X011200Y019900
X010400Y019900
X012760Y020010
X012200Y020200
X010700Y020500
X010400Y020800
X010900Y021350
X010400Y022000
X011900Y022300
X010400Y022500
X012200Y022600
X011040Y022730
X012810Y025570
X011660Y026081
X011000Y026100
X011800Y026600
X010400Y026600
X012800Y026700
X010400Y029300
X011900Y029400
X011400Y029500
X010700Y029800
X011654Y030050
X011650Y033260
X011100Y033300
X010400Y033500
X012100Y033700
X012600Y034200
X011800Y035100
X013500Y035200
X013890Y034940
X013200Y034800
X013430Y034420
X015300Y033220
X014900Y032600
X014600Y031800
X014570Y031190
X014300Y029900
X015210Y027500
X014900Y027100
X013700Y026700
X015310Y026600
X013720Y025440
X015080Y024640
X012920Y024480
X013780Y023390
X014700Y021500
X014150Y021460
X014960Y021100
X014000Y021000
X014500Y020900
X014150Y020480
X014700Y020400
X013500Y019500
X014100Y019400
X013680Y019100
X014600Y018130
X013810Y018000
X013810Y016410
X015190Y015840
X013850Y014960
X012910Y014960
X014720Y014400
X014730Y011110
X012910Y010660
X015150Y010450
X015600Y010400
X017200Y010500
X017610Y014090
X017330Y014420
X016400Y014600
X017410Y014840
X017550Y015340
X015630Y015400
X017600Y016100
X017410Y016600
X016300Y016800
X015500Y017100
X016300Y017400
X017810Y018220
X017730Y018640
X016800Y018700
X017200Y019500
X017500Y020100
X017390Y020560
X017510Y021100
X017600Y021660
X017300Y021950
X017790Y022410
X017320Y022590
X015860Y022600
X017030Y023150
X017060Y023980
X015800Y024000
X017040Y025020
X015580Y025200
X017160Y025800
X017300Y026600
X017040Y027140
X017510Y027400
X017530Y027840
X017060Y028230
X015520Y028550
X017310Y028560
X017600Y028900
X017090Y029030
X017620Y029400
X016640Y029890
X017230Y030610
X015800Y030700
X016500Y030800
X017330Y031150
X016900Y031800
X017800Y032500
X015600Y032700
X017144Y032840
X016550Y033260
X017190Y033400
X017200Y033870
X016980Y034300
X017530Y034300
X020000Y033400
X018920Y033280
X018910Y031750
X019260Y031150
X019240Y030130
X018780Y030050
X018120Y028820
X018650Y028720
X019240Y027400
X020260Y026620
X019500Y026080
X018880Y025750
X019460Y025300
X018970Y024990
X018950Y024000
X019070Y023180
X020150Y023110
X019540Y023100
X018980Y021640
X019540Y021550
X019350Y019700
X019900Y019600
X018800Y019200
X019780Y018150
X018040Y017740
X018870Y017530
X018050Y016390
X018490Y016360
X018820Y016030
X017980Y015700
X019400Y015630
X018770Y014140
X020310Y013600
X018770Y013600
X018300Y012400
X018700Y012400
X018700Y012000
X019500Y011600
X020190Y011570
X020900Y011600
X022600Y011640
X021400Y011900
X020900Y012000
X022400Y012080
X021500Y012500
X020980Y012510
X021330Y012950
X020800Y013700
X022100Y013700
X020400Y014100
X021500Y014200
X021530Y014610
X020940Y015040
X022500Y015400
X022500Y016400
X021200Y017050
X022000Y017400
X021230Y017550
X022610Y017920
X020450Y018090
X022200Y018300
X022890Y018310
X020400Y019600
X020840Y019680
X020820Y020140
X020960Y021520
X021320Y021980
X020800Y022200
X020800Y023000
X022610Y023020
X022050Y023020
X021200Y023300
X021650Y023370
X020700Y023600
X021130Y024000
X021220Y024770
X020800Y025200
X021300Y025770
X020900Y026680
X022780Y027110
X021280Y027430
X020620Y027830
X022110Y028060
X022860Y029550
X020620Y029600
X021400Y029600
X021000Y029760
X020850Y030340
X021330Y030640
X020920Y031120
X021700Y032990
X021640Y033750
X022820Y034100
X021590Y034510
X025340Y034510
X023870Y034100
X023750Y031960
X024900Y031900
X024900Y030590
X023880Y029650
X025360Y029380
X025030Y027250
X023780Y027070
X025140Y026690
X025230Y025110
X024760Y024930
X023810Y023970
X024210Y023960
X025370Y023950
X023600Y023010
X024870Y023000
X023000Y021620
X023440Y021600
X025200Y021540
X025170Y020740
X025310Y020150
X023040Y020050
X023370Y018310
X023880Y018020
X024350Y017990
X023170Y017940
X024650Y017200
X024130Y017020
X023500Y016400
X023500Y015400
X024190Y014930
X024250Y014110
X024200Y013600
X024410Y013100
X023670Y012080
X024200Y011800
X025100Y011610
X023700Y011600
X025900Y013230
X027580Y014120
X026290Y014580
X027690Y015380
X026890Y015420
X026470Y015570
X025710Y015600
X026470Y016140
X027660Y016420
X025600Y017000
X027760Y017510
X026570Y017630
X026090Y017710
X027600Y018000
X025600Y018200
X027400Y018550
X026520Y018670
X027400Y019890
X027310Y020630
X026800Y021200
X027300Y021500
X025530Y022040
X027100Y022100
X026910Y022540
X027410Y023880
X026500Y025600
X025900Y025600
X026200Y025900
X025900Y026200
X026500Y026200
X027220Y026760
X026260Y027090
X027190Y027730
X026760Y027770
X027560Y028230
X026820Y028230
X025890Y028400
X026820Y029280
X025810Y029830
X027480Y029900
X026250Y029910
X025610Y030530
X027200Y031080
X025600Y031800
X025600Y032600
X025500Y033700
X025900Y035200
X028800Y033700
X029170Y031860
X029230Y031350
X029680Y031310
X027910Y030110
X029260Y030020
X028850Y030020
X029470Y029130
X028270Y028490
X028710Y028350
X029880Y028150
X028890Y026940
X029700Y026680
X028770Y026500
X030340Y026180
X029460Y025800
X028800Y025520
X028430Y024670
X029740Y024060
X030210Y023610
X029870Y022240
X028410Y021840
X028400Y021300
X030380Y020850
X029970Y020740
X028380Y020720
X029000Y018280
X028230Y018070
X028750Y016830
X028070Y016280
X028290Y015850
X030230Y015420
X030040Y013610
X030040Y013020
X027960Y012850
X032200Y012570
X032270Y013160
X032100Y013700
X032600Y013700
X032300Y014200
X030730Y014400
X032300Y014600
X032600Y015100
X032100Y015100
X031800Y015500
X030920Y018390
X032030Y018660
X032020Y019060
X030900Y019100
X031450Y019160
X032010Y019480
X031940Y020120
X031490Y020700
X030850Y021210
X031000Y022200
X032400Y022410
X031990Y022410
X031200Y022700
X032498Y023570
X032200Y024300
X030410Y025140
X031760Y025300
X031940Y026050
X030640Y026480
X031900Y026480
X032720Y026910
X032070Y027440
X032600Y027500
X031860Y027840
X032620Y027970
X032400Y028470
X032800Y028540
X031510Y028860
X030700Y029130
X031150Y029180
X031540Y029330
X031430Y030420
X030890Y032620
X032060Y032760
X030410Y033580
X030900Y034100
X031830Y034210
X031670Y034900
X032100Y035200
X033100Y034990
X033100Y032420
X034100Y032410
X035230Y031060
X034550Y030430
X033050Y030400
X035050Y030400
X033950Y029690
X034000Y028010
X033990Y027600
X035040Y027600
X034050Y026510
X035200Y026500
X034100Y026000
X035200Y025900
X034900Y025500
X033810Y025430
X033050Y025350
X033040Y024910
X033960Y024910
X035150Y024400
X032960Y023960
X035150Y023800
X033920Y023580
X034370Y023550
X034590Y022510
X034980Y022420
X035310Y022160
X034900Y021570
X034540Y021370
X033980Y020810
X035160Y019940
X033200Y019200
X034800Y018910
X033820Y018820
X033190Y018660
X033230Y018030
X034400Y017500
X033210Y017010
X034560Y015610
X033000Y015400
X033530Y015300
X034800Y015100
X033630Y013600
X034820Y013580
X034270Y013100
X035320Y012400
X033290Y012030
X037500Y011700
X037100Y013200
X037700Y013200
X037300Y015200
X035750Y015210
X036960Y016220
X035550Y016270
X037410Y016350
X036130Y018760
X036100Y019200
X035420Y020360
X036550Y020620
X037420Y020850
X036950Y021210
X035500Y021500
X037050Y021720
X037590Y022330
X035760Y022510
X037650Y023230
X035660Y023780
X035960Y024340
X036750Y024520
X037840Y024600
X036790Y025010
X036080Y025430
X036780Y025480
X037880Y025570
X036760Y026070
X035440Y027600
X036760Y027600
X036050Y027610
X036310Y028150
X035640Y028370
X036700Y028400
X037100Y028800
X037700Y029000
X037400Y029300
X037800Y029700
X036740Y029750
X036140Y029800
X035790Y030000
X036440Y030150
X035690Y030400
X036670Y032100
X036650Y032890
X036600Y035110
X038500Y035200
X038200Y034500
X038600Y033500
X038720Y033110
X039300Y032600
X038630Y032590
X038900Y032100
X038340Y031690
X039150Y030610
X039200Y029300
X039260Y028690
X039460Y027350
X038310Y027280
X039680Y027010
X038040Y026980
X038600Y026980
X038310Y025650
X038000Y025160
X039200Y024570
X039360Y023360
X039800Y022600
X039820Y021360
X038740Y020300
X038700Y019500
X040100Y019200
X039300Y019100
X038700Y018800
X038590Y018300
X038900Y017900
X038900Y017300
X039500Y017200
X038590Y016800
X039800Y016700
X039200Y016700
X039900Y015900
X039200Y015900
X038590Y015800
X039050Y015400
X038500Y015200
X039600Y014900
X038020Y013660
X039600Y013600
X038400Y013400
X038500Y012600
X039610Y012470
X037970Y012400
X040100Y011100
X040400Y011400
X041490Y013530
X041400Y014300
X042000Y015000
X042600Y015000
X041490Y015250
X042500Y015500
X041900Y015600
X042200Y016120
X041500Y016800
X040400Y016900
X041000Y017390
X041500Y017400
X041500Y018000
X041500Y018600
X040900Y018600
X041500Y019200
X040700Y019300
X042270Y019660
X041770Y020960
X042400Y021000
X041500Y021500
X040900Y021600
X041790Y021960
X040900Y022300
X041800Y022500
X041800Y023200
X041000Y023600
X042200Y023630
X041830Y023860
X041000Y024100
X042530Y026570
X042100Y026800
X041140Y028150
X042570Y029130
X041410Y030270
X042800Y031200
X041300Y032200
X041200Y032700
X041800Y033100
X040700Y033200
X042400Y033300
X041300Y033400
X041800Y033900
X041200Y034200
X042400Y034300
X042400Y035100
X043000Y034700
X043100Y034000
X043100Y033300
X043100Y031800
X043200Y029900
X043510Y024440
X044910Y024380
X044300Y022900
X043700Y022900
X044000Y022600
X043700Y022300
X044300Y022300
X043400Y019600
X044200Y019500
X044200Y019000
X044400Y016600
X044900Y016400
X044500Y016100
X043500Y016100
X044900Y015900
X043100Y015800
X044500Y015500
X043500Y015400
X043100Y015000
X046200Y018700
X045800Y019100
X045910Y020740
X047640Y021370
X045850Y022290
X046300Y022320
X045550Y022650
X047800Y023000
X046500Y023790
X047300Y024400
X047480Y025130
X048800Y024800
X048900Y023100
X048420Y022600
X048900Y022400
X048900Y021700
X048290Y021410
X048800Y021150
X048350Y020910
T2C.03346F197S550
X027700Y011000
X027700Y012400
T3C.037F197S550
X017400Y013500
X017400Y017500
X028900Y017500
X028900Y013500
X032900Y011200
X033900Y011200
X034900Y011200
X035900Y011200
X036900Y011200
T4C.0374F197S550
X010807Y015650
X011693Y015650
X011693Y019311
X010807Y019311
T5C.03937F197S550
X045534Y017956G85X046926Y016564
X044936Y017357G85X046328Y015965
X048318Y017956G85X046926Y019347
X048917Y018554G85X047525Y019946
T6C.04724F139S550
X040315Y020961
X040315Y021961
X040315Y022961
X040315Y023961
X040315Y024961
X040315Y025961
X040315Y026961
X040315Y027961
X040315Y028961
X042096Y032551
X042096Y031551
X042096Y030551
X042096Y029551
X042096Y028551
X042096Y027551
T7C.08F074S550
X034500Y014300
X042100Y014300
T8C.11811F069S658
X030472Y011181
X011181Y028012
X039724Y034409
T9C.11811F069S658
X016299Y010984
X011215Y034376
X039101Y011047
X048189Y023976
T10C.12598F035S794
X015827Y018248
X015827Y031673
X039921Y031673
X039921Y018248
M30

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,184 @@
*
*
G04 PADS 9.5 Build Number: 522968 generated Gerber (RS-274-X) file*
G04 PC Version=2.1*
*
%IN "PSDR.pcb"*%
*
%MOIN*%
*
%FSLAX35Y35*%
*
*
*
*
G04 PC Standard Apertures*
*
*
G04 Thermal Relief Aperture macro.*
%AMTER*
1,1,$1,0,0*
1,0,$1-$2,0,0*
21,0,$3,$4,0,0,45*
21,0,$3,$4,0,0,135*
%
*
*
G04 Annular Aperture macro.*
%AMANN*
1,1,$1,0,0*
1,0,$2,0,0*
%
*
*
G04 Odd Aperture macro.*
%AMODD*
1,1,$1,0,0*
1,0,$1-0.005,0,0*
%
*
*
G04 PC Custom Aperture Macros*
*
*
*
*
*
*
G04 PC Aperture Table*
*
%ADD010C,0.001*%
*
*
*
*
G04 PC Circuitry*
G04 Layer Name PSDR.pcb - circuitry*
%LPD*%
*
*
G04 PC Custom Flashes*
G04 Layer Name PSDR.pcb - flashes*
%LPD*%
*
*
G04 PC Circuitry*
G04 Layer Name PSDR.pcb - circuitry*
%LPD*%
*
G54D10*
G01X100000Y331000D02*
Y338300D01*
X117597Y355900D02*
G75*
G03X100000Y338303I124J-17721D01*
G01X117600Y355900D02*
X424800D01*
X436600Y344105D02*
G03X424805Y355900I-11754J41D01*
G01X436600Y344100D02*
Y263400D01*
Y263401D02*
G03X440601Y259400I4044J43D01*
G01X440600D02*
X481900D01*
X493700Y247601D02*
G03X481901Y259400I-11717J82D01*
G01X493700Y247600D02*
Y205800D01*
X488497Y193297D02*
G03X493700Y205796I-12265J12438D01*
G01X488500Y193300D02*
X485200Y190000D01*
X474100Y201100*
X474098Y201102D02*
G03X468497Y201097I-2798J-2664D01*
G01X468500Y201100D02*
X467400Y200000D01*
G03Y194800I2950J-2600*
G01X478700Y183500*
X465300Y170100*
X454100Y181300*
X454101Y181299D02*
G03X448699I-2701J-2758D01*
G01X448700Y181300D02*
X447700Y180300D01*
G03Y174700I2723J-2800*
G01X458800Y163600*
X400400Y105200*
X388095Y100000D02*
G03X400396Y105196I-91J17375D01*
G01X388100Y100000D02*
X117800D01*
X100301Y114896D02*
G03X117804Y100000I17349J2655D01*
G01X100300Y114900D02*
X129400D01*
Y113300*
Y113301D02*
G03X134400I2500J26D01*
G01Y113300D02*
Y114900D01*
X147300*
X147299D02*
G03X151200Y118801I14J3887D01*
G01Y118800D02*
Y136200D01*
Y136198D02*
G03X147205Y140200I-3926J76D01*
G01X147200D02*
X134400D01*
Y141700*
G03X129400I-2500J70*
G01Y140200*
X100000*
Y155100*
X100003Y155101D02*
G03X103200Y159000I-822J3934D01*
G01Y161200*
X111000*
X111001D02*
G03X113000Y163202I35J1964D01*
G01Y163200D02*
Y167700D01*
Y167701D02*
G03X110998Y169700I-1964J35D01*
G01X111000D02*
X103200D01*
Y179900*
X111000*
X111001D02*
G03X113000Y181902I14J1985D01*
G01Y181900D02*
Y186400D01*
Y186401D02*
G03X110998Y188400I-1964J35D01*
G01X111000D02*
X103200D01*
Y190700*
Y190701D02*
G03X100001Y194500I-4022J-140D01*
G01X100000D02*
Y229200D01*
X103700*
X103703D02*
G03X107700Y233204I-28J4025D01*
G01Y233200D02*
Y254200D01*
Y254197D02*
G03X103704Y258200I-4010J-7D01*
G01X103700D02*
X100000D01*
Y302000*
X103800*
X103798D02*
G03X107700Y305895I-156J4058D01*
G01Y305900D02*
Y327000D01*
Y327001D02*
G03X103701Y331000I-3944J55D01*
G01X103700D02*
X100000D01*
G74*
X0Y0D02*
M02*

Binary file not shown.

After

Width:  |  Height:  |  Size: 457 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 851 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 433 KiB

Binary file not shown.

Binary file not shown.

BIN
Hardware/PSDR2.5_BOM.ods Normal file

Binary file not shown.

BIN
Hardware/PSDR2.5_BOM.xls Normal file

Binary file not shown.

View File

@ -1,5 +1,5 @@
#MicroXplorer Configuration settings - do not modify
File.Version=5
File.Version=6
KeepUserPlacement=false
Mcu.Family=STM32F4
Mcu.IP0=DAC
@ -49,22 +49,29 @@ Mcu.Pin33=PB5
Mcu.Pin34=PB6
Mcu.Pin35=PB7
Mcu.Pin36=VP_ADC1_TempSens_Input
Mcu.Pin37=VP_TIM1_VS_ControllerModeGated
Mcu.Pin38=VP_TIM1_VS_ClockSourceINT
Mcu.Pin39=VP_TIM4_VS_ClockSourceINT
Mcu.Pin37=VP_SYS_VS_Systick
Mcu.Pin38=VP_TIM1_VS_ControllerModeGated
Mcu.Pin39=VP_TIM1_VS_ClockSourceINT
Mcu.Pin4=PA1
Mcu.Pin40=VP_TIM4_VS_ClockSourceINT
Mcu.Pin5=PA4
Mcu.Pin6=PA5
Mcu.Pin7=PE7
Mcu.Pin8=PE9
Mcu.Pin9=PB10
Mcu.PinsNb=40
Mcu.PinsNb=41
Mcu.UserConstants=
Mcu.UserName=STM32F429VITx
MxCube.Version=4.12.0
MxDb.Version=DB.4.0.120
MxCube.Version=4.14.0
MxDb.Version=DB.4.0.140
NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:false
NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:false
NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:false
NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:false
NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:false
NVIC.PriorityGroup=NVIC_PRIORITYGROUP_0
NVIC.SysTick_IRQn=true\:0\:0\:false
NVIC.SysTick_IRQn=true\:0\:0\:false\:false\:true
NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:false
PA1.GPIOParameters=GPIO_Label
PA1.GPIO_Label=BOOT1
PA1.Locked=true
@ -79,7 +86,7 @@ PA13.Mode=Serial-Wire
PA13.Signal=SYS_JTMS-SWDIO
PA14.Mode=Serial-Wire
PA14.Signal=SYS_JTCK-SWCLK
PA15.Mode=NSS_Signal_Hard
PA15.Mode=NSS_Signal_Hard_Input
PA15.Signal=SPI1_NSS
PA4.Signal=COMP_DAC1_group
PA5.Signal=COMP_DAC2_group
@ -89,7 +96,7 @@ PB10.Mode=I2C
PB10.Signal=I2C2_SCL
PB11.Mode=I2C
PB11.Signal=I2C2_SDA
PB12.Mode=NSS_Signal_Hard
PB12.Mode=NSS_Signal_Hard_Input
PB12.Signal=SPI2_NSS
PB13.Mode=Full_Duplex_Master
PB13.Signal=SPI2_SCK
@ -145,7 +152,7 @@ PCC.Battery.SelfDischarge=10.0
PCC.Checker=false
PCC.Line=STM32F429/439
PCC.MCU=STM32F429V(E-G-I)Tx
PCC.MXVersion=4.12.0
PCC.MXVersion=4.14.0
PCC.PartNumber=STM32F429VITx
PCC.Seq0=0
PCC.Series=STM32F4
@ -180,7 +187,7 @@ RCC.EthernetFreq_Value=168000000
RCC.FCLKCortexFreq_Value=168000000
RCC.FamilyName=M
RCC.HCLKFreq_Value=168000000
RCC.HSE_VALUE=8000000
RCC.HSE_VALUE=26000000
RCC.HSI_VALUE=16000000
RCC.I2SClocksFreq_Value=96000000
RCC.IPParameters=LSI_VALUE,FamilyName,APB1CLKDivider,HSE_VALUE,HSI_VALUE,RTCHSEDivFreq_Value,VCOInputFreq_Value,VCOSAIOutputFreq_Value,VCOSAIOutputFreq_ValueR,LCDTFTFreq_Value,VCOSAIOutputFreq_ValueQ,VCOOutputFreq_Value,PLLCLKFreq_Value,PLLQCLKFreq_Value,VCOI2SOutputFreq_Value,VcooutputI2S,I2SClocksFreq_Value,VcooutputI2SQ,SYSCLKFreq_VALUE,AHBFreq_Value,HCLKFreq_Value,CortexFreq_Value,FCLKCortexFreq_Value,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,EthernetFreq_Value,MCO2PinFreq_Value,RTCFreq_Value,SAI_AClocksFreq_Value,SAI_BClocksFreq_Value,48MHZClocksFreq_Value,APB2CLKDivider,PLLM,PLLN,SYSCLKSource,PLLQ
@ -188,12 +195,12 @@ RCC.LCDTFTFreq_Value=12250000
RCC.LSI_VALUE=32000
RCC.MCO2PinFreq_Value=168000000
RCC.PLLCLKFreq_Value=168000000
RCC.PLLM=8
RCC.PLLM=26
RCC.PLLN=336
RCC.PLLQ=7
RCC.PLLQCLKFreq_Value=48000000
RCC.RTCFreq_Value=32000
RCC.RTCHSEDivFreq_Value=4000000
RCC.RTCHSEDivFreq_Value=13000000
RCC.SAI_AClocksFreq_Value=12250000
RCC.SAI_BClocksFreq_Value=12250000
RCC.SYSCLKFreq_VALUE=168000000
@ -219,15 +226,19 @@ SH.S_TIM1_ETR.0=TIM1_ETR,TriggerSource_ETR
SH.S_TIM1_ETR.ConfNb=1
SH.S_TIM4_CH1.0=TIM4_CH1,Output Compare1 CH1
SH.S_TIM4_CH1.ConfNb=1
SPI1.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_2
SPI1.CalculateBaudRate=42.0 MBits/s
SPI1.IPParameters=Mode,CalculateBaudRate,VirtualNSS
SPI1.IPParameters=Mode,CalculateBaudRate,VirtualNSS,BaudRatePrescaler
SPI1.Mode=SPI_MODE_MASTER
SPI1.VirtualNSS=VM_NSSHARD
SPI2.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_2
SPI2.CalculateBaudRate=21.0 MBits/s
SPI2.IPParameters=Mode,CalculateBaudRate,VirtualNSS
SPI2.IPParameters=Mode,CalculateBaudRate,VirtualNSS,BaudRatePrescaler
SPI2.Mode=SPI_MODE_MASTER
SPI2.VirtualNSS=VM_NSSHARD
VP_ADC1_TempSens_Input.Signal=ADC1_TempSens_Input
VP_SYS_VS_Systick.Mode=SysTick
VP_SYS_VS_Systick.Signal=SYS_VS_Systick
VP_TIM1_VS_ClockSourceINT.Mode=Internal
VP_TIM1_VS_ClockSourceINT.Signal=TIM1_VS_ClockSourceINT
VP_TIM1_VS_ControllerModeGated.Mode=Gated Mode

View File

@ -0,0 +1,371 @@
#MicroXplorer Configuration settings - do not modify
ADC1.Channel-0\#ChannelRegularConversion=ADC_CHANNEL_10
ADC1.IPParameters=Rank-0\#ChannelRegularConversion,Channel-0\#ChannelRegularConversion,SamplingTime-0\#ChannelRegularConversion,NbrOfConversionFlag,master
ADC1.NbrOfConversionFlag=1
ADC1.Rank-0\#ChannelRegularConversion=1
ADC1.SamplingTime-0\#ChannelRegularConversion=ADC_SAMPLETIME_3CYCLES
ADC1.master=1
ADC2.Channel-0\#ChannelRegularConversion=ADC_CHANNEL_15
ADC2.IPParameters=Rank-0\#ChannelRegularConversion,Channel-0\#ChannelRegularConversion,SamplingTime-0\#ChannelRegularConversion,NbrOfConversionFlag
ADC2.NbrOfConversionFlag=1
ADC2.Rank-0\#ChannelRegularConversion=1
ADC2.SamplingTime-0\#ChannelRegularConversion=ADC_SAMPLETIME_3CYCLES
ADC3.Channel-0\#ChannelRegularConversion=ADC_CHANNEL_10
ADC3.IPParameters=Rank-0\#ChannelRegularConversion,Channel-0\#ChannelRegularConversion,SamplingTime-0\#ChannelRegularConversion,NbrOfConversionFlag
ADC3.NbrOfConversionFlag=1
ADC3.Rank-0\#ChannelRegularConversion=1
ADC3.SamplingTime-0\#ChannelRegularConversion=ADC_SAMPLETIME_3CYCLES
File.Version=6
KeepUserPlacement=false
Mcu.Family=STM32F7
Mcu.IP0=ADC1
Mcu.IP1=ADC2
Mcu.IP10=TIM1
Mcu.IP11=USB_OTG_FS
Mcu.IP2=ADC3
Mcu.IP3=CORTEX_M7
Mcu.IP4=DAC
Mcu.IP5=I2C2
Mcu.IP6=NVIC
Mcu.IP7=RCC
Mcu.IP8=SPI2
Mcu.IP9=SYS
Mcu.IPNb=12
Mcu.Name=STM32F756VGTx
Mcu.Package=LQFP100
Mcu.Pin0=PE2
Mcu.Pin1=PE3
Mcu.Pin10=PC1
Mcu.Pin11=PC2
Mcu.Pin12=PC3
Mcu.Pin13=PA0/WKUP
Mcu.Pin14=PA1
Mcu.Pin15=PA2
Mcu.Pin16=PA3
Mcu.Pin17=PA4
Mcu.Pin18=PA5
Mcu.Pin19=PA6
Mcu.Pin2=PE4
Mcu.Pin20=PA7
Mcu.Pin21=PC4
Mcu.Pin22=PC5
Mcu.Pin23=PB0
Mcu.Pin24=PB1
Mcu.Pin25=PB2
Mcu.Pin26=PE7
Mcu.Pin27=PE8
Mcu.Pin28=PE9
Mcu.Pin29=PE10
Mcu.Pin3=PE6
Mcu.Pin30=PE11
Mcu.Pin31=PE12
Mcu.Pin32=PE13
Mcu.Pin33=PE14
Mcu.Pin34=PE15
Mcu.Pin35=PB10
Mcu.Pin36=PB11
Mcu.Pin37=PB12
Mcu.Pin38=PB13
Mcu.Pin39=PB14
Mcu.Pin4=PC13
Mcu.Pin40=PB15
Mcu.Pin41=PD8
Mcu.Pin42=PA10
Mcu.Pin43=PA11
Mcu.Pin44=PA12
Mcu.Pin45=PA13
Mcu.Pin46=PA14
Mcu.Pin47=PB3
Mcu.Pin48=VP_SYS_VS_Systick
Mcu.Pin49=VP_TIM1_VS_ControllerModeClock
Mcu.Pin5=PC14/OSC32_IN
Mcu.Pin6=PC15/OSC32_OUT
Mcu.Pin7=PH0/OSC_IN
Mcu.Pin8=PH1/OSC_OUT
Mcu.Pin9=PC0
Mcu.PinsNb=50
Mcu.UserConstants=
Mcu.UserName=STM32F756VGTx
MxCube.Version=4.14.0
MxDb.Version=DB.4.0.140
NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true
NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true
NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true
NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true
NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true
NVIC.PriorityGroup=NVIC_PRIORITYGROUP_4
NVIC.SysTick_IRQn=true\:0\:0\:false\:false\:true
NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true
PA0/WKUP.GPIOParameters=GPIO_Label
PA0/WKUP.GPIO_Label=AMP_SWITCH_A
PA0/WKUP.Locked=true
PA0/WKUP.Signal=GPIO_Output
PA1.GPIOParameters=GPIO_Label
PA1.GPIO_Label=BOOT1
PA1.Locked=true
PA1.Signal=GPIO_Input
PA10.Mode=OTG/Dual_Role_Device
PA10.Signal=USB_OTG_FS_ID
PA11.Mode=OTG/Dual_Role_Device
PA11.Signal=USB_OTG_FS_DM
PA12.Mode=OTG/Dual_Role_Device
PA12.Signal=USB_OTG_FS_DP
PA13.Mode=Trace-Asynchronous_SW
PA13.Signal=SYS_JTMS-SWDIO
PA14.Mode=Trace-Asynchronous_SW
PA14.Signal=SYS_JTCK-SWCLK
PA2.GPIOParameters=GPIO_Label
PA2.GPIO_Label=RX-Q_FILTERED
PA2.Locked=true
PA2.Signal=ADCx_IN2
PA3.GPIOParameters=GPIO_Label
PA3.GPIO_Label=RX-I_FILTERED
PA3.Locked=true
PA3.Signal=ADCx_IN3
PA4.GPIOParameters=GPIO_Label
PA4.GPIO_Label=DAC1
PA4.Locked=true
PA4.Signal=COMP_DAC1_group
PA5.GPIOParameters=GPIO_Label
PA5.GPIO_Label=DAC2
PA5.Locked=true
PA5.Signal=COMP_DAC2_group
PA6.Locked=true
PA6.Signal=GPIO_Output
PA7.GPIOParameters=GPIO_Label
PA7.GPIO_Label=IMP_BRIDGE_SWITCH_B
PA7.Locked=true
PA7.Signal=GPIO_Output
PB0.GPIOParameters=GPIO_Label
PB0.GPIO_Label=MAGNITUDE
PB0.Locked=true
PB0.Signal=ADCx_IN8
PB1.GPIOParameters=GPIO_Label
PB1.GPIO_Label=MIC_FILTERED
PB1.Locked=true
PB1.Signal=ADCx_IN9
PB10.Locked=true
PB10.Mode=I2C
PB10.Signal=I2C2_SCL
PB11.Locked=true
PB11.Mode=I2C
PB11.Signal=I2C2_SDA
PB12.GPIOParameters=GPIO_Label
PB12.GPIO_Label=FILTER_CS
PB12.Locked=true
PB12.Mode=NSS_Signal_Hard_Output
PB12.Signal=SPI2_NSS
PB13.GPIOParameters=GPIO_Label
PB13.GPIO_Label=FILTER/GAIN_POT_CLK
PB13.Locked=true
PB13.Mode=Full_Duplex_Master
PB13.Signal=SPI2_SCK
PB14.GPIOParameters=GPIO_Label
PB14.GPIO_Label=FILTER_MISO
PB14.Locked=true
PB14.Mode=Full_Duplex_Master
PB14.Signal=SPI2_MISO
PB15.GPIOParameters=GPIO_Label
PB15.GPIO_Label=FILTER/GAIN_POT_MOSI
PB15.Locked=true
PB15.Mode=Full_Duplex_Master
PB15.Signal=SPI2_MOSI
PB2.GPIOParameters=GPIO_Label
PB2.GPIO_Label=TX_RF_SWITCH_A
PB2.Locked=true
PB2.Signal=GPIO_Output
PB3.Mode=Trace-Asynchronous_SW
PB3.Signal=SYS_JTDO-SWO
PC0.Locked=true
PC0.Signal=ADCx_IN10
PC1.GPIOParameters=GPIO_Label
PC1.GPIO_Label=IMP_BRIDGE_SWITCH_A
PC1.Locked=true
PC1.Signal=GPIO_Output
PC13.GPIOParameters=GPIO_Label
PC13.GPIO_Label=LCD_LED
PC13.Locked=true
PC13.Signal=GPIO_Output
PC14/OSC32_IN.Locked=true
PC14/OSC32_IN.Mode=LSE-External-Oscillator
PC14/OSC32_IN.Signal=RCC_OSC32_IN
PC15/OSC32_OUT.Locked=true
PC15/OSC32_OUT.Mode=LSE-External-Oscillator
PC15/OSC32_OUT.Signal=RCC_OSC32_OUT
PC2.GPIOParameters=GPIO_Label
PC2.GPIO_Label=INAMP_ENABLE
PC2.Locked=true
PC2.Signal=GPIO_Output
PC3.GPIOParameters=GPIO_Label
PC3.GPIO_Label=TRX_SWITCH
PC3.Locked=true
PC3.Signal=GPIO_Output
PC4.GPIOParameters=GPIO_Label
PC4.GPIO_Label=HALF_VCC
PC4.Locked=true
PC4.Signal=ADCx_IN14
PC5.GPIOParameters=GPIO_Label
PC5.GPIO_Label=PHASE
PC5.Locked=true
PC5.Signal=ADCx_IN15
PCC.Checker=false
PCC.Line=STM32F7x6
PCC.MCU=STM32F756VGTx
PCC.MXVersion=4.14.0
PCC.PartNumber=STM32F756VGTx
PCC.Seq0=0
PCC.Series=STM32F7
PCC.Temperature=25
PCC.Vdd=3.3
PD8.GPIOParameters=GPIO_Label
PD8.GPIO_Label=FILTER_S1
PD8.Locked=true
PD8.Signal=GPIO_Output
PE10.GPIOParameters=GPIO_Label
PE10.GPIO_Label=FILTER_S0
PE10.Locked=true
PE10.Signal=GPIO_Output
PE11.GPIOParameters=GPIO_Label
PE11.GPIO_Label=LPF_POWER
PE11.Locked=true
PE11.Signal=GPIO_Output
PE12.GPIOParameters=GPIO_Label
PE12.GPIO_Label=LED_WHITE
PE12.Locked=true
PE12.Signal=GPIO_Output
PE13.GPIOParameters=GPIO_Label
PE13.GPIO_Label=LED_RED
PE13.Locked=true
PE13.Signal=GPIO_Output
PE14.GPIOParameters=GPIO_Label
PE14.GPIO_Label=AUDIO_AMP_SHDN
PE14.Locked=true
PE14.Signal=GPIO_Output
PE15.GPIOParameters=GPIO_Label
PE15.GPIO_Label=GPS_RESET
PE15.Locked=true
PE15.Signal=GPIO_Output
PE2.GPIOParameters=GPIO_Label
PE2.GPIO_Label=5V_REG_ENABLE
PE2.Locked=true
PE2.Signal=GPIO_Output
PE3.GPIOParameters=GPIO_Label
PE3.GPIO_Label=AMP_POWER
PE3.Locked=true
PE3.Signal=GPIO_Output
PE4.GPIOParameters=GPIO_Label
PE4.GPIO_Label=DAC_MUX
PE4.Locked=true
PE4.Signal=GPIO_Output
PE6.GPIOParameters=GPIO_Label
PE6.GPIO_Label=AMP_SWITCH_B
PE6.Locked=true
PE6.Signal=GPIO_Output
PE7.GPIOParameters=GPIO_Label
PE7.GPIO_Label=GPS_PPS
PE7.Locked=true
PE7.Signal=S_TIM1_ETR
PE8.GPIOParameters=GPIO_Label
PE8.GPIO_Label=FLIP_FLOP_POWER
PE8.Locked=true
PE8.Signal=GPIO_Output
PE9.GPIOParameters=GPIO_Label
PE9.GPIO_Label=F_SYNTH_CAL
PE9.Locked=true
PE9.Signal=S_TIM1_CH1
PH0/OSC_IN.Locked=true
PH0/OSC_IN.Mode=HSE-External-Oscillator
PH0/OSC_IN.Signal=RCC_OSC_IN
PH1/OSC_OUT.Locked=true
PH1/OSC_OUT.Mode=HSE-External-Oscillator
PH1/OSC_OUT.Signal=RCC_OSC_OUT
RCC.AHBFreq_Value=216000000
RCC.APB1CLKDivider=RCC_HCLK_DIV4
RCC.APB1Freq_Value=54000000
RCC.APB1TimFreq_Value=108000000
RCC.APB2CLKDivider=RCC_HCLK_DIV2
RCC.APB2Freq_Value=108000000
RCC.APB2TimFreq_Value=216000000
RCC.CECFreq_Value=32786.88524590164
RCC.CortexFreq_Value=216000000
RCC.EthernetFreq_Value=216000000
RCC.FCLKCortexFreq_Value=216000000
RCC.FamilyName=M
RCC.HCLKFreq_Value=216000000
RCC.HSE_VALUE=26000000
RCC.HSI_VALUE=16000000
RCC.I2C1Freq_Value=54000000
RCC.I2C2Freq_Value=54000000
RCC.I2C3Freq_Value=54000000
RCC.I2C4Freq_Value=54000000
RCC.I2SFreq_Value=192000000
RCC.IPParameters=FamilyName,HSI_VALUE,CECFreq_Value,HSE_VALUE,SDMMCFreq_Value,LSI_VALUE,VCOInputFreq_Value,VCOOutputFreq_Value,PLLCLKFreq_Value,PLLQCLKFreq_Value,RNGFreq_Value,USBFreq_Value,VCOSAIOutputFreq_Value,PLLSAIPCLKFreq_Value,PLLSAIoutputFreq_Value,PLLSAIQCLKFreq_Value,SAI1Freq_Value,SAI2Freq_Value,PLLSAIRCLKFreq_Value,LCDTFToutputFreq_Value,VCOI2SOutputFreq_Value,PLLI2SPCLKFreq_Value,SPDIFRXFreq_Value,PLLI2SQCLKFreq_Value,PLLI2SRCLKFreq_Value,I2SFreq_Value,PLLQoutputFreq_Value,PLLI2SRoutputFreq_Value,SYSCLKSource,EthernetFreq_Value,HCLKFreq_Value,AHBFreq_Value,CortexFreq_Value,FCLKCortexFreq_Value,APB1Freq_Value,APB1TimFreq_Value,I2C3Freq_Value,I2C4Freq_Value,USART2Freq_Value,LPTIM1Freq_Value,UART8Freq_Value,USART3Freq_Value,I2C2Freq_Value,UART5Freq_Value,I2C1Freq_Value,UART4Freq_Value,UART7Freq_Value,APB2Freq_Value,APB2TimFreq_Value,USART6Freq_Value,USART1Freq_Value,SYSCLKFreq_VALUE,MCO2PinFreq_Value,APB2CLKDivider,APB1CLKDivider,PLLM,PLLN,PLLQ
RCC.LCDTFToutputFreq_Value=96000000
RCC.LPTIM1Freq_Value=54000000
RCC.LSI_VALUE=32000
RCC.MCO2PinFreq_Value=216000000
RCC.PLLCLKFreq_Value=216000000
RCC.PLLI2SPCLKFreq_Value=192000000
RCC.PLLI2SQCLKFreq_Value=192000000
RCC.PLLI2SRCLKFreq_Value=192000000
RCC.PLLI2SRoutputFreq_Value=192000000
RCC.PLLM=13
RCC.PLLN=216
RCC.PLLQ=9
RCC.PLLQCLKFreq_Value=48000000
RCC.PLLQoutputFreq_Value=48000000
RCC.PLLSAIPCLKFreq_Value=192000000
RCC.PLLSAIQCLKFreq_Value=192000000
RCC.PLLSAIRCLKFreq_Value=192000000
RCC.PLLSAIoutputFreq_Value=192000000
RCC.RNGFreq_Value=48000000
RCC.SAI1Freq_Value=192000000
RCC.SAI2Freq_Value=192000000
RCC.SDMMCFreq_Value=216000000
RCC.SPDIFRXFreq_Value=192000000
RCC.SYSCLKFreq_VALUE=216000000
RCC.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK
RCC.UART4Freq_Value=54000000
RCC.UART5Freq_Value=54000000
RCC.UART7Freq_Value=54000000
RCC.UART8Freq_Value=54000000
RCC.USART1Freq_Value=108000000
RCC.USART2Freq_Value=54000000
RCC.USART3Freq_Value=54000000
RCC.USART6Freq_Value=108000000
RCC.USBFreq_Value=48000000
RCC.VCOI2SOutputFreq_Value=384000000
RCC.VCOInputFreq_Value=2000000
RCC.VCOOutputFreq_Value=432000000
RCC.VCOSAIOutputFreq_Value=384000000
SH.ADCx_IN10.0=ADC3_IN10,IN10
SH.ADCx_IN10.1=ADC1_IN10,IN10
SH.ADCx_IN10.ConfNb=2
SH.ADCx_IN14.0=ADC1_IN14,IN14
SH.ADCx_IN14.ConfNb=1
SH.ADCx_IN15.0=ADC2_IN15,IN15
SH.ADCx_IN15.ConfNb=1
SH.ADCx_IN2.0=ADC3_IN2,IN2
SH.ADCx_IN2.ConfNb=1
SH.ADCx_IN3.0=ADC2_IN3,IN3
SH.ADCx_IN3.ConfNb=1
SH.ADCx_IN8.0=ADC1_IN8,IN8
SH.ADCx_IN8.ConfNb=1
SH.ADCx_IN9.0=ADC1_IN9,IN9
SH.ADCx_IN9.ConfNb=1
SH.COMP_DAC1_group.0=DAC_OUT1,DAC_OUT1
SH.COMP_DAC1_group.ConfNb=1
SH.COMP_DAC2_group.0=DAC_OUT2,DAC_OUT2
SH.COMP_DAC2_group.ConfNb=1
SH.S_TIM1_CH1.0=TIM1_CH1,Input_Capture1_from_TI1
SH.S_TIM1_CH1.ConfNb=1
SH.S_TIM1_ETR.0=TIM1_ETR,TriggerSource_ETR
SH.S_TIM1_ETR.ConfNb=1
SPI2.CalculateBaudRate=27.0 MBits/s
SPI2.IPParameters=Mode,CalculateBaudRate,VirtualNSS
SPI2.Mode=SPI_MODE_MASTER
SPI2.VirtualNSS=VM_NSSHARD
VP_SYS_VS_Systick.Mode=SysTick
VP_SYS_VS_Systick.Signal=SYS_VS_Systick
VP_TIM1_VS_ControllerModeClock.Mode=Clock Mode
VP_TIM1_VS_ControllerModeClock.Signal=TIM1_VS_ControllerModeClock

View File

@ -59,7 +59,6 @@
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor.1630883481" name="Use preprocessor" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor" value="true" valueType="boolean"/>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.include.paths.1649056935" name="Include paths (-I)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.include.paths" valueType="includePath">
<listOptionValue builtIn="false" value="&quot;../include&quot;"/>
<listOptionValue builtIn="false" value="&quot;D:\stm32-discovery-projects\CMSIS-SP-00300-r3p1-00rel0\Device\ARM\ARMCM4\Include&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/DSP_Lib}&quot;"/>
<listOptionValue builtIn="false" value="&quot;../system/include&quot;"/>
<listOptionValue builtIn="false" value="&quot;../system/include/cmsis&quot;"/>
@ -69,7 +68,7 @@
<listOptionValue builtIn="false" value="DEBUG"/>
<listOptionValue builtIn="false" value="TRACE&#10;"/>
<listOptionValue builtIn="false" value="OS_USE_TRACE_SEMIHOSTING_DEBUG"/>
<listOptionValue builtIn="false" value="HSE_VALUE=24000000"/>
<listOptionValue builtIn="false" value="HSE_VALUE=26000000"/>
<listOptionValue builtIn="false" value="STM32F429xx"/>
<listOptionValue builtIn="false" value="__FPU_PRESENT"/>
<listOptionValue builtIn="false" value="ARM_MATH_CM4"/>
@ -92,7 +91,7 @@
<listOptionValue builtIn="false" value="__FPU_PRESENT"/>
<listOptionValue builtIn="false" value="TRACE&#10;"/>
<listOptionValue builtIn="false" value="OS_USE_TRACE_SEMIHOSTING_DEBUG"/>
<listOptionValue builtIn="false" value="HSE_VALUE=24000000"/>
<listOptionValue builtIn="false" value="HSE_VALUE=26000000"/>
<listOptionValue builtIn="false" value="STM32F429xx"/>
<listOptionValue builtIn="false" value="DEBUG"/>
<listOptionValue builtIn="false" value="USE_FULL_ASSERT"/>
@ -122,7 +121,7 @@
<listOptionValue builtIn="false" value="DEBUG"/>
<listOptionValue builtIn="false" value="OS_USE_TRACE_SEMIHOSTING_DEBUG"/>
<listOptionValue builtIn="false" value="TRACE&#10;"/>
<listOptionValue builtIn="false" value="HSE_VALUE=24000000"/>
<listOptionValue builtIn="false" value="HSE_VALUE=26000000"/>
<listOptionValue builtIn="false" value="STM32F429xx"/>
<listOptionValue builtIn="false" value="__FPU_PRESENT"/>
<listOptionValue builtIn="false" value="USE_FULL_ASSERT"/>
@ -794,12 +793,26 @@
<entry excluding="Source/TransformFunctions/arm_cfft_radix2_q31.c|Source/TransformFunctions/arm_cfft_radix2_q15.c|Source/TransformFunctions/arm_cfft_radix2_init_q31.c|Source/TransformFunctions/arm_cfft_radix2_init_q15.c|Source/TransformFunctions/arm_cfft_radix2_init_f32.c|Source/TransformFunctions/arm_cfft_radix2_f32.c|Source/FilteringFunctions|Source/ControllerFunctions|Source/MatrixFunctions|Source/StatisticsFunctions|Source/SupportFunctions" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="DSP_Lib"/>
<entry excluding="uart.h|ILI9341_t3.h" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="include"/>
<entry excluding="uart.c|ILI9341_t3.c" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="src"/>
<entry excluding="include/cmsis/stm32f439xx.h|include/cmsis/stm32f437xx.h|include/cmsis/stm32f427xx.h|include/cmsis/stm32f417xx.h|include/cmsis/stm32f415xx.h|include/cmsis/stm32f407xx.h|include/cmsis/stm32f405xx.h|include/cmsis/stm32f401xe.h|include/cmsis/stm32f401xc.h|src/stm32f4-hal/stm32f4xx_hal_adc_ex.c|src/stm32f4-hal/stm32f4xx_hal_can.c|src/stm32f4-hal/stm32f4xx_hal_crc.c|src/stm32f4-hal/stm32f4xx_hal_cryp.c|src/stm32f4-hal/stm32f4xx_hal_cryp_ex.c|src/stm32f4-hal/stm32f4xx_hal_dac_ex.c|src/stm32f4-hal/stm32f4xx_hal_dcmi.c|src/stm32f4-hal/stm32f4xx_hal_dma2d.c|src/stm32f4-hal/stm32f4xx_hal_dma_ex.c|src/stm32f4-hal/stm32f4xx_hal_eth.c|src/stm32f4-hal/stm32f4xx_hal_hash.c|src/stm32f4-hal/stm32f4xx_hal_hash_ex.c|src/stm32f4-hal/stm32f4xx_hal_hcd.c|src/stm32f4-hal/stm32f4xx_hal_i2c.c|src/stm32f4-hal/stm32f4xx_hal_i2c_ex.c|src/stm32f4-hal/stm32f4xx_hal_i2s.c|src/stm32f4-hal/stm32f4xx_hal_i2s_ex.c|src/stm32f4-hal/stm32f4xx_hal_irda.c|src/stm32f4-hal/stm32f4xx_hal_ltdc.c|src/stm32f4-hal/stm32f4xx_hal_msp_template.c|src/stm32f4-hal/stm32f4xx_hal_nand.c|src/stm32f4-hal/stm32f4xx_hal_nor.c|src/stm32f4-hal/stm32f4xx_hal_pccard.c|src/stm32f4-hal/stm32f4xx_hal_pcd.c|src/stm32f4-hal/stm32f4xx_hal_rng.c|src/stm32f4-hal/stm32f4xx_hal_rtc_ex.c|src/stm32f4-hal/stm32f4xx_hal_sai.c|src/stm32f4-hal/stm32f4xx_hal_sd.c|src/stm32f4-hal/stm32f4xx_hal_sdram.c|src/stm32f4-hal/stm32f4xx_hal_smartcard.c|src/stm32f4-hal/stm32f4xx_hal_sram.c|src/stm32f4-hal/stm32f4xx_hal_wwdg.c|src/stm32f4-hal/stm32f4xx_ll_fmc.c|src/stm32f4-hal/stm32f4xx_ll_fsmc.c|src/stm32f4-hal/stm32f4xx_ll_sdmmc.c|src/stm32f4-hal/stm32f4xx_ll_usb.c" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="system"/>
<entry excluding="include/cmsis/stm32f439xx.h|include/cmsis/stm32f437xx.h|include/cmsis/stm32f427xx.h|include/cmsis/stm32f417xx.h|include/cmsis/stm32f415xx.h|include/cmsis/stm32f407xx.h|include/cmsis/stm32f405xx.h|include/cmsis/stm32f401xe.h|include/cmsis/stm32f401xc.h|src/stm32f4-hal/stm32f4xx_hal_adc_ex.c|src/stm32f4-hal/stm32f4xx_hal_can.c|src/stm32f4-hal/stm32f4xx_hal_crc.c|src/stm32f4-hal/stm32f4xx_hal_cryp.c|src/stm32f4-hal/stm32f4xx_hal_cryp_ex.c|src/stm32f4-hal/stm32f4xx_hal_dac_ex.c|src/stm32f4-hal/stm32f4xx_hal_dcmi.c|src/stm32f4-hal/stm32f4xx_hal_dma2d.c|src/stm32f4-hal/stm32f4xx_hal_dma_ex.c|src/stm32f4-hal/stm32f4xx_hal_eth.c|src/stm32f4-hal/stm32f4xx_hal_hash.c|src/stm32f4-hal/stm32f4xx_hal_hash_ex.c|src/stm32f4-hal/stm32f4xx_hal_hcd.c|src/stm32f4-hal/stm32f4xx_hal_i2s.c|src/stm32f4-hal/stm32f4xx_hal_i2s_ex.c|src/stm32f4-hal/stm32f4xx_hal_irda.c|src/stm32f4-hal/stm32f4xx_hal_ltdc.c|src/stm32f4-hal/stm32f4xx_hal_msp_template.c|src/stm32f4-hal/stm32f4xx_hal_nand.c|src/stm32f4-hal/stm32f4xx_hal_nor.c|src/stm32f4-hal/stm32f4xx_hal_pccard.c|src/stm32f4-hal/stm32f4xx_hal_pcd.c|src/stm32f4-hal/stm32f4xx_hal_rng.c|src/stm32f4-hal/stm32f4xx_hal_rtc_ex.c|src/stm32f4-hal/stm32f4xx_hal_sai.c|src/stm32f4-hal/stm32f4xx_hal_sd.c|src/stm32f4-hal/stm32f4xx_hal_sdram.c|src/stm32f4-hal/stm32f4xx_hal_smartcard.c|src/stm32f4-hal/stm32f4xx_hal_sram.c|src/stm32f4-hal/stm32f4xx_hal_wwdg.c|src/stm32f4-hal/stm32f4xx_ll_fmc.c|src/stm32f4-hal/stm32f4xx_ll_fsmc.c|src/stm32f4-hal/stm32f4xx_ll_sdmmc.c|src/stm32f4-hal/stm32f4xx_ll_usb.c" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="system"/>
</sourceEntries>
</configuration>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
<storageModule moduleId="ilg.gnuarmeclipse.managedbuild.packs"/>
<storageModule moduleId="ilg.gnuarmeclipse.managedbuild.packs">
<option id="cmsis.device.name" value="STM32F429VI"/>
<option id="cmsis.subfamily.name" value="STM32F429"/>
<option id="cmsis.family.name" value="STM32F4 Series"/>
<option id="cmsis.device.vendor.name" value="STMicroelectronics"/>
<option id="cmsis.device.vendor.id" value="13"/>
<option id="cmsis.device.pack.vendor" value="Keil"/>
<option id="cmsis.device.pack.name" value="STM32F4xx_DFP"/>
<option id="cmsis.device.pack.version" value="2.8.0"/>
<option id="cmsis.core.name" value="Cortex-M4"/>
<option id="cmsis.compiler.define" value="STM32F429xx"/>
<memory section="IRAM1" size="0x30000" start="0x20000000" startup="0"/>
<memory section="IRAM2" size="0x10000" start="0x10000000" startup="0"/>
<memory section="IROM1" size="0x200000" start="0x08000000" startup="1"/>
</storageModule>
</cconfiguration>
<cconfiguration id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.168796915">
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.168796915" moduleId="org.eclipse.cdt.core.settings" name="Release">
@ -961,7 +974,7 @@
</folderInfo>
<sourceEntries>
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="src"/>
<entry excluding="src/stm32f4-hal/stm32f4xx_hal_adc.c|src/stm32f4-hal/stm32f4xx_hal_adc_ex.c|src/stm32f4-hal/stm32f4xx_hal_can.c|src/stm32f4-hal/stm32f4xx_hal_crc.c|src/stm32f4-hal/stm32f4xx_hal_cryp.c|src/stm32f4-hal/stm32f4xx_hal_cryp_ex.c|src/stm32f4-hal/stm32f4xx_hal_dac.c|src/stm32f4-hal/stm32f4xx_hal_dac_ex.c|src/stm32f4-hal/stm32f4xx_hal_dcmi.c|src/stm32f4-hal/stm32f4xx_hal_dma.c|src/stm32f4-hal/stm32f4xx_hal_dma2d.c|src/stm32f4-hal/stm32f4xx_hal_dma_ex.c|src/stm32f4-hal/stm32f4xx_hal_eth.c|src/stm32f4-hal/stm32f4xx_hal_hash.c|src/stm32f4-hal/stm32f4xx_hal_hash_ex.c|src/stm32f4-hal/stm32f4xx_hal_hcd.c|src/stm32f4-hal/stm32f4xx_hal_i2c.c|src/stm32f4-hal/stm32f4xx_hal_i2c_ex.c|src/stm32f4-hal/stm32f4xx_hal_i2s.c|src/stm32f4-hal/stm32f4xx_hal_i2s_ex.c|src/stm32f4-hal/stm32f4xx_hal_irda.c|src/stm32f4-hal/stm32f4xx_hal_ltdc.c|src/stm32f4-hal/stm32f4xx_hal_msp_template.c|src/stm32f4-hal/stm32f4xx_hal_nand.c|src/stm32f4-hal/stm32f4xx_hal_nor.c|src/stm32f4-hal/stm32f4xx_hal_pccard.c|src/stm32f4-hal/stm32f4xx_hal_pcd.c|src/stm32f4-hal/stm32f4xx_hal_rng.c|src/stm32f4-hal/stm32f4xx_hal_rtc.c|src/stm32f4-hal/stm32f4xx_hal_rtc_ex.c|src/stm32f4-hal/stm32f4xx_hal_sai.c|src/stm32f4-hal/stm32f4xx_hal_sd.c|src/stm32f4-hal/stm32f4xx_hal_sdram.c|src/stm32f4-hal/stm32f4xx_hal_smartcard.c|src/stm32f4-hal/stm32f4xx_hal_spi.c|src/stm32f4-hal/stm32f4xx_hal_sram.c|src/stm32f4-hal/stm32f4xx_hal_tim.c|src/stm32f4-hal/stm32f4xx_hal_tim_ex.c|src/stm32f4-hal/stm32f4xx_hal_uart.c|src/stm32f4-hal/stm32f4xx_hal_usart.c|src/stm32f4-hal/stm32f4xx_hal_wwdg.c|src/stm32f4-hal/stm32f4xx_ll_fmc.c|src/stm32f4-hal/stm32f4xx_ll_fsmc.c|src/stm32f4-hal/stm32f4xx_ll_sdmmc.c|src/stm32f4-hal/stm32f4xx_ll_usb.c" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="system"/>
<entry excluding="src/stm32f4-hal/stm32f4xx_hal_adc.c|src/stm32f4-hal/stm32f4xx_hal_adc_ex.c|src/stm32f4-hal/stm32f4xx_hal_can.c|src/stm32f4-hal/stm32f4xx_hal_crc.c|src/stm32f4-hal/stm32f4xx_hal_cryp.c|src/stm32f4-hal/stm32f4xx_hal_cryp_ex.c|src/stm32f4-hal/stm32f4xx_hal_dac.c|src/stm32f4-hal/stm32f4xx_hal_dac_ex.c|src/stm32f4-hal/stm32f4xx_hal_dcmi.c|src/stm32f4-hal/stm32f4xx_hal_dma.c|src/stm32f4-hal/stm32f4xx_hal_dma2d.c|src/stm32f4-hal/stm32f4xx_hal_dma_ex.c|src/stm32f4-hal/stm32f4xx_hal_eth.c|src/stm32f4-hal/stm32f4xx_hal_hash.c|src/stm32f4-hal/stm32f4xx_hal_hash_ex.c|src/stm32f4-hal/stm32f4xx_hal_hcd.c|src/stm32f4-hal/stm32f4xx_hal_i2s.c|src/stm32f4-hal/stm32f4xx_hal_i2s_ex.c|src/stm32f4-hal/stm32f4xx_hal_irda.c|src/stm32f4-hal/stm32f4xx_hal_ltdc.c|src/stm32f4-hal/stm32f4xx_hal_msp_template.c|src/stm32f4-hal/stm32f4xx_hal_nand.c|src/stm32f4-hal/stm32f4xx_hal_nor.c|src/stm32f4-hal/stm32f4xx_hal_pccard.c|src/stm32f4-hal/stm32f4xx_hal_pcd.c|src/stm32f4-hal/stm32f4xx_hal_rng.c|src/stm32f4-hal/stm32f4xx_hal_rtc.c|src/stm32f4-hal/stm32f4xx_hal_rtc_ex.c|src/stm32f4-hal/stm32f4xx_hal_sai.c|src/stm32f4-hal/stm32f4xx_hal_sd.c|src/stm32f4-hal/stm32f4xx_hal_sdram.c|src/stm32f4-hal/stm32f4xx_hal_smartcard.c|src/stm32f4-hal/stm32f4xx_hal_spi.c|src/stm32f4-hal/stm32f4xx_hal_sram.c|src/stm32f4-hal/stm32f4xx_hal_tim.c|src/stm32f4-hal/stm32f4xx_hal_tim_ex.c|src/stm32f4-hal/stm32f4xx_hal_uart.c|src/stm32f4-hal/stm32f4xx_hal_usart.c|src/stm32f4-hal/stm32f4xx_hal_wwdg.c|src/stm32f4-hal/stm32f4xx_ll_fmc.c|src/stm32f4-hal/stm32f4xx_ll_fsmc.c|src/stm32f4-hal/stm32f4xx_ll_sdmmc.c|src/stm32f4-hal/stm32f4xx_ll_usb.c" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="system"/>
</sourceEntries>
</configuration>
</storageModule>

View File

@ -5,7 +5,7 @@
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
<provider class="org.eclipse.cdt.managedbuilder.language.settings.providers.GCCBuiltinSpecsDetector" console="false" env-hash="805042304116791388" id="ilg.gnuarmeclipse.managedbuild.cross.GCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT GCC Built-in Compiler Settings Cross ARM" parameter="${COMMAND} ${FLAGS} ${cross_toolchain_flags} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<provider class="org.eclipse.cdt.managedbuilder.language.settings.providers.GCCBuiltinSpecsDetector" console="false" env-hash="3299444413646052" id="ilg.gnuarmeclipse.managedbuild.cross.GCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT GCC Built-in Compiler Settings Cross ARM" parameter="${COMMAND} ${FLAGS} ${cross_toolchain_flags} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<language-scope id="org.eclipse.cdt.core.gcc"/>
<language-scope id="org.eclipse.cdt.core.g++"/>
</provider>
@ -16,7 +16,7 @@
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
<provider class="org.eclipse.cdt.managedbuilder.language.settings.providers.GCCBuiltinSpecsDetector" console="false" env-hash="776963627361157363" id="ilg.gnuarmeclipse.managedbuild.cross.GCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT GCC Built-in Compiler Settings Cross ARM" parameter="${COMMAND} ${FLAGS} ${cross_toolchain_flags} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<provider class="org.eclipse.cdt.managedbuilder.language.settings.providers.GCCBuiltinSpecsDetector" console="false" env-hash="-24779232341987973" id="ilg.gnuarmeclipse.managedbuild.cross.GCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT GCC Built-in Compiler Settings Cross ARM" parameter="${COMMAND} ${FLAGS} ${cross_toolchain_flags} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<language-scope id="org.eclipse.cdt.core.gcc"/>
<language-scope id="org.eclipse.cdt.core.g++"/>
</provider>

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<launchConfiguration type="ilg.gnuarmeclipse.debug.gdbjtag.openocd.launchConfigurationType">
<stringAttribute key="ilg.gnuarmeclipse.debug.gdbjtag.PERIPHERALS" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;peripherals&gt;&#13;&#10;&lt;peripheral name=&quot;I2C2&quot;/&gt;&#13;&#10;&lt;/peripherals&gt;&#13;&#10;"/>
<booleanAttribute key="ilg.gnuarmeclipse.debug.gdbjtag.openocd.doContinue" value="true"/>
<booleanAttribute key="ilg.gnuarmeclipse.debug.gdbjtag.openocd.doDebugInRam" value="false"/>
<booleanAttribute key="ilg.gnuarmeclipse.debug.gdbjtag.openocd.doFirstReset" value="true"/>
@ -49,8 +50,8 @@
<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_REGISTER_GROUPS" value=""/>
<stringAttribute key="org.eclipse.cdt.launch.PROGRAM_NAME" value="Debug/PSDR.elf"/>
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_ATTR" value="PSDR"/>
<booleanAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_AUTO_ATTR" value="false"/>
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_ID_ATTR" value=""/>
<booleanAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_AUTO_ATTR" value="true"/>
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_ID_ATTR" value="ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.1375704298"/>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
<listEntry value="/PSDR"/>
</listAttribute>

View File

@ -27,8 +27,8 @@
// STM32F4DISCOVERY definitions (the GREEN led, D12, active high)
// (SEGGER J-Link device name: STM32F407VG).
#define BLINK_PORT_NUMBER (0)
#define BLINK_PIN_NUMBER (8)
#define BLINK_PORT_NUMBER (4)
#define BLINK_PIN_NUMBER (12)
#define BLINK_ACTIVE_LOW (0)
#endif

View File

@ -24,7 +24,7 @@ uint16_t sampleIndex;
volatile uint8_t sampleRun;
/* Definition for ADCx clock resources */
#define ADC_RX_Q ADC3
#define ADC_RX_Q ADC3
#define ADC_RX_I ADC2
#define ADC_MIC ADC1
#define ADCx_CLK_ENABLE() __ADC1_CLK_ENABLE()
@ -38,8 +38,8 @@ volatile uint8_t sampleRun;
//#define ADCx_CHANNEL_GPIO_PORT GPIOA
/* Definition for ADCx's Channel */
#define ADC_RX_Q_CHANNEL ADC_CHANNEL_3
#define ADC_RX_I_CHANNEL ADC_CHANNEL_6
#define ADC_RX_Q_CHANNEL ADC_CHANNEL_2
#define ADC_RX_I_CHANNEL ADC_CHANNEL_3
#define ADC_MIC_CHANNEL ADC_CHANNEL_9
#define ADC_LIPO_VOLTAGE ADC_CHANNEL_15

View File

@ -2,65 +2,61 @@
*/
#ifndef HAL_H_
#define HAL_H_
#define HAL_H_
#include <main.h>
#include <stdint.h>
#include <stdbool.h>
//#include <stm32f10x.h>
#include <stdint.h>
#include <stdbool.h>
//#include <stm32f10x.h>
//#include <stm32f415xx.h>
#ifdef PSDR2
#include "stm32f429xx.h"
#include "stm32f429xx.h"
#endif
#include <stm32f4xx_hal_gpio.h>
// #include <stm32f10x_gpio.h>
#include <uart.h>
#include <uart.h>
#include "stm32f4xx_hal_dma.h"
#include "stm32f4xx_hal_usart.h"
#include "stm32f4xx_hal_i2c.h"
typedef struct _Gpio_Pin
{
GPIO_TypeDef* port;
uint16_t pin;
} Gpio_Pin;
// a timer with which channel of the timer specified
typedef struct _Timer_Channel
{
uint8_t channel;
TIM_TypeDef* timer;
} Timer_Channel;
typedef struct _Gpio_Pin
{
GPIO_TypeDef* port;
uint16_t pin;
} Gpio_Pin;
// a Timer_Pin is a gpio pin that is connected to an internal timer
typedef struct _Timer_Pin
{
Gpio_Pin gpioPin;
Timer_Channel timer;
} Timer_Pin;
// a timer with which channel of the timer specified
typedef struct _Timer_Channel
{
uint8_t channel;
TIM_TypeDef* timer;
} Timer_Channel;
typedef void
(*hal_sysTickCallback) (void);
// a Timer_Pin is a gpio pin that is connected to an internal timer
typedef struct _Timer_Pin
{
Gpio_Pin gpioPin;
Timer_Channel timer;
} Timer_Pin;
typedef void (*hal_sysTickCallback)(void);
// hal wrappers for GPIO
// gpioPin must be a Gpio_Pin struct
// val must be either a 0 or a 1
#define hal_writeGpio(gpioPin, val) (GPIO_WriteBit((gpioPin).port, (gpioPin).pin, (val))) // returns void
#define hal_readGpio(gpioPin) (GPIO_ReadInputDataBit((gpioPin).port, (gpioPin).pin)) // returns uint8_t
// hal wrappers for GPIO
// gpioPin must be a Gpio_Pin struct
// val must be either a 0 or a 1
#define hal_writeGpio(gpioPin, val) (GPIO_WriteBit((gpioPin).port, (gpioPin).pin, (val))) // returns void
#define hal_readGpio(gpioPin) (GPIO_ReadInputDataBit((gpioPin).port, (gpioPin).pin)) // returns uint8_t
// // power macros
// #define hal_isPlugged(powerState) (!((powerState) & hal_externalPower))
__IO uint32_t timingDelay;
__IO uint32_t timingDelay;
#define MEDIATEK_MODULE
#define hal_gpsUart USART1
// gpio pins
// gpio pins
// extern const Gpio_Pin RX_TO_GSM;
// extern const Gpio_Pin TX_FROM_GSM;
// extern const Gpio_Pin FINGER_PRINT_POWER;
@ -70,83 +66,92 @@
// extern const Gpio_Pin BUZZER;
// extern const Gpio_Pin RFID_INT;
// extern const Gpio_Pin FINGER_PRINT_BUTTON;
extern const Gpio_Pin LCD_NSS;
extern const Gpio_Pin LCD_NSS;
// extern const Gpio_Pin LOW_BAT;
extern const Gpio_Pin RX_TO_GPS;
extern const Gpio_Pin TX_FROM_GPS;
extern const Gpio_Pin GPS_RESET;
extern const Gpio_Pin GPS_FIX_LED;
extern const Gpio_Pin GPS_PPS;
extern const Gpio_Pin GPS_POWER;
extern const Gpio_Pin SPI1_SCK;
extern const Gpio_Pin SPI1_MISO;
extern const Gpio_Pin SPI1_MOSI;
extern const Gpio_Pin SPI2_SCK;
extern const Gpio_Pin SPI2_MISO;
extern const Gpio_Pin SPI2_MOSI;
extern const Gpio_Pin LCD_RESET;
extern const Gpio_Pin LCD_DC;
extern const Gpio_Pin ADC_1;
extern const Gpio_Pin ADC_2;
extern const Gpio_Pin RX_TO_GPS;
extern const Gpio_Pin TX_FROM_GPS;
extern const Gpio_Pin GPS_RESET;
//extern const Gpio_Pin GPS_FIX_LED;
extern const Gpio_Pin GPS_PPS;
extern const Gpio_Pin GPS_POWER;
extern const Gpio_Pin LCD_SCK;
extern const Gpio_Pin LCD_MISO;
extern const Gpio_Pin LCD_MOSI;
extern const Gpio_Pin SPI2_SCK;
extern const Gpio_Pin SPI2_MISO;
extern const Gpio_Pin SPI2_MOSI;
extern const Gpio_Pin LCD_RESET;
extern const Gpio_Pin LCD_DC;
extern const Gpio_Pin RX_Q;
extern const Gpio_Pin RX_I;
// extern const Gpio_Pin OLED_RESET;
// extern const Gpio_Pin OLED_DC;
// extern const Gpio_Pin OLED_NSS;
//CORRECT FOR PSDR1
extern const Gpio_Pin ddsReset;
extern const Gpio_Pin ddsSleep;
extern const Gpio_Pin dds1Mosi;
extern const Gpio_Pin dds1Nss;
extern const Gpio_Pin dds1Sck;
extern const Gpio_Pin dds2Mosi;
extern const Gpio_Pin dds2Nss;
extern const Gpio_Pin dds2Sck;
extern const Gpio_Pin encoderA;
extern const Gpio_Pin encoderB;
extern const Gpio_Pin encoderP;
extern const Gpio_Pin dac1;
extern const Gpio_Pin dac2;
//CORRECT FOR PSDR1
//extern const Gpio_Pin ddsReset;
//extern const Gpio_Pin ddsSleep;
//extern const Gpio_Pin dds1Mosi;
//extern const Gpio_Pin dds1Nss;
//extern const Gpio_Pin dds1Sck;
//extern const Gpio_Pin dds2Mosi;
//extern const Gpio_Pin dds2Nss;
//extern const Gpio_Pin dds2Sck;
extern const Gpio_Pin encoderBee;
extern const Gpio_Pin encoderB;
extern const Gpio_Pin encoderP;
extern const Gpio_Pin dac1;
extern const Gpio_Pin dac2;
extern const Gpio_Pin REF_CLOCK_ENABLE;
extern const Gpio_Pin DDS_FSEL;
extern const Gpio_Pin DDS_PSEL;
extern const Gpio_Pin RX_MUX;
extern const Gpio_Pin TX_MUX;
extern const Gpio_Pin AMP_SWITCH_A;
extern const Gpio_Pin AMP_SWITCH_B;
extern const Gpio_Pin IMP_BRIDGE_SWITCH_A;
extern const Gpio_Pin IMP_BRIDGE_SWITCH_B;
extern const Gpio_Pin MIXER_SWITCH_A;
extern const Gpio_Pin MIXER_SWITCH_B;
extern const Gpio_Pin TX_RF_SWITCH_A;
extern const Gpio_Pin TX_RF_SWITCH_B;
//extern const Gpio_Pin REF_CLOCK_ENABLE;
//extern const Gpio_Pin DDS_FSEL;
//extern const Gpio_Pin DDS_PSEL;
//extern const Gpio_Pin RX_MUX;
//extern const Gpio_Pin TX_MUX;
extern const Gpio_Pin AMP_SWITCH_A;
extern const Gpio_Pin AMP_SWITCH_B;
extern const Gpio_Pin IMP_BRIDGE_SWITCH_A;
extern const Gpio_Pin IMP_BRIDGE_SWITCH_B;
//extern const Gpio_Pin MIXER_SWITCH_A;
//extern const Gpio_Pin MIXER_SWITCH_B;
extern const Gpio_Pin TX_RF_SWITCH_A;
extern const Gpio_Pin TX_RF_SWITCH_B;
extern const Gpio_Pin AMP_POWER;
extern const Gpio_Pin MIXER_POWER;
extern const Gpio_Pin AMP_POWER;
//extern const Gpio_Pin MIXER_POWER;
extern const Gpio_Pin GAIN_POT_SCLK;
extern const Gpio_Pin GAIN_POT_MOSI;
extern const Gpio_Pin GAIN_POT_NSS;
extern const Gpio_Pin FILTER_GAIN_POT_SCLK;
extern const Gpio_Pin FILTER_GAIN_POT_MOSI;
extern const Gpio_Pin GAIN_POT_NSS;
extern const Gpio_Pin IN_AMP_ENABLE;
extern const Gpio_Pin DAC_MUX;
extern const Gpio_Pin IN_AMP_ENABLE;
extern const Gpio_Pin DAC_MUX;
extern const Gpio_Pin AUDIO_AMP_NSHTDWN;
extern const Gpio_Pin EARPHONE_NOT_INSERTED;
extern const Gpio_Pin SIDETONE; //Should be a timer pin.
extern const Gpio_Pin AUDIO_AMP_NSHTDWN;
extern const Gpio_Pin EARPHONE_NOT_INSERTED;
extern const Gpio_Pin SIDETONE; //Should be a timer pin.
extern const Gpio_Pin MIC_IN;
extern const Gpio_Pin MIC_SWITCH;
extern const Gpio_Pin PREAMP_POWER;
extern const Gpio_Pin MIC_BUTTON;
extern const Gpio_Pin MIC_IN;
extern const Gpio_Pin MIC_SWITCH;
extern const Gpio_Pin PREAMP_POWER;
extern const Gpio_Pin MIC_BUTTON;
extern const Gpio_Pin TOUCH1;
extern const Gpio_Pin TOUCH2;
extern const Gpio_Pin KEY1;
extern const Gpio_Pin KEY2;
extern const Gpio_Pin PADDLE_THUMB_NO;
extern const Gpio_Pin PADDLE_INDEX_NO;
extern const Gpio_Pin PADDLE_THUMB_NC;
extern const Gpio_Pin PADDLE_INDEX_NC;
extern const Gpio_Pin FILTER_S0;
extern const Gpio_Pin FILTER_S1;
extern const Gpio_Pin TRX_SWITCH;
extern const Gpio_Pin I2C_SCL;
extern const Gpio_Pin I2C_SDA;
extern const Gpio_Pin FLIP_FLOP_ENABLE;
extern const Gpio_Pin RED_LED;
// extern const Gpio_Pin NC_1;
// extern const Gpio_Pin DAC_SWITCHES;
@ -159,70 +164,84 @@
// extern const Gpio_Pin POWER_SWITCH;
// extern const Gpio_Pin ACCEL_NSS;
// timer pins
// timer pins
// extern const Timer_Pin LED_G;
// extern const Timer_Pin LED_R;
// extern const Timer_Pin LED_B;
// extern const Timer_Pin SERVO1;
// extern const Timer_Pin SERVO2;
extern inline bool
hal_checkTimeout (uint32_t startTime_ms, uint32_t interval_ms);
// returns true if the interval has timed out
int
hal_acquireSemaphore (uint8_t sem);
extern inline bool hal_checkTimeout(uint32_t startTime_ms, uint32_t interval_ms);
// returns true if the interval has timed out
void
hal_releaseSemaphore (uint8_t sem);
int hal_acquireSemaphore(uint8_t sem);
void
hal_getBatteryVoltage (float* battVoltage);
// reads power voltage level
void hal_releaseSemaphore(uint8_t sem);
void
hal_delay_ms (uint32_t ms);
// busy wait for ms milliseconds
void hal_getBatteryVoltage(float* battVoltage);
// reads power voltage level
void
hal_setupPins (void);
// Setup gpio pins and timer pins.
void hal_delay_ms(uint32_t ms);
// busy wait for ms milliseconds
void
hal_timerSetCompare (const Timer_Channel* timer, uint16_t value);
// set the timer compare register for timer
void hal_setupPins(void);
// Setup gpio pins and timer pins.
void
hal_setupTimers (void);
// Setup TIM3 and TIM4 for controlling the LEDs and Servos
void hal_timerSetCompare(const Timer_Channel* timer, uint16_t value);
// set the timer compare register for timer
uint32_t
hal_getCurrentTime_ms (void);
// get the current system millisecond count
void hal_setupTimers(void);
// Setup TIM3 and TIM4 for controlling the LEDs and Servos
void
hal_setupUart1 (void);
// setup usart 1 and its pins
uint32_t hal_getCurrentTime_ms(void);
// get the current system millisecond count
void
hal_setupUart2 (void);
// setup usart 2 and its pins
void hal_setupUart1(void);
// setup usart 1 and its pins
void
hal_setupUart3 (unsigned int baudRate);
// setup usart 3 and its pins
void hal_setupUart2(void);
// setup usart 2 and its pins
void
hal_resetUart1 (void);
// resets usart 1 and its pins
void hal_setupUart3(unsigned int baudRate);
// setup usart 3 and its pins
void
hal_resetUart2 (void);
// resets usart 2 and its pins
void hal_resetUart1(void);
// resets usart 1 and its pins
void
hal_resetUart3 (void);
// resets usart 3 and its pins
void hal_resetUart2(void);
// resets usart 2 and its pins
void
hal_adcConfigure (void);
// configure and enable used ADC(s)
void hal_resetUart3(void);
// resets usart 3 and its pins
void hal_adcConfigure(void);
// configure and enable used ADC(s)
uint16_t hal_readAdc1(uint8_t channel);
// read a value on a channel of ADC1
// returns value read
void hal_setSysTickCallback(hal_sysTickCallback callback);
//void hal_blinkLed(uint8_t led, uint8_t blinkCount, uint16_t onTime, uint16_t offTime);
// blink the given LED blinkCount times
uint16_t
hal_readAdc1 (uint8_t channel);
// read a value on a channel of ADC1
// returns value read
void
hal_setSysTickCallback (hal_sysTickCallback callback);
//void hal_blinkLed(uint8_t led, uint8_t blinkCount, uint16_t onTime, uint16_t offTime);
// blink the given LED blinkCount times
#endif /* HAL_H_ */

11
Source/include/i2c.h Normal file
View File

@ -0,0 +1,11 @@
#ifndef I2C_H_
#define I2C_H_
#include <hal.h>
//#include "register_map.h"
//#include "stm32f4xx_hal_i2c.h"
#define SI5338_ADDRESS 0x70
I2C_HandleTypeDef handleI2C;
#endif /* DDS_H_ */

View File

@ -19,6 +19,7 @@
#endif
#include "stm32f4xx.h"
#include "stm32f4xx_hal_conf.h"
//#include "core_cmInstr.h"
#include <stdio.h>
#include "stddef.h"
@ -28,6 +29,7 @@
#include "dds.h"
#include "Timer.h"
#include "BlinkLed.h"
//#include "stm32f4xx_hal_rcc.h"
#include "stm32f4xx_hal_gpio.h"
#include "Adafruit_GFX.h"
@ -45,13 +47,14 @@
#include "stm32f4xx_hal_cortex.h"
#include "misc.h"
#include "stm32f4xx_hal_dac.h"
//#include "stm32f4xx_hal_i2c.h"
#include "images.h"
#include "stm32f4xx_hal_dma.h"
#include "stm32f4xx_hal_def.h"
//#include "stm32f4xx_hal_def.h"
#include "stm32f4xx_hal_uart.h"
#include "stm32f4xx_hal_usart.h"
#include "i2c.h"
TIM_HandleTypeDef TimHandle;

View File

@ -88,18 +88,18 @@ void Adafruit_ILI9340_spiwrite(uint8_t c) {
if(c & bit) {
//digitalWrite(_mosi, HIGH);
//SET_BIT(mosiport, mosipinmask);
HAL_GPIO_WritePin(SPI1_MOSI.port, SPI1_MOSI.pin, 1);
HAL_GPIO_WritePin(LCD_MOSI.port, LCD_MOSI.pin, 1);
} else {
//digitalWrite(_mosi, LOW);
//CLEAR_BIT(mosiport, mosipinmask);
HAL_GPIO_WritePin(SPI1_MOSI.port, SPI1_MOSI.pin, 0);
HAL_GPIO_WritePin(LCD_MOSI.port, LCD_MOSI.pin, 0);
}
//digitalWrite(_sclk, HIGH);
//SET_BIT(clkport, clkpinmask);
HAL_GPIO_WritePin(SPI1_SCK.port, SPI1_SCK.pin, 1);
HAL_GPIO_WritePin(LCD_SCK.port, LCD_SCK.pin, 1);
//digitalWrite(_sclk, LOW);
//CLEAR_BIT(clkport, clkpinmask);
HAL_GPIO_WritePin(SPI1_SCK.port, SPI1_SCK.pin, 0);
HAL_GPIO_WritePin(LCD_SCK.port, LCD_SCK.pin, 0);
}
}
}
@ -110,7 +110,7 @@ void Adafruit_ILI9340_writecommand(uint16_t c) {
HAL_GPIO_WritePin(LCD_DC.port, LCD_DC.pin, 0);
//digitalWrite(_dc, LOW);
//CLEAR_BIT(clkport, clkpinmask);
HAL_GPIO_WritePin(SPI1_SCK.port, SPI1_SCK.pin, 0);
HAL_GPIO_WritePin(LCD_SCK.port, LCD_SCK.pin, 0);
//digitalWrite(_sclk, LOW);
//CLEAR_BIT(csport, cspinmask);
HAL_GPIO_WritePin(LCD_NSS.port, LCD_NSS.pin, 0);
@ -134,7 +134,7 @@ void Adafruit_ILI9340_writedata(uint16_t c) {
HAL_GPIO_WritePin(LCD_DC.port, LCD_DC.pin, 1);
//digitalWrite(_dc, HIGH);
//CLEAR_BIT(clkport, clkpinmask);
HAL_GPIO_WritePin(SPI1_SCK.port, SPI1_SCK.pin, 0);
HAL_GPIO_WritePin(LCD_SCK.port, LCD_SCK.pin, 0);
//digitalWrite(_sclk, LOW);
//CLEAR_BIT(csport, cspinmask);
HAL_GPIO_WritePin(LCD_NSS.port, LCD_NSS.pin, 0);

View File

@ -107,7 +107,7 @@ void TinyGPS_init()
}
//Initial Uart setup
uart_init(hal_gpsUart);
//uart_init(hal_gpsUart);
#ifdef SIRF_MODULE
//TODO: Determine which of these delays can be eliminated or reduced
@ -139,7 +139,7 @@ void TinyGPS_init()
#endif
#ifdef MEDIATEK_MODULE
//Send it something to wake it up
uart_write(hal_gpsUart, "\r\n", 2);
//uart_write(hal_gpsUart, "\r\n", 2);
#endif
}

View File

@ -3,35 +3,35 @@
void ddsPrefix()
{
HAL_GPIO_WritePin(dds1Sck.port, dds1Sck.pin, 1);
HAL_GPIO_WritePin(dds2Sck.port, dds2Sck.pin, 1);
//delay
HAL_GPIO_WritePin(dds1Nss.port, dds1Nss.pin, 0);
HAL_GPIO_WritePin(dds2Nss.port, dds2Nss.pin, 0);
//Delay
// HAL_GPIO_WritePin(dds1Sck.port, dds1Sck.pin, 1);
// HAL_GPIO_WritePin(dds2Sck.port, dds2Sck.pin, 1);
// //delay
// HAL_GPIO_WritePin(dds1Nss.port, dds1Nss.pin, 0);
// HAL_GPIO_WritePin(dds2Nss.port, dds2Nss.pin, 0);
// //Delay
}
void sendToDds(uint16_t data1, uint16_t data2)
{
int i;
for(i = 0; i < 16; i++)
{
HAL_GPIO_WritePin(dds1Mosi.port, dds1Mosi.pin, (data1 >> (15-i)) & 1);
HAL_GPIO_WritePin(dds2Mosi.port, dds2Mosi.pin, (data2 >> (15-i)) & 1);
//delay
HAL_GPIO_WritePin(dds1Sck.port, dds1Sck.pin, 0);
HAL_GPIO_WritePin(dds2Sck.port, dds2Sck.pin, 0);
//delay
HAL_GPIO_WritePin(dds1Sck.port, dds1Sck.pin, 1); //The 16th shift of this line is when execution occurs
HAL_GPIO_WritePin(dds2Sck.port, dds2Sck.pin, 1); //NOT on the release of NSS!!!! GAH!
}
// int i;
// for(i = 0; i < 16; i++)
// {
// HAL_GPIO_WritePin(dds1Mosi.port, dds1Mosi.pin, (data1 >> (15-i)) & 1);
// HAL_GPIO_WritePin(dds2Mosi.port, dds2Mosi.pin, (data2 >> (15-i)) & 1);
// //delay
// HAL_GPIO_WritePin(dds1Sck.port, dds1Sck.pin, 0);
// HAL_GPIO_WritePin(dds2Sck.port, dds2Sck.pin, 0);
// //delay
// HAL_GPIO_WritePin(dds1Sck.port, dds1Sck.pin, 1); //The 16th shift of this line is when execution occurs
// HAL_GPIO_WritePin(dds2Sck.port, dds2Sck.pin, 1); //NOT on the release of NSS!!!! GAH!
// }
}
void ddsSuffix()
{
HAL_GPIO_WritePin(dds1Nss.port, dds1Nss.pin, 1);
HAL_GPIO_WritePin(dds2Nss.port, dds2Nss.pin, 1);
//HAL_GPio
// HAL_GPIO_WritePin(dds1Nss.port, dds1Nss.pin, 1);
// HAL_GPIO_WritePin(dds2Nss.port, dds2Nss.pin, 1);
// //HAL_GPio
}
long long freqToReg(long long frequency)
@ -44,43 +44,43 @@ long long freqToReg(long long frequency)
}
void setFreq(long frequency)
{
long long freg = freqToReg(frequency);
HAL_GPIO_WritePin(ddsReset.port, ddsReset.pin, 1);
ddsPrefix();
//sendToDds(0x2100, 0x2100);
//sendToDds(0x0010001100000000 , 0x0010001100000000);
sendToDds(0b0010001000000000 , 0b0010001000000000);
ddsSuffix();
//HAL_GPIO_WritePin(ddsReset.port, ddsReset.pin, 0);
HAL_GPIO_WritePin(ddsReset.port, ddsReset.pin, 1);
//sendToDds(0x50c7);
//sendToDds(0x4000);
ddsPrefix();
sendToDds(((freg & 0b0011111111111111) | 0b0100000000000000),
((freg & 0b0011111111111111) | 0b0100000000000000));
ddsSuffix();
ddsPrefix();
sendToDds(((freg >> 14 & 0b0011111111111111) | 0b0100000000000000),
(((freg >> 14) & 0b0011111111111111) | 0b0100000000000000));
ddsSuffix();
ddsPrefix();
//sendToDds(0xc000, 0xc000);
sendToDds(0xc000, 0xc000 | 3072);
ddsSuffix();
// ddsPrefix();
// sendToDds(0b1100000000000000);
// ddsSuffix();
// ddsPrefix();
// sendToDds(0x2000, 0x2000);
// ddsSuffix();
HAL_GPIO_WritePin(ddsReset.port, ddsReset.pin, 0);
}
//void setFreq(long frequency)
//{
// long long freg = freqToReg(frequency);
//
//
// //HAL_GPIO_WritePin(ddsReset.port, ddsReset.pin, 1);
// ddsPrefix();
// //sendToDds(0x2100, 0x2100);
// //sendToDds(0x0010001100000000 , 0x0010001100000000);
// sendToDds(0b0010001000000000 , 0b0010001000000000);
// ddsSuffix();
//
// //HAL_GPIO_WritePin(ddsReset.port, ddsReset.pin, 0);
// //HAL_GPIO_WritePin(ddsReset.port, ddsReset.pin, 1);
// //sendToDds(0x50c7);
// //sendToDds(0x4000);
// ddsPrefix();
// sendToDds(((freg & 0b0011111111111111) | 0b0100000000000000),
// ((freg & 0b0011111111111111) | 0b0100000000000000));
// ddsSuffix();
// ddsPrefix();
// sendToDds(((freg >> 14 & 0b0011111111111111) | 0b0100000000000000),
// (((freg >> 14) & 0b0011111111111111) | 0b0100000000000000));
// ddsSuffix();
// ddsPrefix();
// //sendToDds(0xc000, 0xc000);
// sendToDds(0xc000, 0xc000 | 3072);
// ddsSuffix();
// // ddsPrefix();
// // sendToDds(0b1100000000000000);
// // ddsSuffix();
//
//
//
// // ddsPrefix();
// // sendToDds(0x2000, 0x2000);
// // ddsSuffix();
//
//// HAL_GPIO_WritePin(ddsReset.port, ddsReset.pin, 0);
//}

File diff suppressed because it is too large Load Diff

825
Source/src/i2c.c Normal file
View File

@ -0,0 +1,825 @@
#include <i2c.h>
HAL_I2C_MspInit(I2C_HandleTypeDef hi2c)
{
//Ensure that appropriate GPIO and I2C hardware is powered up
//um, they are elsewhere. Good enough for now.
//handleI2C = &hi2c;
GPIO_InitTypeDef gpioInitStructure;
//Check for stuck SDA condition and attempt to clear it
// gpioInitStructure.Pin = I2C_SDA.pin;
// gpioInitStructure.Speed = GPIO_SPEED_FAST;
// gpioInitStructure.Mode = GPIO_MODE_OUTPUT_OD;
// gpioInitStructure.Pull = GPIO_PULLUP;
// gpioInitStructure.Alternate = 0;
// HAL_GPIO_Init (I2C_SDA.port, &gpioInitStructure);
//
//
// gpioInitStructure.Pin = I2C_SCL.pin;
// gpioInitStructure.Speed = GPIO_SPEED_FAST;
// gpioInitStructure.Mode = GPIO_MODE_OUTPUT_OD;
// gpioInitStructure.Pull = GPIO_PULLUP;
// gpioInitStructure.Alternate = 0;
// HAL_GPIO_Init (I2C_SCL.port, &gpioInitStructure);
//
//
//
// //Attempt to clear stuck SDA state (caused by poorly timed reset, for example)
// int retries = 0;
// //while((!HAL_GPIO_ReadPin(I2C_SDA.port, I2C_SDA.pin)) && retries < 100)
// while(retries < 10)
// {
// HAL_GPIO_WritePin(I2C_SCL.port, I2C_SCL.pin, 0);
// HAL_GPIO_WritePin(I2C_SCL.port, I2C_SCL.pin, 1);
// retries++;
// }
//
// HAL_GPIO_WritePin(I2C_SDA.port, I2C_SDA.pin, 1);
// HAL_GPIO_WritePin(I2C_SCL.port, I2C_SCL.pin, 0);
// HAL_GPIO_WritePin(I2C_SDA.port, I2C_SDA.pin, 0);
//THESE HAVE TO BE SET UP IN THIS ORDER!! If they are flipped, the BUSY flag will get flipped and never clear and you'll have a bad day.
gpioInitStructure.Pin = I2C_SCL.pin;
gpioInitStructure.Speed = GPIO_SPEED_FAST;
gpioInitStructure.Mode = GPIO_MODE_AF_OD;
gpioInitStructure.Pull = GPIO_PULLUP;
gpioInitStructure.Alternate = GPIO_AF4_I2C2;
HAL_GPIO_Init (I2C_SCL.port, &gpioInitStructure);
gpioInitStructure.Pin = I2C_SDA.pin;
gpioInitStructure.Speed = GPIO_SPEED_FAST;
gpioInitStructure.Mode = GPIO_MODE_AF_OD;
gpioInitStructure.Pull = GPIO_PULLUP;
gpioInitStructure.Alternate = GPIO_AF4_I2C2;
HAL_GPIO_Init (I2C_SDA.port, &gpioInitStructure);
// (*hi2c).Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
// (*hi2c).Init.ClockSpeed = I2C_
}
clearStuckBusyFlag()
{
//disable I2C peripheral
//__I2C2_CLK_DISABLE();
I2C2->CR1 &= 0b1111111111111110;
//set pins as OD high,
GPIO_InitTypeDef gpioInitStructure;
gpioInitStructure.Pin = I2C_SDA.pin;
gpioInitStructure.Speed = GPIO_SPEED_FAST;
gpioInitStructure.Mode = GPIO_MODE_OUTPUT_OD;
gpioInitStructure.Pull = GPIO_NOPULL;
gpioInitStructure.Alternate = 0;
HAL_GPIO_Init (I2C_SDA.port, &gpioInitStructure);
gpioInitStructure.Pin = I2C_SCL.pin;
gpioInitStructure.Speed = GPIO_SPEED_FAST;
gpioInitStructure.Mode = GPIO_MODE_OUTPUT_OD;
gpioInitStructure.Pull = GPIO_NOPULL;
gpioInitStructure.Alternate = 0;
HAL_GPIO_Init (I2C_SCL.port, &gpioInitStructure);
HAL_GPIO_WritePin(I2C_SCL.port, I2C_SCL.pin, 1);
HAL_GPIO_WritePin(I2C_SDA.port, I2C_SDA.pin, 1);
//set them low (and check them)
HAL_GPIO_WritePin(I2C_SCL.port, I2C_SCL.pin, 0);
HAL_GPIO_WritePin(I2C_SDA.port, I2C_SDA.pin, 0);
//set them high (and check them)
HAL_GPIO_WritePin(I2C_SCL.port, I2C_SCL.pin, 1);
HAL_GPIO_WritePin(I2C_SDA.port, I2C_SDA.pin, 1);
//return pins to AF configuration
gpioInitStructure.Pin = I2C_SDA.pin;
gpioInitStructure.Speed = GPIO_SPEED_FAST;
gpioInitStructure.Mode = GPIO_MODE_AF_OD;
gpioInitStructure.Pull = GPIO_PULLUP;
gpioInitStructure.Alternate = GPIO_AF4_I2C2;
HAL_GPIO_Init (I2C_SDA.port, &gpioInitStructure);
gpioInitStructure.Pin = I2C_SCL.pin;
gpioInitStructure.Speed = GPIO_SPEED_FAST;
gpioInitStructure.Mode = GPIO_MODE_AF_OD;
gpioInitStructure.Pull = GPIO_PULLUP;
gpioInitStructure.Alternate = GPIO_AF4_I2C2;
HAL_GPIO_Init (I2C_SCL.port, &gpioInitStructure);
//set the reset bit in I2Cx_CR1 register then clear it
I2C2->CR1 |= 0b1000000000000000;
I2C2->CR1 &= 0b0111111111111111;
//turn I2C peripheral back on
//__I2C2_CLK_ENABLE();
I2C2->CR1 |= 0b0000000000000001;
}
#define NUM_REGS_MAX 350
#define SI5338_ADDRESS 0x70
#define LOCK_MASK 0x15
#define LOS_MASK 0x04
//typedef struct Reg_Data{
// unsigned unsigned char Reg_Addr;
// unsigned unsigned char Reg_Val;
// unsigned unsigned char Reg_Mask;
//} Reg_Data;
//Reg_Data const code Reg_Store[NUM_REGS_MAX] = {
unsigned char Reg_Store[][3] = {
{ 0,0x00,0x00},
{ 1,0x00,0x00},
{ 2,0x00,0x00},
{ 3,0x00,0x00},
{ 4,0x00,0x00},
{ 5,0x00,0x00},
{ 6,0x08,0x1D},
{ 7,0x00,0x00},
{ 8,0x70,0x00},
{ 9,0x0F,0x00},
{ 10,0x00,0x00},
{ 11,0x00,0x00},
{ 12,0x00,0x00},
{ 13,0x00,0x00},
{ 14,0x00,0x00},
{ 15,0x00,0x00},
{ 16,0x00,0x00},
{ 17,0x00,0x00},
{ 18,0x00,0x00},
{ 19,0x00,0x00},
{ 20,0x00,0x00},
{ 21,0x00,0x00},
{ 22,0x00,0x00},
{ 23,0x00,0x00},
{ 24,0x00,0x00},
{ 25,0x00,0x00},
{ 26,0x00,0x00},
{ 27,0x70,0x80},
{ 28,0x16,0xFF},
{ 29,0x90,0xFF},
{ 30,0xB0,0xFF},
{ 31,0xC0,0xFF},
{ 32,0xC0,0xFF},
{ 33,0xCC,0xFF},
{ 34,0xE3,0xFF},
{ 35,0x00,0xFF},
{ 36,0x06,0x1F},
{ 37,0x06,0x1F},
{ 38,0x06,0x1F},
{ 39,0x00,0x1F},
{ 40,0x63,0xFF},
{ 41,0x0C,0x7F},
{ 42,0x23,0x3F},
{ 43,0x00,0x00},
{ 44,0x00,0x00},
{ 45,0x00,0xFF},
{ 46,0x00,0xFF},
{ 47,0x14,0x3F},
{ 48,0x2B,0xFF},
{ 49,0x00,0xFF},
{ 50,0xC2,0xFF},
{ 51,0x27,0xFF},
{ 52,0x10,0xFF},
{ 53,0xD9,0xFF},
{ 54,0x02,0xFF},
{ 55,0x84,0xFF},
{ 56,0x01,0xFF},
{ 57,0x00,0xFF},
{ 58,0x00,0xFF},
{ 59,0xB7,0xFF},
{ 60,0x00,0xFF},
{ 61,0x00,0xFF},
{ 62,0x00,0x3F},
{ 63,0x10,0xFF},
{ 64,0x00,0xFF},
{ 65,0x00,0xFF},
{ 66,0x00,0xFF},
{ 67,0x00,0xFF},
{ 68,0x00,0xFF},
{ 69,0x00,0xFF},
{ 70,0x01,0xFF},
{ 71,0x00,0xFF},
{ 72,0x00,0xFF},
{ 73,0x00,0x3F},
{ 74,0x10,0xFF},
{ 75,0x38,0xFF},
{ 76,0xC3,0xFF},
{ 77,0x20,0xFF},
{ 78,0x00,0xFF},
{ 79,0x00,0xFF},
{ 80,0x00,0xFF},
{ 81,0x09,0xFF},
{ 82,0x00,0xFF},
{ 83,0x00,0xFF},
{ 84,0x00,0x3F},
{ 85,0x10,0xFF},
{ 86,0x00,0xFF},
{ 87,0x00,0xFF},
{ 88,0x00,0xFF},
{ 89,0x00,0xFF},
{ 90,0x00,0xFF},
{ 91,0x00,0xFF},
{ 92,0x00,0xFF},
{ 93,0x00,0xFF},
{ 94,0x00,0xFF},
{ 95,0x00,0x3F},
{ 96,0x10,0x00},
{ 97,0x9D,0xFF},
{ 98,0x34,0xFF},
{ 99,0x1C,0xFF},
{100,0x00,0xFF},
{101,0x00,0xFF},
{102,0x00,0xFF},
{103,0x0D,0xFF},
{104,0x00,0xFF},
{105,0x00,0xFF},
{106,0x80,0xBF},
{107,0x00,0xFF},
{108,0x00,0xFF},
{109,0x00,0xFF},
{110,0x40,0xFF},
{111,0x00,0xFF},
{112,0x00,0xFF},
{113,0x00,0xFF},
{114,0x40,0xFF},
{115,0x00,0xFF},
{116,0x80,0xFF},
{117,0x00,0xFF},
{118,0x40,0xFF},
{119,0x00,0xFF},
{120,0x00,0xFF},
{121,0x00,0xFF},
{122,0x40,0xFF},
{123,0x00,0xFF},
{124,0x00,0xFF},
{125,0x00,0xFF},
{126,0x00,0xFF},
{127,0x00,0xFF},
{128,0x00,0xFF},
{129,0x00,0x0F},
{130,0x00,0x0F},
{131,0x00,0xFF},
{132,0x00,0xFF},
{133,0x00,0xFF},
{134,0x00,0xFF},
{135,0x00,0xFF},
{136,0x00,0xFF},
{137,0x00,0xFF},
{138,0x00,0xFF},
{139,0x00,0xFF},
{140,0x00,0xFF},
{141,0x00,0xFF},
{142,0x00,0xFF},
{143,0x00,0xFF},
{144,0x00,0xFF},
{145,0x00,0x00},
{146,0xFF,0x00},
{147,0x00,0x00},
{148,0x00,0x00},
{149,0x00,0x00},
{150,0x00,0x00},
{151,0x00,0x00},
{152,0x00,0xFF},
{153,0x00,0xFF},
{154,0x00,0xFF},
{155,0x00,0xFF},
{156,0x00,0xFF},
{157,0x00,0xFF},
{158,0x00,0x0F},
{159,0x00,0x0F},
{160,0x00,0xFF},
{161,0x00,0xFF},
{162,0x00,0xFF},
{163,0x00,0xFF},
{164,0x00,0xFF},
{165,0x00,0xFF},
{166,0x00,0xFF},
{167,0x00,0xFF},
{168,0x00,0xFF},
{169,0x00,0xFF},
{170,0x00,0xFF},
{171,0x00,0xFF},
{172,0x00,0xFF},
{173,0x00,0xFF},
{174,0x00,0xFF},
{175,0x00,0xFF},
{176,0x00,0xFF},
{177,0x00,0xFF},
{178,0x00,0xFF},
{179,0x00,0xFF},
{180,0x00,0xFF},
{181,0x00,0x0F},
{182,0x00,0xFF},
{183,0x00,0xFF},
{184,0x00,0xFF},
{185,0x00,0xFF},
{186,0x00,0xFF},
{187,0x00,0xFF},
{188,0x00,0xFF},
{189,0x00,0xFF},
{190,0x00,0xFF},
{191,0x00,0xFF},
{192,0x00,0xFF},
{193,0x00,0xFF},
{194,0x00,0xFF},
{195,0x00,0xFF},
{196,0x00,0xFF},
{197,0x00,0xFF},
{198,0x00,0xFF},
{199,0x00,0xFF},
{200,0x00,0xFF},
{201,0x00,0xFF},
{202,0x00,0xFF},
{203,0x00,0x0F},
{204,0x00,0xFF},
{205,0x00,0xFF},
{206,0x00,0xFF},
{207,0x00,0xFF},
{208,0x00,0xFF},
{209,0x00,0xFF},
{210,0x00,0xFF},
{211,0x00,0xFF},
{212,0x00,0xFF},
{213,0x00,0xFF},
{214,0x00,0xFF},
{215,0x00,0xFF},
{216,0x00,0xFF},
{217,0x00,0xFF},
{218,0x00,0x00},
{219,0x00,0x00},
{220,0x00,0x00},
{221,0x0D,0x00},
{222,0x00,0x00},
{223,0x00,0x00},
{224,0xF4,0x00},
{225,0xF0,0x00},
{226,0x00,0x00},
{227,0x00,0x00},
{228,0x00,0x00},
{229,0x00,0x00},
{231,0x00,0x00},
{232,0x00,0x00},
{233,0x00,0x00},
{234,0x00,0x00},
{235,0x00,0x00},
{236,0x00,0x00},
{237,0x00,0x00},
{238,0x14,0x00},
{239,0x00,0x00},
{240,0x00,0x00},
{242,0x00,0x02},
{243,0xF0,0x00},
{244,0x00,0x00},
{245,0x00,0x00},
{247,0x00,0x00},
{248,0x00,0x00},
{249,0xA8,0x00},
{250,0x00,0x00},
{251,0x84,0x00},
{252,0x00,0x00},
{253,0x00,0x00},
{254,0x00,0x00},
{255, 1, 0xFF}, // set page bit to 1
{ 0,0x00,0x00},
{ 1,0x00,0x00},
{ 2,0x00,0x00},
{ 3,0x00,0x00},
{ 4,0x00,0x00},
{ 5,0x00,0x00},
{ 6,0x00,0x00},
{ 7,0x00,0x00},
{ 8,0x00,0x00},
{ 9,0x00,0x00},
{ 10,0x00,0x00},
{ 11,0x00,0x00},
{ 12,0x00,0x00},
{ 13,0x00,0x00},
{ 14,0x00,0x00},
{ 15,0x00,0x00},
{ 16,0x00,0x00},
{ 17,0x01,0x00},
{ 18,0x00,0x00},
{ 19,0x00,0x00},
{ 20,0x90,0x00},
{ 21,0x31,0x00},
{ 22,0x00,0x00},
{ 23,0x00,0x00},
{ 24,0x01,0x00},
{ 25,0x00,0x00},
{ 26,0x00,0x00},
{ 27,0x00,0x00},
{ 28,0x00,0x00},
{ 29,0x00,0x00},
{ 30,0x00,0x00},
{ 31,0x00,0xFF},
{ 32,0x00,0xFF},
{ 33,0x01,0xFF},
{ 34,0x00,0xFF},
{ 35,0x00,0xFF},
{ 36,0x90,0xFF},
{ 37,0x31,0xFF},
{ 38,0x00,0xFF},
{ 39,0x00,0xFF},
{ 40,0x01,0xFF},
{ 41,0x00,0xFF},
{ 42,0x00,0xFF},
{ 43,0x00,0x0F},
{ 44,0x00,0x00},
{ 45,0x00,0x00},
{ 46,0x00,0x00},
{ 47,0x00,0xFF},
{ 48,0x00,0xFF},
{ 49,0x01,0xFF},
{ 50,0x00,0xFF},
{ 51,0x00,0xFF},
{ 52,0x90,0xFF},
{ 53,0x31,0xFF},
{ 54,0x00,0xFF},
{ 55,0x00,0xFF},
{ 56,0x01,0xFF},
{ 57,0x00,0xFF},
{ 58,0x00,0xFF},
{ 59,0x00,0x0F},
{ 60,0x00,0x00},
{ 61,0x00,0x00},
{ 62,0x00,0x00},
{ 63,0x00,0xFF},
{ 64,0x00,0xFF},
{ 65,0x01,0xFF},
{ 66,0x00,0xFF},
{ 67,0x00,0xFF},
{ 68,0x90,0xFF},
{ 69,0x31,0xFF},
{ 70,0x00,0xFF},
{ 71,0x00,0xFF},
{ 72,0x01,0xFF},
{ 73,0x00,0xFF},
{ 74,0x00,0xFF},
{ 75,0x00,0x0F},
{ 76,0x00,0x00},
{ 77,0x00,0x00},
{ 78,0x00,0x00},
{ 79,0x00,0xFF},
{ 80,0x00,0xFF},
{ 81,0x00,0xFF},
{ 82,0x00,0xFF},
{ 83,0x00,0xFF},
{ 84,0x90,0xFF},
{ 85,0x31,0xFF},
{ 86,0x00,0xFF},
{ 87,0x00,0xFF},
{ 88,0x01,0xFF},
{ 89,0x00,0xFF},
{ 90,0x00,0xFF},
{ 91,0x00,0x0F},
{ 92,0x00,0x00},
{ 93,0x00,0x00},
{ 94,0x00,0x00},
{255, 0, 0xFF} };
unsigned char hello = 1;
void write_Si5338(unsigned char address, unsigned char value)
{
unsigned char txBuf[2];
txBuf[0] = address;
txBuf[1] = value;
HAL_I2C_Master_Transmit(&handleI2C, 0xE0, &txBuf, 2, 100);
//HAL_I2C_Mem_Write(&handleI2C, 0xE0, address, 1, value, 1, 100);
// Wire.beginTransmission(SI5338_ADDRESS);
// Wire.write(address);
// //delay(10);
// Wire.write(value);
// Wire.endTransmission();
// delay(10);
// Serial.print(address, DEC);
// Serial.print(" w ");
// Serial.print(value, DEC);
// Serial.print("\r\n");
}
#define MULTISYNTH0 53
void writeMultiSynthParameters(int multisynth, unsigned long a, unsigned long b, unsigned long c)
{
unsigned long long msx_p1 = ((a * c + b) * 128) / c - 512;
unsigned long long msx_p2 = (b * 128) % c;
unsigned long long msx_p3 = c;
write_Si5338(multisynth, ( msx_p1 & 0xFF));
write_Si5338(multisynth + 1, ( msx_p1 >> 8) & 0xFF);
write_Si5338(multisynth + 2, (( msx_p1 >> 16) & 0b00000011) + (( msx_p2 << 2 ) & 0b11111100));
write_Si5338(multisynth + 3, ( msx_p2 >> 6 ) & 0xFF);
write_Si5338(multisynth + 4, ( msx_p2 >> 14 ) & 0xFF);
write_Si5338(multisynth + 5, ( msx_p2 >> 22 ) & 0xFF);
write_Si5338(multisynth + 6, ( msx_p3 & 0xFF));
write_Si5338(multisynth + 7, ( msx_p3 >> 8) & 0xFF);
write_Si5338(multisynth + 8, ( msx_p3 >> 16) & 0xFF);
write_Si5338(multisynth + 9, ( msx_p3 >> 24) & 0b00111111);
}
unsigned char read_Si5338(unsigned char address, int increment)
{
unsigned char retVal = 0;
HAL_I2C_Master_Transmit(&handleI2C, 0xE0, &address, 1, 100);
HAL_I2C_Master_Receive(&handleI2C, 0xE0, &retVal, 1, 100);
// Wire.beginTransmission(SI5338_ADDRESS);
// //Wire.write(0x00);
// Wire.write(address);
// Wire.endTransmission();
//
// //delay(2);
// Wire.beginTransmission(SI5338_ADDRESS);
// Wire.requestFrom(SI5338_ADDRESS,1);
//
// while(Wire.available())
// {
// retVal = Wire.read();
// delay(10);
// Serial.print(address, DEC);
// Serial.print(" r ");
// Serial.print(retVal, DEC);
// Serial.print(" - ");
// Serial.print(Reg_Store[increment][1], DEC);
// Serial.print("\r\n");
// }
return retVal;
}
//add, val, mask
void sendRegToSi5338(int increment)
{
unsigned char addr = Reg_Store[increment][0];
unsigned char data = Reg_Store[increment][1];
unsigned char mask = Reg_Store[increment][2];
// unsigned char addr = Reg_Store[increment].Reg_Addr;
// unsigned char data = Reg_Store[increment].Reg_Val;
// unsigned char mask = Reg_Store[increment].Reg_Mask;
// ignore registers with masks of 0x00
if(mask != 0x00){
if(mask == 0xFF){
// do a regular I2C write to the register
// at addr with the desired data value
write_Si5338(addr, data);
} else {
// do a read-modify-write using I2C and
// bit-wise operations
// get the current value from the device at the
// register located at addr
unsigned char curr_val = read_Si5338(addr, increment);
// clear the bits that are allowed to be
// accessed in the current value of the register
unsigned char clear_curr_val = curr_val & (~ mask);
// clear the bits in the desired data that
// are not allowed to be accessed
unsigned char clear_new_val = data & mask;
// combine the cleared values to get the new
// value to write to the desired register
unsigned char combined = clear_curr_val | clear_new_val;
write_Si5338(addr, combined);
}
} else {
//Serial.println("skip");
}
}
void i2cSetup() {
// put your setup code here, to run once:
//pinMode(A3, INPUT);
//digitalWrite(A3, LOW);
//Serial.begin(115200);
//Serial.write("\n\r\n\rHi Michael, you can do this\n\r");
//Wire.begin();
//delay(50);
////This part is working correctly!
// for(int i = 0; i < NUM_REGS_MAX; i++)
// {
// Serial.println(Reg_Store[i][1], HEX);
// }
//Serial.println("and now this part");
//Serial.println("and now THIS part");
//delay(2000);
//write_Si5338(230, 1 << 4);
//write_Si5338(241, 1 << 7);
write_Si5338(230, 0x10); //OEB_ALL = 1
write_Si5338(241, 0xE5); //DIS_LOL = 1
//delay(100);
for(int i = 0; i < NUM_REGS_MAX; i++)
{
sendRegToSi5338(i);
}
//for(int counter=0; counter<NUM_REGS_MAX; counter++){
//unsigned char curr = Reg_Store[counter];
//if(curr.Reg_Mask != 0x00) {
// if(curr.Reg_Mask == 0xFF) {
// // do a write transaction only
// // since the mask is all ones
// I2C_ByteWrite(curr.Reg_Addr, curr.Reg_Val);
// } else {
// //do a read-modify-write
// curr_chip_val = I2C_ByteRead(curr.Reg_Addr);
// clear_curr_val = curr_chip_val & ~curr.Reg_Mask;
// clear_new_val = curr.Reg_Val & curr.Reg_Mask;
// combined = clear_new_val | clear_curr_val;
// I2C_ByteWrite(curr.Reg_Addr, combined);
// }
// }
//}
// write_Si5338(49, 0 << 7);
// write_Si5338(246, 1 << 1);
// delay(30);
// write_Si5338(241, 0 << 7);
// //skipped some steps
//
// write_Si5338(230, 0 << 4);
// check LOS alarm for the xtal input
// on IN1 and IN2 (and IN3 if necessary) -
// change this mask if using inputs on IN4, IN5, IN6
unsigned char reg = read_Si5338(218,1) & LOS_MASK;
while(reg != 0){
reg = read_Si5338(218, 1) & LOS_MASK;
}
//delay(100);
write_Si5338(49, read_Si5338(49,1) & 0x7F); //FCAL_OVRD_EN = 0
write_Si5338(246, 2); //soft reset
write_Si5338(241, 0x65); //DIS_LOL = 0
// wait for Si5338 to be ready after calibration (ie, soft reset)
//delay(50);
//make sure the device locked by checking PLL_LOL and SYS_CAL
reg = read_Si5338(218,1) & LOCK_MASK;
while(reg != 0){
reg = read_Si5338(218,1) & LOCK_MASK;
}
//delay(100);
//copy FCAL values
write_Si5338(45, read_Si5338(235,1));
write_Si5338(46, read_Si5338(236,1));
// clear bits 0 and 1 from 47 and
// combine with bits 0 and 1 from 237
reg = (read_Si5338(47,1) & 0xFC) | (read_Si5338(237,1) & 3);
write_Si5338(47, reg);
write_Si5338(49, read_Si5338(49,1) | 0x80); // FCAL_OVRD_EN = 1
write_Si5338(230, 0x00); // OEB_ALL = 0
//Serial.println("and that's it");
// for(int i = 0; i < NUM_REGS_MAX; i++)
// {
// read_Si5338(i, i);
//
// }
//while(1);
write_Si5338(31, 0xC1); //output driver off?
//Start us at a known frequency (in this case 14.06 which equals 7.03)
//TODO: Make this start at whatever the unit is supposed to power up at. Not hard coded
writeMultiSynthParameters(MULTISYNTH0, 201, 697, 703);
write_Si5338(31, 0xC0); //output driver off?
}
unsigned long long vcoFreq = 2840000000;
double correctionFactor = 1;
void setFreq(unsigned long frequency)
{
//void i2cLoop() {
// put your main code here, to run repeatedly:
//delay(400);
//write_Si5338(31, 0xC1); //output driver off?
//long integer = 8;
//long neumerator = 0;
//do
//{
//
// writeMultiSynthParameters(MULTISYNTH0, integer, neumerator, 10000UL);
// //neumerator += 1000;
// //if(neumerator > 9999)
// //{
// // neumerator = 0;
// integer++;
//
// //}
// if( integer >= 500) integer = 8;
//
//} while (true);
//double desiredFrequency = 150.5;
//double measuredFrequency = 150.48806;
// correctionFactor = desiredFrequency/measuredFrequency;
// frequency *= correctionFactor;
frequency *= 2; //because the flipflops will devide it back down by 2
if(frequency < 5000000) return;
if(frequency > 350000000) return;
unsigned long integer = vcoFreq / frequency;
//if((integer % 2) != 0) integer++;
unsigned long remainder = vcoFreq % frequency;
//do
//{
//writeMultiSynthParameters(MULTISYNTH0, integer, neumerator, 10000UL);
//neumerator += 1000;
//if(neumerator > 9999)
//{
// neumerator = 0;
// integer++;
//}
// if( integer >= 500) integer = 8;
//neumerator = (analogRead(A3) * 10); //578914 referal nu 801 435 7764 john thank you
//integer = (analogRead(A2) /10) + 150;
//
//} while (true);
//write_Si5338(31, 0xC0); //output driver off?
//delay(400);
while(frequency > 100000) //This value should be fine tuned. I thought the numerator and denominator could be 30 bits, but it seems to be less than 24
{
remainder /= 2;
frequency /= 2;
}
//write_Si5338(31, 0xC1); //output driver off?
writeMultiSynthParameters(MULTISYNTH0, integer, remainder , frequency);
//writeMultiSynthParameters(MULTISYNTH0, 232, 44960 , 122220);
//writeMultiSynthParameters(MULTISYNTH0, integer, /*neumerator*/ 0 , 1000000UL);
//write_Si5338(31, 0xC0); //output driver off?
}

View File

@ -270,6 +270,7 @@ void setupPeripheralPower()
__GPIOE_CLK_ENABLE();
__DMA1_CLK_ENABLE();
__DMA2_CLK_ENABLE();
__I2C2_CLK_ENABLE();
}
void configDMA(SPI_HandleTypeDef *hspi)
@ -375,7 +376,7 @@ int isFwd;
{
if(!displayUpdating)
{
Position2 = (HAL_GPIO_ReadPin(encoderB.port, encoderB.pin) * 2) + HAL_GPIO_ReadPin(encoderA.port, encoderA.pin);;
Position2 = (HAL_GPIO_ReadPin(encoderB.port, encoderB.pin) * 2) + HAL_GPIO_ReadPin(encoderBee.port, encoderBee.pin);;
if (Position2 != Position)
{
isFwd = ((Position == 0) && (Position2 == 1)) || ((Position == 1) && (Position2 == 3)) ||
@ -668,16 +669,16 @@ void setGainPot(uint8_t a, uint8_t b)
HAL_GPIO_WritePin(GAIN_POT_NSS.port, GAIN_POT_NSS.pin, 0);
//choose first register
HAL_GPIO_WritePin(GAIN_POT_MOSI.port, GAIN_POT_MOSI.pin, 0);
HAL_GPIO_WritePin(GAIN_POT_SCLK.port, GAIN_POT_SCLK.pin, 0);
HAL_GPIO_WritePin(GAIN_POT_SCLK.port, GAIN_POT_SCLK.pin, 1);
HAL_GPIO_WritePin(FILTER_GAIN_POT_MOSI.port, FILTER_GAIN_POT_MOSI.pin, 0);
HAL_GPIO_WritePin(FILTER_GAIN_POT_SCLK.port, FILTER_GAIN_POT_SCLK.pin, 0);
HAL_GPIO_WritePin(FILTER_GAIN_POT_SCLK.port, FILTER_GAIN_POT_SCLK.pin, 1);
for(i = 0; i < 8; i++)
{
HAL_GPIO_WritePin(GAIN_POT_MOSI.port, GAIN_POT_MOSI.pin, (a >> (7-i)) & 1);
HAL_GPIO_WritePin(GAIN_POT_SCLK.port, GAIN_POT_SCLK.pin, 0);
HAL_GPIO_WritePin(GAIN_POT_SCLK.port, GAIN_POT_SCLK.pin, 1);
HAL_GPIO_WritePin(FILTER_GAIN_POT_MOSI.port, FILTER_GAIN_POT_MOSI.pin, (a >> (7-i)) & 1);
HAL_GPIO_WritePin(FILTER_GAIN_POT_SCLK.port, FILTER_GAIN_POT_SCLK.pin, 0);
HAL_GPIO_WritePin(FILTER_GAIN_POT_SCLK.port, FILTER_GAIN_POT_SCLK.pin, 1);
}
HAL_GPIO_WritePin(GAIN_POT_NSS.port, GAIN_POT_NSS.pin, 1);
@ -685,16 +686,16 @@ void setGainPot(uint8_t a, uint8_t b)
HAL_GPIO_WritePin(GAIN_POT_NSS.port, GAIN_POT_NSS.pin, 0);
//choose second register
HAL_GPIO_WritePin(GAIN_POT_MOSI.port, GAIN_POT_MOSI.pin, 1);
HAL_GPIO_WritePin(GAIN_POT_SCLK.port, GAIN_POT_SCLK.pin, 0);
HAL_GPIO_WritePin(GAIN_POT_SCLK.port, GAIN_POT_SCLK.pin, 1);
HAL_GPIO_WritePin(FILTER_GAIN_POT_MOSI.port, FILTER_GAIN_POT_MOSI.pin, 1);
HAL_GPIO_WritePin(FILTER_GAIN_POT_SCLK.port, FILTER_GAIN_POT_SCLK.pin, 0);
HAL_GPIO_WritePin(FILTER_GAIN_POT_SCLK.port, FILTER_GAIN_POT_SCLK.pin, 1);
for(i = 0; i < 8; i++)
{
HAL_GPIO_WritePin(GAIN_POT_MOSI.port, GAIN_POT_MOSI.pin, (b >> (7-i)) & 1);
HAL_GPIO_WritePin(GAIN_POT_SCLK.port, GAIN_POT_SCLK.pin, 0);
HAL_GPIO_WritePin(GAIN_POT_SCLK.port, GAIN_POT_SCLK.pin, 1);
HAL_GPIO_WritePin(FILTER_GAIN_POT_MOSI.port, FILTER_GAIN_POT_MOSI.pin, (b >> (7-i)) & 1);
HAL_GPIO_WritePin(FILTER_GAIN_POT_SCLK.port, FILTER_GAIN_POT_SCLK.pin, 0);
HAL_GPIO_WritePin(FILTER_GAIN_POT_SCLK.port, FILTER_GAIN_POT_SCLK.pin, 1);
}
HAL_GPIO_WritePin(GAIN_POT_NSS.port, GAIN_POT_NSS.pin, 1);
@ -708,7 +709,6 @@ USART1_IRQHandler(void)
}
GPIO_InitTypeDef GPIO_InitStruct;
__IO ITStatus UartReady = RESET;
uint8_t aTxBuffer[] = "Chris a baby! ";
@ -716,38 +716,58 @@ uint8_t aRxBuffer[256];
void configUartPeripheral()
{
// //Enable Clocks
// __GPIOB_CLK_ENABLE();
// __USART1_CLK_ENABLE();
//
__GPIOC_CLK_ENABLE();
__USART6_CLK_ENABLE();
GPIO_InitTypeDef GPIO_InitStruct;
// //Setup TX Pin
// GPIO_InitStruct.Pin = GPIO_PIN_6;
// GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
// GPIO_InitStruct.Pull = GPIO_NOPULL;
// GPIO_InitStruct.Speed = GPIO_SPEED_FAST;
// GPIO_InitStruct.Alternate = GPIO_AF7_USART1;
//
// HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
//
// //Setup RX Pin
// //It doesn't get set as an input?
// GPIO_InitStruct.Pin = GPIO_PIN_7;
// GPIO_InitStruct.Alternate = GPIO_AF7_USART1;
//
// HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
//
GPIO_InitStruct.Pin = RX_TO_GPS.pin;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FAST;
GPIO_InitStruct.Alternate = GPIO_AF8_USART6;
HAL_GPIO_Init(RX_TO_GPS.port, &GPIO_InitStruct);
//Setup RX Pin
//It doesn't get set as an input?
GPIO_InitStruct.Pin = TX_FROM_GPS.pin;
GPIO_InitStruct.Alternate = GPIO_AF8_USART6;
HAL_GPIO_Init(TX_FROM_GPS.port, &GPIO_InitStruct);
// //Configure NVIC
// HAL_NVIC_SetPriority(USART1_IRQn, 0, 1);
// HAL_NVIC_EnableIRQ(USART1_IRQn);
//
// UartHandle.Instance = USART1;
// UartHandle.Init.BaudRate = 9600;
// UartHandle.Init.WordLength = UART_WORDLENGTH_8B;
// UartHandle.Init.StopBits = UART_STOPBITS_1;
// UartHandle.Init.Parity = UART_PARITY_NONE;
// UartHandle.Init.HwFlowCtl = UART_HWCONTROL_NONE;
// UartHandle.Init.Mode = UART_MODE_TX_RX;
UartHandle.Instance = USART6;
UartHandle.Init.BaudRate = 9600;
UartHandle.Init.WordLength = UART_WORDLENGTH_8B;
UartHandle.Init.StopBits = UART_STOPBITS_1;
UartHandle.Init.Parity = UART_PARITY_NONE;
UartHandle.Init.HwFlowCtl = UART_HWCONTROL_NONE;
UartHandle.Init.Mode = UART_MODE_TX_RX;
UartHandle.Init.OverSampling = UART_OVERSAMPLING_16;
if(HAL_UART_Init(&UartHandle) != HAL_OK)
{
trace_puts("UART didn't init rightly.");
}
TinyGPS_init();
// while(1)
// {
// if(HAL_UART_Receive(&UartHandle, (uint8_t *)aRxBuffer, 256, 5000) != HAL_OK)
// {
// trace_puts("UART recieve didn't work. No sir.");
// } else {
// trace_puts(aRxBuffer);
// for(int i = 0; i < 256; i++)
// TinyGPS_encode(aRxBuffer[i]);
//
// HAL_UART_Init(&UartHandle);
// }
// }
}
@ -795,6 +815,58 @@ main(int argc, char* argv[])
configDMA(&SpiHandle );
//I2C_HandleTypeDef hi2c;
//HAL_I2C_MspInit(&hi2c);
//__HAL_I2C_DISABLE(I2C2);
clearStuckBusyFlag();
handleI2C.Instance = I2C2;
HAL_I2C_DeInit(&handleI2C);
handleI2C.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
handleI2C.Init.ClockSpeed = 400000;
handleI2C.Init.DualAddressMode = I2C_DUALADDRESS_DISABLED;
handleI2C.Init.DutyCycle = I2C_DUTYCYCLE_16_9;
handleI2C.Init.GeneralCallMode = I2C_GENERALCALL_DISABLED;
handleI2C.Init.NoStretchMode = I2C_NOSTRETCH_DISABLED;
handleI2C.Init.OwnAddress1 = 0x30F;
handleI2C.Init.OwnAddress2 = 0xFE;
if(HAL_I2C_Init(&handleI2C) != HAL_OK)
{
trace_puts("I2C didn't Init correctly");
}
//handleI2C.Instance->SR2 = 0; //What the heck is wrong with this thing?!
//clearStuckBusyFlag();
HAL_StatusTypeDef result = HAL_ERROR;
while(result!= HAL_OK)
result = HAL_I2C_IsDeviceReady(&handleI2C, (0x70 << 1), 100, 100); //We need to shift the address to the left for it to work (because of the R/W bit)
//HAL_I2C_Master_Transmit(&hi2c, 230, 0x10, 1, 1000); //write_Si5338(230, 0x10); //OEB_ALL = 1
//*handleI2C = hi2c;
//HAL_I2C_Master_Transmit(&handleI2C, 230, 0x4F, 1, 1000); //write_Si5338(230, 0x10); //OEB_ALL = 1
//HAL_I2C_Master_Transmit(handleI2C, 230, 0x4F, 1, 1000); //write_Si5338(230, 0x10); //OEB_ALL = 1
//handleI2C = &hi2c;
//HAL_I2C_Master_Transmit(&handleI2C, 230, 0x4F, 1, 1000); //write_Si5338(230, 0x10); //OEB_ALL = 1
//HAL_I2C_Master_Transmit(handleI2C, 230, 0x4F, 1, 1000); //write_Si5338(230, 0x10); //OEB_ALL = 1
i2cSetup();
//i2cLoop();
//trace_puts(( == HAL_OK ? "SI5338 Ready" : "SI5338 Not ready"));
//HAL_I2C_MspInit(&hi2c);
timer_start();
blink_led_init();
@ -829,7 +901,7 @@ main(int argc, char* argv[])
setGainPot(128, 128);
setGainPot(250, 250);
//testing Uart
configUartPeripheral();
@ -868,18 +940,20 @@ main(int argc, char* argv[])
drawWaterfall();
drawSMeter();
Adafruit_GFX_fillRect(310, 0, 3, 3, !HAL_GPIO_ReadPin(KEY1.port, KEY1.pin) ? ILI9340_RED : ILI9340_BLUE);
Adafruit_GFX_fillRect(310, 4, 3, 3, !HAL_GPIO_ReadPin(KEY2.port, KEY2.pin) ? ILI9340_RED : ILI9340_BLUE);
Adafruit_GFX_fillRect(310, 8, 3, 3, HAL_GPIO_ReadPin(TOUCH1.port, TOUCH1.pin) ? ILI9340_RED : ILI9340_BLUE);
Adafruit_GFX_fillRect(310, 12, 3, 3, HAL_GPIO_ReadPin(TOUCH2.port, TOUCH2.pin) ? ILI9340_RED : ILI9340_BLUE);
Adafruit_GFX_fillRect(310, 0, 3, 3, HAL_GPIO_ReadPin(PADDLE_THUMB_NC.port, PADDLE_THUMB_NC.pin) ? ILI9340_RED : ILI9340_BLUE);
Adafruit_GFX_fillRect(310, 4, 3, 3, HAL_GPIO_ReadPin(PADDLE_INDEX_NC.port, PADDLE_INDEX_NC.pin) ? ILI9340_RED : ILI9340_BLUE);
Adafruit_GFX_fillRect(310, 8, 3, 3, HAL_GPIO_ReadPin(PADDLE_THUMB_NO.port, PADDLE_THUMB_NO.pin) ? ILI9340_RED : ILI9340_BLUE);
Adafruit_GFX_fillRect(310, 12, 3, 3, HAL_GPIO_ReadPin(PADDLE_INDEX_NO.port, PADDLE_INDEX_NO.pin) ? ILI9340_RED : ILI9340_BLUE);
if(HAL_GPIO_ReadPin(TOUCH1.port, TOUCH1.pin))
HAL_GPIO_WritePin(RED_LED.port, RED_LED.pin, HAL_GPIO_ReadPin(GPS_PPS.port, GPS_PPS.pin));
if(!HAL_GPIO_ReadPin(PADDLE_THUMB_NO.port, PADDLE_THUMB_NO.pin))
//if(1) //I am locking it in transmit for some testing.
{
transmitting = 1;
HAL_GPIO_WritePin(DAC_MUX.port, DAC_MUX.pin, 1); //0 = speaker/earphone. 1=TX Drivers
HAL_GPIO_WritePin(RX_MUX.port, RX_MUX.pin, 1); //Active Low
HAL_GPIO_WritePin(TX_MUX.port, TX_MUX.pin, 0); //Active Low
// HAL_GPIO_WritePin(RX_MUX.port, RX_MUX.pin, 1); //Active Low
// HAL_GPIO_WritePin(TX_MUX.port, TX_MUX.pin, 0); //Active Low
HAL_GPIO_WritePin(AMP_SWITCH_A.port, AMP_SWITCH_A.pin, 1); //Route through amp.
HAL_GPIO_WritePin(AMP_SWITCH_B.port, AMP_SWITCH_B.pin, 0); //always reverse of above.
HAL_GPIO_WritePin(AMP_POWER.port, AMP_POWER.pin, 0); //0 is on.
@ -887,8 +961,8 @@ main(int argc, char* argv[])
} else {
transmitting = 0;
HAL_GPIO_WritePin(DAC_MUX.port, DAC_MUX.pin, 0); //0 = speaker/earphone. 1=TX Drivers
HAL_GPIO_WritePin(RX_MUX.port, RX_MUX.pin, 0); //Active Low
HAL_GPIO_WritePin(TX_MUX.port, TX_MUX.pin, 1); //Active Low
// HAL_GPIO_WritePin(RX_MUX.port, RX_MUX.pin, 0); //Active Low
// HAL_GPIO_WritePin(TX_MUX.port, TX_MUX.pin, 1); //Active Low
HAL_GPIO_WritePin(AMP_SWITCH_A.port, AMP_SWITCH_A.pin, 0); //Bypass amp.
HAL_GPIO_WritePin(AMP_SWITCH_B.port, AMP_SWITCH_B.pin, 1); //always reverse of above.
HAL_GPIO_WritePin(AMP_POWER.port, AMP_POWER.pin, 1); //1 is off.
@ -914,52 +988,67 @@ void drawSMeter()
enum menuItems
{
oneMhzPlace = 0,
hundredKhzPlace = 1,
tenKhzPlace = 2,
oneKhzPlace = 3,
hundredHzPlace = 4,
tenHzPlace = 5,
oneHzPlace = 6,
filterLower = 7,
filterUpper = 8,
modeMenu = 9,
volumeMenu = 10,
volumeMenuItem = 0,
modeMenuItem,
megahertzMenuItem,
hundredKilohertzMenuItem,
tenKilohertzMenuItem,
kilohertzMenuItem,
hundredHertzMenuItem,
tenHertzMenuItem,
hertzMenuItem,
filterLowMenuItem,
filterHighMenuItem
};
//enum menuItems
//{
// oneMhzPlace = 0,
// hundredKhzPlace = 1,
// tenKhzPlace = 2,
// oneKhzPlace = 3,
// hundredHzPlace = 4,
// tenHzPlace = 5,
// oneHzPlace = 6,
// filterLower = 7,
// filterUpper = 8,
// modeMenu = 9,
// volumeMenu = 10,
//};
void updateMenu()
{
switch(menuPos)
{
case oneMhzPlace:
case megahertzMenuItem:
frequencyDialMultiplier = 1000000;
updateVfo();
break;
case hundredKhzPlace:
case hundredKilohertzMenuItem:
frequencyDialMultiplier = 100000;
updateVfo();
break;
case tenKhzPlace:
case tenKilohertzMenuItem:
frequencyDialMultiplier = 10000;
updateVfo();
break;
case oneKhzPlace:
case kilohertzMenuItem:
frequencyDialMultiplier = 1000;
updateVfo();
break;
case hundredHzPlace:
case hundredHertzMenuItem:
frequencyDialMultiplier = 100;
updateVfo();
break;
case tenHzPlace:
case tenHertzMenuItem:
frequencyDialMultiplier = 10;
updateVfo();
break;
case oneHzPlace:
case hertzMenuItem:
frequencyDialMultiplier = 1;
updateVfo();
break;
case filterLower:
case filterLowMenuItem:
encoderPos = getPos();
if(encoderPos != encoderLastPos)
{
@ -971,7 +1060,7 @@ void updateMenu()
populateCoeficients(filterUpperLimit - filterLowerLimit, mode, filterLowerLimit);
}
break;
case filterUpper:
case filterHighMenuItem:
encoderPos = getPos();
if(encoderPos != encoderLastPos)
{
@ -983,7 +1072,7 @@ void updateMenu()
populateCoeficients(filterUpperLimit - filterLowerLimit, mode, filterLowerLimit);
}
break;
case modeMenu:
case modeMenuItem:
encoderPos = getPos();
if(encoderPos != encoderLastPos)
{
@ -995,7 +1084,7 @@ void updateMenu()
//Right now all this does is turns the AM decoder on and off, I guess.
}
break;
case volumeMenu:
case volumeMenuItem:
encoderPos = getPos();
if(encoderPos != encoderLastPos)
{
@ -1040,11 +1129,13 @@ enum modes
AM = 2
};
void updateDisplay(uint8_t force)
{
displayUpdating = 1;
static char freqChar[14];
static char lastFreqChar[] = {'$','$','$','$','$','$','$','$','$','$','$','$','$','$',};
static char freqChar[15];
static char lastFreqChar[] = {'$','$','$','$','$','$','$','$','$','$','$','$','$','$','$',};
//Draw elements that don't normally change. Static icons, etc.
if(force)
@ -1053,54 +1144,83 @@ void updateDisplay(uint8_t force)
Adafruit_GFX_drawColorBitmap(150, 90, bitmapMode, 40,12, MASKWHITE);
Adafruit_GFX_fillTriangle(126,119,136,124,136,114,ILI9340_WHITE);
Adafruit_GFX_drawColorBitmap(150, 136, bitmapFilter, 47,12, MASKWHITE);
drawNumber('.', freqHOffset + 16*2, freqVOffset + 0, MASKWHITE);
drawNumber('.', freqHOffset + 16*6, freqVOffset + 0, MASKWHITE);
drawNumber('.', freqHOffset + 16*3, freqVOffset + 0, MASKWHITE);
drawNumber('.', freqHOffset + 16*7, freqVOffset + 0, MASKWHITE);
Adafruit_GFX_drawColorBitmap(142, 162, bitmapSMeter, 155, 10, MASKWHITE);
//Adafruit_GFX_drawColorBitmap(320 - 45 - 2, 240 - 46 - 2, bitmapHadLogo, 45, 46, MASKWHITE);
}
sprintf(&freqChar, "%8d", vfoAFrequency);
sprintf(&freqChar, "%9d", vfoAFrequency);
//So on each of these elements, we update when the value changes, when we're forced to, when the item becomes selected, or unselected.
if(freqChar[0] != lastFreqChar[0] || force || (menuPos != menuLastPos && (menuPos == 0 || menuLastPos == 0)))
if(freqChar[0] != lastFreqChar[0]
|| force
|| (menuPos != menuLastPos && (menuPos == megahertzMenuItem
|| menuLastPos == megahertzMenuItem)))
{
drawNumber(freqChar[0], freqHOffset + 16*0, freqVOffset + 0, menuPos == 0 ? MASKRED : MASKWHITE);
drawNumber(freqChar[0], freqHOffset + 16*0, freqVOffset + 0,
menuPos == megahertzMenuItem ? MASKRED : MASKWHITE);
}
if(freqChar[1] != lastFreqChar[1] || redItems[0] || force || (menuPos != menuLastPos && (menuPos == 0 || menuLastPos == 0)))
if(freqChar[1] != lastFreqChar[1]
|| redItems[0]
|| force
|| (menuPos != menuLastPos && (menuPos == megahertzMenuItem
|| menuLastPos == megahertzMenuItem)))
{
drawNumber(freqChar[1], freqHOffset + 16*1, freqVOffset + 0, menuPos == 0 ? MASKRED : MASKWHITE);
drawNumber(freqChar[1], freqHOffset + 16*1, freqVOffset + 0,
menuPos == megahertzMenuItem ? MASKRED : MASKWHITE);
}
if(freqChar[2] != lastFreqChar[2] || force || (menuPos != menuLastPos && (menuPos == 1 || menuLastPos == 1)))
if(freqChar[2] != lastFreqChar[2]
|| force
|| (menuPos != menuLastPos && (menuPos == megahertzMenuItem
|| menuLastPos == megahertzMenuItem)))
{
drawNumber(freqChar[2], freqHOffset + 16*3, freqVOffset + 0, menuPos == 1 ? MASKRED : MASKWHITE);
drawNumber(freqChar[2], freqHOffset + 16*2, freqVOffset + 0,
menuPos == megahertzMenuItem ? MASKRED : MASKWHITE);
}
if(freqChar[3] != lastFreqChar[3] || force || (menuPos != menuLastPos && (menuPos == 2 || menuLastPos == 2)))
if(freqChar[3] != lastFreqChar[3]
|| force
|| (menuPos != menuLastPos && (menuPos == hundredKilohertzMenuItem
|| menuLastPos == hundredKilohertzMenuItem)))
{
drawNumber(freqChar[3], freqHOffset + 16*4, freqVOffset + 0, menuPos == 2 ? MASKRED : MASKWHITE);
drawNumber(freqChar[3], freqHOffset + 16*4, freqVOffset + 0,
menuPos == hundredKilohertzMenuItem ? MASKRED : MASKWHITE);
}
if(freqChar[4] != lastFreqChar[4] || force || (menuPos != menuLastPos && (menuPos == 3 || menuLastPos == 3)))
if(freqChar[4] != lastFreqChar[4]
|| force
|| (menuPos != menuLastPos && (menuPos == tenKilohertzMenuItem
|| menuLastPos == tenKilohertzMenuItem)))
{
drawNumber(freqChar[4], freqHOffset + 16*5, freqVOffset + 0, menuPos == 3 ? MASKRED : MASKWHITE);
drawNumber(freqChar[4], freqHOffset + 16*5, freqVOffset + 0,
menuPos == tenKilohertzMenuItem ? MASKRED : MASKWHITE);
}
if(freqChar[5] != lastFreqChar[5] || force || (menuPos != menuLastPos && (menuPos == 4 || menuLastPos == 4)))
if(freqChar[5] != lastFreqChar[5] || force || (menuPos != menuLastPos && (menuPos == kilohertzMenuItem || menuLastPos == kilohertzMenuItem)))
{
drawNumber(freqChar[5], freqHOffset + 16*7, freqVOffset + 0, menuPos == 4 ? MASKRED : MASKWHITE);
drawNumber(freqChar[5], freqHOffset + 16*6, freqVOffset + 0, menuPos == kilohertzMenuItem ? MASKRED : MASKWHITE);
}
if(freqChar[6] != lastFreqChar[6] || force || (menuPos != menuLastPos && (menuPos == 5 || menuLastPos == 5)))
if(freqChar[6] != lastFreqChar[6] || force || (menuPos != menuLastPos && (menuPos == hundredHertzMenuItem || menuLastPos == hundredHertzMenuItem)))
{
drawNumber(freqChar[6], freqHOffset + 16*8, freqVOffset + 0, menuPos == 5 ? MASKRED : MASKWHITE);
drawNumber(freqChar[6], freqHOffset + 16*8, freqVOffset + 0, menuPos == hundredHertzMenuItem ? MASKRED : MASKWHITE);
}
if(freqChar[7] != lastFreqChar[7] || force || (menuPos != menuLastPos && (menuPos == 6 || menuLastPos == 6)))
if(freqChar[7] != lastFreqChar[7] || force || (menuPos != menuLastPos && (menuPos == tenHertzMenuItem || menuLastPos == tenHertzMenuItem)))
{
drawNumber(freqChar[7], freqHOffset + 16*9, freqVOffset + 0, menuPos == 6 ? MASKRED : MASKWHITE);
drawNumber(freqChar[7], freqHOffset + 16*9, freqVOffset + 0, menuPos == tenHertzMenuItem ? MASKRED : MASKWHITE);
}
if(freqChar[8] != lastFreqChar[8] || force || (menuPos != menuLastPos && (menuPos == hertzMenuItem || menuLastPos == hertzMenuItem)))
{
drawNumber(freqChar[8], freqHOffset + 16*10, freqVOffset + 0, menuPos == hertzMenuItem ? MASKRED : MASKWHITE);
}
vfoALastFreq = vfoAFrequency;
strcpy(lastFreqChar, freqChar);
int redrawFilterBar = 0;
if(mode != modeLast || filterLowerLimit != filterLastLowerLimit || force || (menuPos != menuLastPos && (menuPos == 7 || menuLastPos == 7)))
if(mode != modeLast
|| filterLowerLimit != filterLastLowerLimit
|| force
|| (menuPos != menuLastPos && (menuPos == filterLowMenuItem
|| menuLastPos == filterLowMenuItem)))
{
sprintf(&freqChar, "%4d", filterLowerLimit * 40);
//Adafruit_GFX_setTextSize(2);
@ -1110,7 +1230,7 @@ void updateDisplay(uint8_t force)
for(i = 0; i < 4; i++)
{
//Adafruit_GFX_write(freqChar[i]);
drawNumberSmall(freqChar[i], 205 + (i * 9), 137, menuPos == 7 ? MASKRED : MASKWHITE);
drawNumberSmall(freqChar[i], 205 + (i * 9), 137, menuPos == filterLowMenuItem ? MASKRED : MASKWHITE);
}
//Adafruit_GFX_setTextSize(3);
@ -1118,7 +1238,11 @@ void updateDisplay(uint8_t force)
filterLastLowerLimit = filterLowerLimit;
}
if(mode != modeLast || filterUpperLimit != filterLastUpperLimit || force || (menuPos != menuLastPos && (menuPos == 8 || menuLastPos == 8)))
if(mode != modeLast
|| filterUpperLimit != filterLastUpperLimit
|| force
|| (menuPos != menuLastPos && (menuPos == filterHighMenuItem
|| menuLastPos == filterHighMenuItem)))
{
sprintf(&freqChar, "%-4d", filterUpperLimit * 40);
//Adafruit_GFX_setTextSize(2);
@ -1128,7 +1252,7 @@ void updateDisplay(uint8_t force)
for(i = 0; i < 4; i++)
{
//Adafruit_GFX_write(freqChar[i]);
drawNumberSmall(freqChar[i], 250 + (i * 9), 137, menuPos == 8 ? MASKRED : MASKWHITE);
drawNumberSmall(freqChar[i], 250 + (i * 9), 137, menuPos == filterHighMenuItem ? MASKRED : MASKWHITE);
}
//Adafruit_GFX_setTextSize(3);
@ -1137,14 +1261,14 @@ void updateDisplay(uint8_t force)
}
if(afGainLast != afGain || force || (menuPos != menuLastPos && (menuPos == volumeMenu || menuLastPos == volumeMenu)))
if(afGainLast != afGain || force || (menuPos != menuLastPos && (menuPos == volumeMenuItem || menuLastPos == volumeMenuItem)))
{
sprintf(&freqChar, "%-4f", afGain * 100);
int i;
for(i = 0; i < 4; i++)
{
//Adafruit_GFX_write(freqChar[i]);
drawNumberSmall(freqChar[i], 250 + (i * 9), 10, menuPos == volumeMenu ? MASKRED : MASKWHITE);
drawNumberSmall(freqChar[i], 250 + (i * 9), 10, menuPos == volumeMenuItem ? MASKRED : MASKWHITE);
}
afGainLast = afGain;
@ -1174,18 +1298,21 @@ void updateDisplay(uint8_t force)
}
if(mode != modeLast || force || (menuPos != menuLastPos && (menuPos == 9 || menuLastPos == 9)))
if(mode != modeLast
|| force
|| (menuPos != menuLastPos && (menuPos == modeMenuItem
|| menuLastPos == modeMenuItem)))
{
switch(mode)
{
case LSB:
Adafruit_GFX_drawColorBitmap(196, 91, bitmapLSB, 28, 9, menuPos == 9 ? MASKRED : MASKWHITE);
Adafruit_GFX_drawColorBitmap(196, 91, bitmapLSB, 28, 9, menuPos == modeMenuItem ? MASKRED : MASKWHITE);
break;
case USB:
Adafruit_GFX_drawColorBitmap(196, 91, bitmapUSB, 28, 9, menuPos == 9 ? MASKRED : MASKWHITE);
Adafruit_GFX_drawColorBitmap(196, 91, bitmapUSB, 28, 9, menuPos == modeMenuItem ? MASKRED : MASKWHITE);
break;
case AM:
Adafruit_GFX_drawColorBitmap(196, 91, bitmapAM, 28, 9, menuPos == 9 ? MASKRED : MASKWHITE);
Adafruit_GFX_drawColorBitmap(196, 91, bitmapAM, 28, 9, menuPos == modeMenuItem ? MASKRED : MASKWHITE);
break;
}
@ -1426,8 +1553,8 @@ void updateVfo()
vfoAFrequency += frequencyDialMultiplier * (encoderLastPos - encoderPos);
if(vfoAFrequency < 1) vfoAFrequency = 1;
if(vfoAFrequency > 37500000) vfoAFrequency = 37500000;
if(vfoAFrequency < 2500000) vfoAFrequency = 2500000; //Currently, the code can only corectly drive down to 5MHz/2 = 2.5MHz
if(vfoAFrequency > 175000000) vfoAFrequency = 175000000; //Currently, the code can only correctly drive up to 350MHz/2 = 175MHz
encoderLastPos = encoderPos;
}

View File

@ -22,28 +22,28 @@ void spi_init(void)
__SPI1_CLK_ENABLE();
// SPI2 SCK and MOSI
gpioInitStructure.Pin = SPI1_SCK.pin;
gpioInitStructure.Pin = LCD_SCK.pin;
gpioInitStructure.Speed = GPIO_SPEED_FAST;
gpioInitStructure.Mode = GPIO_MODE_AF_PP;
gpioInitStructure.Alternate = GPIO_AF5_SPI1;
gpioInitStructure.Pull = GPIO_NOPULL;
//gpioInitStructure.Alternate = 1;
HAL_GPIO_Init(SPI1_SCK.port, &gpioInitStructure);
HAL_GPIO_Init(LCD_SCK.port, &gpioInitStructure);
gpioInitStructure.Pin = SPI1_MOSI.pin;
gpioInitStructure.Pin = LCD_MOSI.pin;
gpioInitStructure.Speed = GPIO_SPEED_FAST;
gpioInitStructure.Mode = GPIO_MODE_AF_PP;
gpioInitStructure.Pull = GPIO_NOPULL;
gpioInitStructure.Alternate = GPIO_AF5_SPI1;
HAL_GPIO_Init(SPI1_MOSI.port, &gpioInitStructure);
HAL_GPIO_Init(LCD_MOSI.port, &gpioInitStructure);
// SPI2 MISO
gpioInitStructure.Pin = SPI1_MISO.pin;
gpioInitStructure.Pin = LCD_MISO.pin;
gpioInitStructure.Speed = GPIO_SPEED_FAST;
gpioInitStructure.Mode = GPIO_MODE_INPUT;
gpioInitStructure.Pull = GPIO_PULLUP;
gpioInitStructure.Alternate = GPIO_AF5_SPI1;
HAL_GPIO_Init(SPI1_MISO.port, &gpioInitStructure);
HAL_GPIO_Init(LCD_MISO.port, &gpioInitStructure);
// RFID NSS
gpioInitStructure.Pin = LCD_NSS.pin;