Skip to content

Commit 8da57fa

Browse files
committed
Added CH347 frequency menu
1 parent 29d9745 commit 8da57fa

File tree

3 files changed

+84
-6
lines changed

3 files changed

+84
-6
lines changed

software/ch347hw.pas

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
interface
66

77
uses
8-
Classes, SysUtils, basehw, msgstr, ch347dll, ch341dll, utilfunc;
8+
Classes, SysUtils, basehw, msgstr, ch347dll, ch341dll;
99

1010
type
1111

@@ -117,7 +117,7 @@ function TCH347Hardware.SPIInit(speed: integer): boolean;
117117
with FDevSPIConfig do
118118
begin
119119
iMode:= 0;
120-
iClock:= 0;
120+
iClock:= speed;
121121
iByteOrder:= 1;
122122
iSpiWriteReadInterval:= 0;
123123
iSpiOutDefaultData:= 0;
@@ -267,7 +267,8 @@ function TCH347Hardware.I2CWriteByte(data: byte): boolean;
267267
function TCH347Hardware.MWInit(speed: integer): boolean;
268268
begin
269269
if not FDevOpened then Exit(false);
270-
270+
main.LogPrint('MICROWIRE not supported');
271+
Exit(false);
271272
end;
272273

273274
procedure TCH347Hardware.MWDeInit;

software/main.lfm

Lines changed: 52 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -699,9 +699,8 @@ object MainForm: TMainForm
699699
Width = 853
700700
Align = alBottom
701701
Lines.Strings = (
702-
'AsProgrammer v2.0.2'
702+
'AsProgrammer v2.1.0'
703703
'https://github.com/nofeletru/UsbAsp-flash'
704-
'asprogrammer@inbox.ru'
705704
)
706705
ParentFont = False
707706
PopupMenu = LogPopupMenu
@@ -749,6 +748,57 @@ object MainForm: TMainForm
749748
end
750749
object MenuSPI: TMenuItem
751750
Caption = 'SPI'
751+
object MenuCH347SPIClock: TMenuItem
752+
Caption = 'Частота'
753+
object MenuCH347SPIClock60MHz: TMenuItem
754+
AutoCheck = True
755+
Caption = '60 MHz'
756+
Checked = True
757+
RadioItem = True
758+
end
759+
object MenuCH347SPIClock30MHz: TMenuItem
760+
Tag = 1
761+
AutoCheck = True
762+
Caption = '30 MHz'
763+
RadioItem = True
764+
end
765+
object MenuCH347SPIClock15MHz: TMenuItem
766+
Tag = 2
767+
AutoCheck = True
768+
Caption = '15 MHz'
769+
RadioItem = True
770+
end
771+
object MenuCH347SPIClock7_5MHz: TMenuItem
772+
Tag = 3
773+
AutoCheck = True
774+
Caption = '7.5 MHz'
775+
RadioItem = True
776+
end
777+
object MenuCH347SPIClock3_75MHz: TMenuItem
778+
Tag = 4
779+
AutoCheck = True
780+
Caption = '3.75 MHz'
781+
RadioItem = True
782+
end
783+
object MenuCH347SPIClock1_875MHz: TMenuItem
784+
Tag = 5
785+
AutoCheck = True
786+
Caption = '1.875 MHz'
787+
RadioItem = True
788+
end
789+
object MenuCH347SPIClock937_5KHz: TMenuItem
790+
Tag = 6
791+
AutoCheck = True
792+
Caption = '937.5 KHz'
793+
RadioItem = True
794+
end
795+
object MenuCH347SPIClock468_75KHz: TMenuItem
796+
Tag = 7
797+
AutoCheck = True
798+
Caption = '468.75 KHz'
799+
RadioItem = True
800+
end
801+
end
752802
object MenuArduinoSPIClock: TMenuItem
753803
Caption = 'Частота'
754804
object MenuArduinoISP8MHz: TMenuItem

software/main.pas

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)