stcgal
stcgal copied to clipboard
Does not work with STC15L104W 7.2.5Q
I got read timeout in 'Trimming frequency ' with device STC15L104W
Without options. Shouldn't it detect this device ?
$ stcgal -D main.ihx
Waiting for MCU, please cycle power: <- Packet data: 46 B9 68 00 34 50 99 8A E2 4A BC BF 57 0A A0 AB 8B C0 F5 27 05 02 08 20 4E D4 03 C9 D4 15 64 10 6E E1 02 1D 8D 46 51 65 CA 80 14 41 46 98 BD 09 BF FF FD 65 56 D0
<- Packet data: A1
<- Packet data: C0
<- Packet data: 13
<- Packet data: 2E
<- Packet data: 59
<- Packet data: FE
^Cinterrupted
As stc15
$ stcgal -D -P stc15 main.ihx
Waiting for MCU, please cycle power: <- Packet data: 46 B9 68 00 34 50 66 71 9C C2 F7 BB 9F 00 B7 2D C0 FD 27 41 00 00 72 51 03 F2 D4 05 06 70 C2 02 1D 23 24 29 29 80 14 10 04 D6 FF C2 BF FF FF 19 05 17 01 13 2E 16
done
Target model:
Name: STC15L104W
Magic: F2D4
Code flash: 4.0 KB
EEPROM flash: 1.0 KB
Target frequency: 12.005 MHz
Target BSL version: 7.2.5Q
Target wakeup frequency: 26.225 KHz
Target options:
reset_pin_enabled=False
clock_source=internal
clock_gain=high
watchdog_por_enabled=False
watchdog_stop_idle=True
watchdog_prescale=256
low_voltage_reset=True
low_voltage_threshold=3
eeprom_lvd_inhibit=True
eeprom_erase_enabled=False
bsl_pindetect_enabled=False
por_reset_delay=long
rstout_por_state=high
uart2_passthrough=False
uart2_pin_mode=normal
cpu_core_voltage=unknown
Loading flash: 906 bytes (Intel HEX)
Trimming frequency: -> Packet data: 46 B9 6A 00 20 00 0C 00 C0 80 C0 FF C0 00 80 80 80 FF 80 00 40 80 40 FF 40 00 00 80 00 C0 00 0A D3 16
<- Packet data: 46 B9 68 00 20 00 0C 0C 07 11 11 16 39 17 F1 21 F1 2C 00 30 97 44 56 58 29 4D 8E 6C 06 7A A2 07 A9 16
-> Packet data: 46 B9 6A 00 20 00 0C BE 80 BF 80 C0 80 C1 80 C2 80 C3 80 94 40 95 40 96 40 97 40 98 40 99 40 0D 20 16
<- Packet data: 46 B9 68 00 20 00 0C 27 0A 27 19 26 D8 26 F1 27 14 27 19 47 7B 47 A3 47 E4 48 07 48 20 48 43 07 AE 16
12.005 MHz
Switching to 19200 baud: -> Packet data: 46 B9 6A 00 0E 01 97 40 FB 7F C2 80 81 04 8D 16
<- Packet data: 46 B9 68 00 07 01 00 70 16
-> Packet data: 46 B9 6A 00 0B 05 00 00 5A A5 01 79 16
Serial port error: read timeout
As stc15a. Target frequency is quite wild.
$ stcgal -D -P stc15a main.ihx
Waiting for MCU, please cycle power: <- Packet data: 46 B9 68 00 34 50 66 71 9C C2 F7 BB 9F 00 B7 2D C0 FD 27 46 00 00 72 51 03 F2 D4 05 06 70 C2 02 1D 23 24 29 29 80 14 10 04 D6 FF C2 BF FF FF 19 05 17 01 13 33 16
done
Target model:
Name: STC15L104W
Magic: F2D4
Code flash: 4.0 KB
EEPROM flash: 1.0 KB
Target frequency: 175.349 MHz
Target BSL version: 7.2Q
Target options:
reset_pin_enabled=False
watchdog_por_enabled=True
watchdog_stop_idle=True
watchdog_prescale=8
low_voltage_reset=True
low_voltage_threshold=0
eeprom_lvd_inhibit=False
eeprom_erase_enabled=True
bsl_pindetect_enabled=True
Loading flash: 906 bytes (Intel HEX)
Trimming frequency: -> Packet data: 46 B9 6A 00 0D 50 00 00 36 01 F2 D4 02 C4 16
Serial port error: read timeout
With STC-ISP the progamming seem to work and it uses baudrate 38400 . Device does not work, though. Probably a problem with my program.
Checking target MCU ...
MCU type: STC15L104W
F/W version: 7.2.5Q
Current H/W Option:
. Current system clock source is internal IRC oscillator
. Current frequency: 12.023MHz
. Wakeup Timer frequency: 26.225KHz
. Do not detect the level of P3.2 and P3.3 next download
. Power-on reset, use the extra power-on delay
. RESET pin behaves as IO pin
. Reset while detect a Low-Voltage
. Thresh voltage level of the built-in LVD : 2.42 V
. Inhibit EEPROM operation under Low-Voltage . Hardware do not enable Watch-Dog-Timer
. Watch-Dog-Timer pre-scalar : 256
. Watch-Dog-Timer stop count in idle mode
. Program can modify the Watch-Dog-Timer scalar
. Erase user EEPROM area at next download
. Do not control 485 at next download
. Do not check user password next download
. TXD is independent IO
. TXD pin as quasi-bidirectional mode after reset
. P3.3 output HIGH level after reset
. Reference voltage: 1238 mV (Range: 1150~1320mV)
. Testing time: 2019-5-17
MCU type: STC15L104W
F/W version: 7.2.5Q
...
Adjusting frequency ... [0.755"]
Adjusted frequency: 11.075MHz (0.141)
Re-handshaking ... Successful [0.126"]
Current Baudrate: 38400
Erasing MCU flash ... OK ! [0.393"]
MCU ID : F2D4C3F301B4FB
Programming user code ... OK !% [0.589"]
Programming OPTIONS ... OK ! [0.057"]
H/W Option upgrade to:
. Current system clock source is internal IRC oscillator
. Current frequency: 11.075MHz
. Do not detect the level of P3.2 and P3.3 next download
. Power-on reset, use the extra power-on delay
. RESET pin behaves as IO pin
. Reset while detect a Low-Voltage
. Thresh voltage level of the built-in LVD : 2.42 V
. Inhibit EEPROM operation under Low-Voltage . Hardware do not enable Watch-Dog-Timer
. Watch-Dog-Timer pre-scalar : 256
. Watch-Dog-Timer stop count in idle mode
. Program can modify the Watch-Dog-Timer scalar
. Do not erase user EEPROM area at next download
. Do not control 485 at next download
. Do not check user password next download
. TXD is independent IO
. TXD pin as quasi-bidirectional mode after reset
. P3.3 output HIGH level after reset
. Reference voltage: 1238 mV (Range: 1150~1320mV)
. Testing time: 2019-5-17
MCU ID : F2D4C3F301B4FB
MCU type: STC15L104W
F/W version: 7.2.5Q
Here is a usb data capture of a STC-ISP programming event. I changed frequency to 12.000Mhz at some moment.
33.311 3470 W: <Buffer 7f>
33.321 3472 W: <Buffer 7f>
33.331 3474 W: <Buffer 7f>
33.342 3476 W: <Buffer 7f>
33.352 3480 W: <Buffer 7f>
33.363 3482 W: <Buffer 7f>
33.373 3484 W: <Buffer 7f>
33.384 3486 W: <Buffer 7f>
33.850 3622 W: <Buffer 46 b9 6a 00 20 00 0b 00 c0 80 c0 ff c0 00 80 80 80 ff 80 00 40 80 40 ff 40 00 00 80 00 00 00 0a 12 16>
33.850 3623 W: <Buffer fe>
33.861 3626 W: <Buffer fe>
33.871 3627 W: <Buffer fe>
33.997 3631 W: <Buffer fe fe fe fe fe fe fe fe fe fe fe fe>
34.005 3633 W: <Buffer fe>
34.015 3636 W: <Buffer fe>
34.026 3637 W: <Buffer fe>
34.066 3639 W: <Buffer fe fe fe>
34.070 3643 W: <Buffer fe>
34.221 3714 W: <Buffer 46 b9 6a 00 20 00 0c bd 80 be 80 bf 80 c0 80 c1 80 c2 80 94 40 95 40 96 40 97 40 98 40 99 40 0d 1a 16>
34.222 3716 W: <Buffer fe>
34.232 3718 W: <Buffer fe>
34.242 3719 W: <Buffer fe>
34.368 3721 W: <Buffer fe fe fe fe fe fe fe fe fe fe fe fe>
34.376 3723 W: <Buffer fe>
34.387 3726 W: <Buffer fe>
34.397 3729 W: <Buffer fe>
34.437 3731 W: <Buffer fe fe fe>
34.442 3733 W: <Buffer fe>
34.635 3806 W: <Buffer 46 b9 6a 00 0e 01 97 40 fd c0 fc 9f 81 05 29 16>
34.793 3844 W: <Buffer 46 b9 6a 00 0b 05 00 00 5a a5 01 79 16>
34.809 3866 W: <Buffer 46 b9 6a 00 0b 03 00 00 5a a5 01 77 16>
35.154 3902 W: <Buffer 46 b9 6a 00 4b 32 00 00 5a a5 02 00 69 32 ff ff ff ff ff ff ff 02 00 d2 ff ff ff ff ff 32 ff ff ff ff ff ff ff 32 ff ff ff ff ff ff ff 32 ff ff ff ff ... >
35.154 3903 W: <Buffer ff ff ff ff ff 32 ff ff ff ff 37 50 16>
35.186 3926 W: <Buffer 46 b9 6a 00 4b 12 00 40 5a a5 ff ff ff 32 ff ff ff ff ff ff ff 32 ff ff ff ff ff ff ff 02 00 d1 ff ff ff ff ff 32 ff ff ff ff ff ff ff 02 00 f0 02 02 ... >
35.186 3927 W: <Buffer 79 00 e9 44 00 60 1b 7a 00 90 29 47 16>
35.220 3950 W: <Buffer 46 b9 6a 00 4b 12 00 80 5a a5 03 8a 78 01 75 a0 00 e4 93 f2 a3 08 b8 00 02 05 a0 d9 f4 da f2 75 a0 ff e4 78 ff f6 d8 fd 78 00 e8 44 00 60 0a 79 01 75 ... >
35.220 3951 W: <Buffer 79 00 90 00 01 e4 f0 a3 d8 fc 22 5d 16>
35.256 3976 W: <Buffer 46 b9 6a 00 4b 12 00 c0 5a a5 d9 fa 75 31 64 75 32 00 75 33 64 75 34 00 02 00 66 32 c0 e0 c0 d0 74 01 25 27 f5 27 e4 35 28 f5 28 e4 35 29 f5 29 e4 35 ... >
35.256 3977 W: <Buffer c0 82 c0 83 c0 07 c0 06 c0 05 21 0f 16>
35.291 4000 W: <Buffer 46 b9 6a 00 4b 12 01 00 5a a5 c0 04 c0 03 c0 02 c0 01 c0 00 c0 d0 75 d0 08 85 31 10 85 32 11 90 00 09 75 d0 00 12 03 69 75 d0 08 ae 82 af 83 a2 34 e4 ... >
35.291 4001 W: <Buffer d0 00 12 03 69 75 d0 08 ac 82 1a 4e 16>
35.327 4024 W: <Buffer 46 b9 6a 00 4b 12 01 40 5a a5 ad 83 d0 0e d0 0f ec 2e f5 31 ed 3f f5 32 85 33 10 85 34 11 90 00 09 75 d0 00 12 03 69 75 d0 08 ae 82 af 83 a2 33 e4 33 ... >
35.327 4025 W: <Buffer 00 12 03 69 75 d0 08 ac 82 ad 1c 17 16>
35.365 4048 W: <Buffer 46 b9 6a 00 4b 12 01 80 5a a5 83 d0 0e d0 0f ec 2e f5 33 ed 3f f5 34 c3 74 32 95 31 74 80 85 32 f0 63 f0 80 95 f0 50 06 7e 01 7f 00 80 04 7e 00 7f 00 ... >
35.365 4049 W: <Buffer f0 50 06 7c 01 7d 00 80 04 7c 1e 8b 16>
35.401 4072 W: <Buffer 46 b9 6a 00 4b 12 01 c0 5a a5 00 7d 00 ee b5 2d 06 ef b5 2e 02 80 0c 8e 2d 8f 2e 75 2b 01 75 2c 00 80 05 e4 f5 2b f5 2c ec b5 2f 06 ed b5 30 02 80 04 ... >
35.401 4073 W: <Buffer d0 04 d0 05 d0 06 d0 07 d0 83 1c d3 16>
35.437 4098 W: <Buffer 46 b9 6a 00 4b 12 02 00 5a a5 d0 82 d0 f0 d0 e0 d0 20 32 43 b2 20 53 b1 df 43 b2 04 53 b1 fb e4 f5 27 f5 28 f5 29 f5 2a f5 21 f5 22 85 27 23 85 28 24 ... >
35.437 4099 W: <Buffer 2e f5 2f f5 30 c2 32 c2 35 d2 21 78 16>
35.474 4122 W: <Buffer 46 b9 6a 00 4b 12 02 40 5a a5 34 d2 33 43 8f 10 53 89 f0 53 8e 7f 75 8c fc 75 8a 18 ae 8e 43 06 04 8e 8e 75 d7 a0 75 d6 15 d2 a9 43 af 04 d2 8c ae 8e ... >
35.474 4123 W: <Buffer 27 10 85 28 11 85 29 12 85 2a 1e da 16>
35.509 4146 W: <Buffer 46 b9 6a 00 4b 12 02 80 5a a5 13 c3 e5 10 9c e5 11 9d e5 12 9e e5 13 9f 40 17 e5 10 c3 9c f8 e5 11 9d f9 e5 12 9e fa e5 13 9f 88 82 89 83 8a f0 22 c3 ... >
35.509 4147 W: <Buffer 10 fc ed 35 11 fd ee 35 12 fe 28 b4 16>
35.545 4180 W: <Buffer 46 b9 6a 00 4b 12 02 c0 5a a5 ef 35 13 8c 82 8d 83 8e f0 22 85 82 21 85 83 22 85 27 23 85 28 24 85 29 25 85 2a 26 22 12 02 09 d2 af e4 b5 21 05 b5 22 ... >
35.545 4181 W: <Buffer 74 02 b5 21 06 e4 b5 22 02 80 18 87 16>
35.581 4204 W: <Buffer 46 b9 6a 00 4b 12 03 00 5a a5 33 74 03 b5 21 06 e4 b5 22 02 80 3a 80 52 c2 35 c2 32 75 87 02 00 90 00 01 12 02 ca 80 c4 e5 2d 45 2e 24 ff 92 32 e5 2d ... >
35.581 4205 W: <Buffer e5 2d 45 2e 24 ff 92 32 90 00 19 ec 16>
35.616 4228 W: <Buffer 46 b9 6a 00 4b 12 03 40 5a a5 03 12 02 ca 80 9c e5 2d 45 2e 24 ff 92 32 e5 2d 45 2e 60 03 02 02 e2 90 00 00 12 02 ca 02 02 e2 90 00 00 12 02 ca 02 02 ... >
35.616 4229 W: <Buffer a4 d0 f0 25 f0 c5 83 85 10 f0 1d 3b 16>
35.653 4254 W: <Buffer 46 b9 6a 00 4b 12 03 80 5a a5 a4 25 83 f5 83 22 75 82 00 22 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ... >
35.653 4255 W: <Buffer ff ff ff ff ff ff ff ff ff ff 3c 12 16>
35.708 4278 W: <Buffer 46 b9 6a 00 4b 04 00 00 5a a5 ff ff ff 00 ff ff 00 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 00 00 ff b7 ff 2d ff c0 ff fd 03 ff ff ff ff ff ff ff ... >
35.708 4279 W: <Buffer ff ff ff ff ff c2 bf f7 bb 9f 39 fc 16>
35.932 4318 W: <Buffer 46 b9 6a 00 07 ff 01 70 16>
The code looks like this (does not work)
:04000000020069325F
:03000B000200D21E
:0100130032BA
:01001B0032B2
:0100230032AA
:01002B0032A2
:01003300329A
:01003B003292
:01004300328A
:01004B003282
:030053000200D1D7
:01005B003272
:030063000200F0A8
:0F00C20075316475320075336475340002006661
:030066000202DDB6
:2000D10032C0E0C0D074012527F527E43528F528E43529F529E4352AF52AD0D0D0E032C06E
:2000F10020C0E0C0F0C082C083C007C006C005C004C003C002C001C000C0D075D00885314B
:200111001085321190000975D00012036975D008AE82AF83A234E433F5107511009000647F
:20013100C00FC00E75D00012036975D008AC82AD83D00ED00FEC2EF531ED3FF5328533108B
...
:2002F100B5220280287402B52106E4B5220280337403B52106E4B52202803A8052C235C255
:2003110032758702009000011202CA80C4E52D452E24FF9232E52D452E70B690000212022C
:20033100CA80AED235E52D452E24FF92329000031202CA809CE52D452E24FF9232E52D45F1
:180351002E60030202E29000001202CA0202E29000001202CA0202E275
:06009800E478FFF6D8FD3C
:200076007900E94400601B7A0090038A780175A000E493F2A308B8000205A0D9F4DAF275A3
:02009600A0FFC9
:1D036900E5828510F0A4C582C0F08511F0A4D0F025F0C5838510F0A42583F583223E
:20009E007800E84400600A790175A000E4F309D8FC7800E84400600C7900900001E4F0A360
:0400BE00D8FCD9FA97
:0D006900758134120386E582600302006693
:04038600758200225A
:00000001FF
I was using "pip3 install stcgal" version, but I got the same results with git master-branch version
Make sure you're flashing the STC15Ls with 3V3 and not 5V. If they're on a module designed for any particular purpose, check carefully if there's any regulator or what level the VCC to the chip is really being fed.
See e.g.:** Trivial solution to "bricked" STC15s
Kind regards and good luck!
Well, the programming worked with STC-ISP, so I expect there is a problem with stcgal.
Oh I see. Anyway maybe the info I posted is of some relevance with people having issues. Good luck, if you find any solution of course let us know
In my case even after noticing the problem was VCC level, I've found that a lot you can learn about STC protocol just by reading and messing a bit with the Python code. Don't be afraid of doing just that (if you have the time, obviously.)
In any case, the chip initially reporting > 100MHz is quite strange. Revise the code in STGAL that deals with this initial frequency determination. Find thru the Python in 'protocol.py' with the string "stc15apro" and below the first line that matches.
A good trick also when strange freqs. are reported is to try and relaunch the STCGAL command with -l 2400 -b 2400, or just -l 2400. Don't include any -t option initially.
Regards from Spain