@@ -42,6 +42,15 @@ TMainForm = class(TForm)
4242 MenuFT232SPI30Mhz: TMenuItem;
4343 MenuFT232SPI6Mhz: TMenuItem;
4444 MenuHWCH347: TMenuItem;
45+ MenuCH347SPIClock: TMenuItem;
46+ MenuCH347SPIClock468_75KHz: TMenuItem;
47+ MenuCH347SPIClock60MHz: TMenuItem;
48+ MenuCH347SPIClock30MHz: TMenuItem;
49+ MenuCH347SPIClock15MHz: TMenuItem;
50+ MenuCH347SPIClock7_5MHz: TMenuItem;
51+ MenuCH347SPIClock3_75MHz: TMenuItem;
52+ MenuCH347SPIClock1_875MHz: TMenuItem;
53+ MenuCH347SPIClock937_5KHz: TMenuItem;
4554 MenuSendAB: TMenuItem;
4655 StartAddressEdit: TEdit;
4756 GroupChipSettings: TGroupBox;
@@ -514,6 +523,18 @@ function SetSPISpeed(OverrideSpeed: byte): integer;
514523 if MainForm.MenuFT232SPI6Mhz.Checked then Speed := MainForm.MenuFT232SPI6Mhz.Tag;
515524 end ;
516525
526+ if (MainForm.RadioSPI.Checked) and (AsProgrammer.Current_HW = CHW_CH347) then
527+ begin
528+ if MainForm.MenuCH347SPIClock60MHz.Checked then Speed := MainForm.MenuCH347SPIClock60MHz.Tag;
529+ if MainForm.MenuCH347SPIClock30MHz.Checked then Speed := MainForm.MenuCH347SPIClock30MHz.Tag;
530+ if MainForm.MenuCH347SPIClock15MHz.Checked then Speed := MainForm.MenuCH347SPIClock15MHz.Tag;
531+ if MainForm.MenuCH347SPIClock7_5MHz.Checked then Speed := MainForm.MenuCH347SPIClock7_5MHz.Tag;
532+ if MainForm.MenuCH347SPIClock3_75MHz.Checked then Speed := MainForm.MenuCH347SPIClock3_75MHz.Tag;
533+ if MainForm.MenuCH347SPIClock1_875MHz.Checked then Speed := MainForm.MenuCH347SPIClock1_875MHz.Tag;
534+ if MainForm.MenuCH347SPIClock937_5KHz.Checked then Speed := MainForm.MenuCH347SPIClock937_5KHz.Tag;
535+ if MainForm.MenuCH347SPIClock468_75KHz.Checked then Speed := MainForm.MenuCH347SPIClock468_75KHz.Tag;
536+ end ;
537+
517538 if OverrideSpeed <> 0 then Speed := OverrideSpeed;
518539
519540 result := speed;
@@ -1730,6 +1751,7 @@ procedure SelectHW(programmer: THardwareList);
17301751 if programmer = CHW_USBASP then
17311752 begin
17321753 MainForm.MenuSPIClock.Visible:= true;
1754+ MainForm.MenuCH347SPIClock.Visible:= false;
17331755 MainForm.MenuAVRISPSPIClock.Visible:= false;
17341756 MainForm.MenuArduinoSPIClock.Visible:= false;
17351757 MainForm.MenuFT232SPIClock.Visible:= false;
@@ -1740,6 +1762,7 @@ procedure SelectHW(programmer: THardwareList);
17401762 if programmer = CHW_CH341 then
17411763 begin
17421764 MainForm.MenuSPIClock.Visible:= false;
1765+ MainForm.MenuCH347SPIClock.Visible:= false;
17431766 MainForm.MenuAVRISPSPIClock.Visible:= false;
17441767 MainForm.MenuArduinoSPIClock.Visible:= false;
17451768 MainForm.MenuFT232SPIClock.Visible:= false;
@@ -1749,6 +1772,7 @@ procedure SelectHW(programmer: THardwareList);
17491772
17501773 if programmer = CHW_CH347 then
17511774 begin
1775+ MainForm.MenuCH347SPIClock.Visible:= true;
17521776 MainForm.MenuSPIClock.Visible:= false;
17531777 MainForm.MenuAVRISPSPIClock.Visible:= false;
17541778 MainForm.MenuArduinoSPIClock.Visible:= false;
@@ -1760,6 +1784,7 @@ procedure SelectHW(programmer: THardwareList);
17601784 if programmer = CHW_AVRISP then
17611785 begin
17621786 MainForm.MenuSPIClock.Visible:= false;
1787+ MainForm.MenuCH347SPIClock.Visible:= false;
17631788 MainForm.MenuAVRISPSPIClock.Visible:= true;
17641789 MainForm.MenuArduinoSPIClock.Visible:= false;
17651790 MainForm.MenuFT232SPIClock.Visible:= false;
@@ -1770,6 +1795,7 @@ procedure SelectHW(programmer: THardwareList);
17701795 if programmer = CHW_ARDUINO then
17711796 begin
17721797 MainForm.MenuSPIClock.Visible:= false;
1798+ MainForm.MenuCH347SPIClock.Visible:= false;
17731799 MainForm.MenuAVRISPSPIClock.Visible:= false;
17741800 MainForm.MenuArduinoSPIClock.Visible:= true;
17751801 MainForm.MenuFT232SPIClock.Visible:= false;
@@ -1780,6 +1806,7 @@ procedure SelectHW(programmer: THardwareList);
17801806 if programmer = CHW_FT232H then
17811807 begin
17821808 MainForm.MenuFT232SPIClock.Visible:= true;
1809+ MainForm.MenuCH347SPIClock.Visible:= false;
17831810 MainForm.MenuSPIClock.Visible:= false;
17841811 MainForm.MenuAVRISPSPIClock.Visible:= false;
17851812 MainForm.MenuArduinoSPIClock.Visible:= false;
@@ -2908,7 +2935,7 @@ procedure TMainForm.ButtonReadClick(Sender: TObject);
29082935 Exit;
29092936 end ;
29102937
2911- AsProgrammer.Programmer.MWInit(SetSPISpeed(0 ));
2938+ if not AsProgrammer.Programmer.MWInit(SetSPISpeed(0 )) then Exit ;
29122939 TimeCounter := Time();
29132940 ReadFlashMW(RomF, StrToInt(ComboMWBitLen.Text), 0 , StrToInt(ComboChipSize.Text));
29142941
0 commit comments