Compare commits
1 Commits
Author | SHA1 | Date | |
---|---|---|---|
083242d4f1 |
@ -27,15 +27,11 @@ So far, stcgal was tested with the following MCU models:
|
||||
* STC89C52RC (BSL version: 4.3C)
|
||||
* STC12C2052AD (BSL version: 5.8D)
|
||||
* STC12C5A60S2 (BSL version: 6.2I)
|
||||
* STC11F02E (BSL version: 6.5K)
|
||||
* STC11F08XE (BSL version: 6.5M)
|
||||
* STC15F104E (BSL version: 6.7Q)
|
||||
* STC15F204EA (BSL version: 6.7R)
|
||||
* STC15L104W (BSL version: 7.1Q)
|
||||
* IAP15F2K61S2 (BSL version: 7.1S)
|
||||
* STC15L2K16S2 (BSL version: 7.2.4S)
|
||||
* STC15W408AS (BSL version: 7.2.4T)
|
||||
* STC15W4K56S4 (BSL version: 7.3.4T)
|
||||
|
||||
More compatibility testing is going to happen soon.
|
||||
|
||||
@ -233,7 +229,6 @@ Option key | Possible values | Protocols/Models | Descri
|
||||
```rstout_por_state``` | low/high | STC15+ | RSTOUT pin state after power-on reset
|
||||
```uart2_passthrough``` | true/false | STC15+ | Pass-through UART1 to UART2 pins (for single-wire UART mode)
|
||||
```uart2_pin_mode``` | push-pull/normal | STC15+ | Output mode of UART2 TX pin
|
||||
```cpu_core_voltage``` | low/mid/high | STC15W+ | CPU core voltage (low: ~2.7V, mid: ~3.3V, high: ~3.6V)
|
||||
|
||||
### Frequency trimming
|
||||
|
||||
|
@ -5,7 +5,6 @@ MCS3 is like early STC15 MCS1.
|
||||
MCS2 is like early STC15 MCS2.
|
||||
MCS4 is like early STC15 MCS0 but with additions.
|
||||
MCSX is like early STC15 MCS12.
|
||||
MCSY is new in STC15W4 series
|
||||
|
||||
baseline
|
||||
B5 FF F7 BB 9F
|
||||
@ -81,37 +80,3 @@ external oscillator enabled (IAP15F2K61S2)
|
||||
external oscillator enabled + clock gain low (IAP15F2K61S2)
|
||||
9C 7F F7 BB 9C
|
||||
--> MCS 4 bit controls clock gain. high => high clock gain, low => low clock gain.
|
||||
|
||||
|
||||
cpu core supply level (MCSY)
|
||||
|
||||
in status packet:
|
||||
|
||||
2.68v
|
||||
46 B9 68 00 34 50 8D FF 73 96 F7 BC 9F 00 5B 7A C0 FD 27 ED 00 00 73 54 00 F5 28 04 06 70 96 02 15 19 1C 1E 23 00 EC E0 04 D7 EA 92 FF FF FF 15 09 25 60 14 BD 16
|
||||
|
||||
3.33v
|
||||
46 B9 68 00 34 50 8D FF 73 96 F7 BC 9F 00 5B 92 30 FD 25 EA 00 FC 73 54 00 F5 28 04 06 70 96 02 15 19 1C 1E 23 00 EC E0 04 D7 F7 92 FF FF FF 15 09 25 60 15 49 16
|
||||
|
||||
3.63v
|
||||
46 B9 68 00 34 50 8D FF 73 96 F7 BC 9F 00 5B 7A C0 FD 25 EF 00 00 73 54 00 F5 28 04 06 70 96 02 15 19 1C 1E 23 00 EC E0 04 D7 FD 92 FF FF FF 15 09 25 60 14 D0 16
|
||||
|
||||
3.73v
|
||||
46 B9 68 00 34 50 8D FF 73 96 F7 BC 9F 00 5B 92 30 FD 25 EA 00 00 73 54 00 F5 28 04 06 70 96 02 15 19 1C 1E 23 00 EC E0 04 D7 FF 92 FF FF FF 15 09 25 60 14 55 16
|
||||
^^
|
||||
MCSY
|
||||
|
||||
voltage: ff -> 3.73v
|
||||
fd -> 3.63v
|
||||
f7 -> 3.33v
|
||||
ea -> 2.68v
|
||||
|
||||
in set options packet:
|
||||
|
||||
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 A8 FF EE FF E0 FF FD 03 FF FF FF FF FF
|
||||
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
||||
FF FD FF FF FF 75 BF F7 BC 9F 3A 80 16
|
||||
^^
|
||||
MCSY
|
||||
|
@ -58,11 +58,6 @@ info packet
|
||||
MCS2-4 MCSX
|
||||
^^
|
||||
factory calibration adjust for 24 MHz (range 0x40)?
|
||||
|
||||
STC15W4K56S4:
|
||||
46 B9 68 00 34 50 8D FF 73 96 F7 BC 9F 00 5B 7A C0 FD 27 ED 00 00 73 54 00 F5 28 04 06 70 96 02 15 19 1C 1E 23 00 EC E0 04 D7 EA 92 FF FF FF 15 09 25 60 14 BD 16
|
||||
^^
|
||||
core voltage (MCSY)
|
||||
|
||||
IAP15F2K61S2:
|
||||
external osc:
|
||||
@ -145,9 +140,8 @@ option packet
|
||||
|
||||
FF FD 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 B5 FF F7 BB 9F 3A 48 16
|
||||
^ ^^^^^^^^^^^^^^
|
||||
MCSX ^^ MCS0-4
|
||||
MCSY
|
||||
(STC15W4)
|
||||
MCSX MCS0-4
|
||||
|
||||
|
||||
MCS bytes
|
||||
---------
|
||||
@ -160,7 +154,7 @@ RC calibration adjust
|
||||
|
||||
0x3f + RC calibration range (0x00, 0x40, 0x80, 0xc0)
|
||||
|
||||
### MCS2 - MCS4, MCSX and MCSY
|
||||
### MCS2 - MCS4 and MCSX
|
||||
|
||||
See stc15-options.txt
|
||||
|
||||
|
@ -1,128 +0,0 @@
|
||||
2015-12-10 23:47:44.198341: PC
|
||||
7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F
|
||||
7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F
|
||||
7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F
|
||||
7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F
|
||||
7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F
|
||||
7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F
|
||||
7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F
|
||||
7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F
|
||||
7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F
|
||||
7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F
|
||||
7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F
|
||||
7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F
|
||||
7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F
|
||||
7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F
|
||||
7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F
|
||||
7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F
|
||||
7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F
|
||||
2015-12-10 23:47:48.400692: MCU
|
||||
46 B9 68
|
||||
2015-12-10 23:47:48.411946: PC
|
||||
7F
|
||||
2015-12-10 23:47:48.414811: MCU
|
||||
00 34 50
|
||||
2015-12-10 23:47:48.427644: PC
|
||||
7F
|
||||
2015-12-10 23:47:48.428894: MCU
|
||||
8D FF 73 96 F5 7B 9F FF FF FF FF FF 27 ED 00 00
|
||||
73 54 00 F5 28 04 06 70 96 02 15 19 1C 1E 23 00
|
||||
EC E0 04 D7 F8 73 BF FF FF 15 09 25 60 16 92 16
|
||||
2015-12-10 23:47:48.725370: PC
|
||||
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 FE FE FE FE FE FE FE FE FE FE FE FE FE
|
||||
2015-12-10 23:47:49.088353: MCU
|
||||
46 B9 68
|
||||
2015-12-10 23:47:49.099586: PC
|
||||
FE
|
||||
2015-12-10 23:47:49.102589: MCU
|
||||
00 20 00
|
||||
2015-12-10 23:47:49.115089: PC
|
||||
FE
|
||||
2015-12-10 23:47:49.116479: MCU
|
||||
0B 0D 21 12 BC 18 3E 1A 05 24 FA 2F B3 34 D1 4A
|
||||
52 5E C0 52 DB 73 1A 00 00 08 7D 16
|
||||
2015-12-10 23:47:49.266317: PC
|
||||
46 B9 6A 00 20 00 0C 71 80 72 80 73 80 74 80 75
|
||||
80 76 80 6F 40 70 40 71 40 72 40 73 40 74 40 0A
|
||||
74 16 FE FE FE FE FE FE FE FE FE FE FE FE FE FE
|
||||
2015-12-10 23:47:49.650397: MCU
|
||||
46 B9 68
|
||||
2015-12-10 23:47:49.661888: PC
|
||||
FE
|
||||
2015-12-10 23:47:49.664523: MCU
|
||||
00 20 00
|
||||
2015-12-10 23:47:49.677636: PC
|
||||
FE
|
||||
2015-12-10 23:47:49.678633: MCU
|
||||
0C 23 BF 23 D3 23 E7 23 F6 24 0F 24 23 47 73 47
|
||||
B9 47 E1 48 09 48 36 48 59 09 5B 16
|
||||
2015-12-10 23:47:49.944529: PC
|
||||
46 B9 6A 00 0E 01 72 40 F6 FF 80 73 81 04 94 16
|
||||
2015-12-10 23:47:50.045100: MCU
|
||||
46 B9 68 00 07 01 00 70 16
|
||||
2015-12-10 23:47:50.116096: PC
|
||||
46 B9 6A 00 0B 05 00 00 5A A5 01 79 16
|
||||
2015-12-10 23:47:50.190036: MCU
|
||||
46 B9 68 00 07 05 00 74 16
|
||||
2015-12-10 23:47:50.255407: PC
|
||||
46 B9 6A 00 0B 03 00 00 5A A5 01 77 16
|
||||
2015-12-10 23:47:53.130695: MCU
|
||||
46 B9 68 00 0E 03 F5 28 00 A5 03 27 49 02 AE 16
|
||||
2015-12-10 23:47:53.210814: PC
|
||||
46 B9 6A 00 8B 22 00 00 5A A5 01 04 01 36 75 81
|
||||
07 12 00 6A E5 82 60 03 02 00 02 E4 78 FF F6 D8
|
||||
FD 01 02 AF 82 8F 06 1F EE 60 0F 7D 90 7E 01 1D
|
||||
BD FF 01 1E ED 4E 70 F7 80 EB 22 AF 82 DF FE 22
|
||||
E5 B0 F4 F5 B0 75 82 05 11 31 75 82 D0 11 19 E5
|
||||
B0 F4 F5 B0 75 82 64 11 19 E5 B0 F4 F5 B0 75 82
|
||||
64 11 19 E5 B0 F4 F5 B0 75 82 64 11 19 E5 B0 F4
|
||||
F5 B0 80 D6 75 82 00 22 FF FF FF FF FF FF FF FF
|
||||
FF FF FF FF FF FF FF FF FF FF 49 E8 16
|
||||
2015-12-10 23:47:54.003906: MCU
|
||||
46 B9 68 00 08 02 54 00 C6 16
|
||||
2015-12-10 23:47:54.068777: PC
|
||||
46 B9 6A 00 8B 02 00 80 5A A5 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 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 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 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 FF FF FF FF FF FF FF FF 81 F6 16
|
||||
2015-12-10 23:47:54.867956: MCU
|
||||
46 B9 68 00 08 02 54 00 C6 16
|
||||
2015-12-10 23:47:54.932281: PC
|
||||
46 B9 6A 00 8B 02 01 00 5A A5 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 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 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 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 FF FF FF FF FF FF FF FF 81 77 16
|
||||
2015-12-10 23:47:55.732519: MCU
|
||||
46 B9 68 00 08 02 54 00 C6 16
|
||||
2015-12-10 23:47:55.796791: PC
|
||||
46 B9 6A 00 8B 02 01 80 5A A5 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 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 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 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 FF FF FF FF FF FF FF FF 81 F7 16
|
||||
2015-12-10 23:47:56.536325: MCU
|
||||
46 B9 68 00 08 02 54 00 C6 16
|
||||
2015-12-10 23:47:56.616743: PC
|
||||
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 A8 FF 91 FF 20 FF FD 03 FF FF FF FF FF
|
||||
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
|
||||
FF EC FF FF FF 74 BF F7 BC 9F 39 51 16
|
||||
2015-12-10 23:47:57.070169: MCU
|
||||
46 B9 68 00 08 04 54 00 C8 16
|
@ -80,27 +80,27 @@ class StcGal:
|
||||
|
||||
print("Loading flash: ", end="")
|
||||
sys.stdout.flush()
|
||||
bindata = self.load_file_auto(self.opts.code_image)
|
||||
bindata = self.load_file_auto(self.opts.code_binary)
|
||||
|
||||
# warn if it overflows
|
||||
if len(bindata) > code_size:
|
||||
print("WARNING: code_image overflows into eeprom segment!", file=sys.stderr)
|
||||
print("WARNING: code_binary overflows into eeprom segment!", file=sys.stderr)
|
||||
if len(bindata) > (code_size + ee_size):
|
||||
print("WARNING: code_image truncated!", file=sys.stderr)
|
||||
print("WARNING: code_binary truncated!", file=sys.stderr)
|
||||
bindata = bindata[0:code_size + ee_size]
|
||||
|
||||
# add eeprom data if supplied
|
||||
if self.opts.eeprom_image:
|
||||
if self.opts.eeprom_binary:
|
||||
print("Loading EEPROM: ", end="")
|
||||
sys.stdout.flush()
|
||||
eedata = self.load_file_auto(self.opts.eeprom_image)
|
||||
eedata = self.load_file_auto(self.opts.eeprom_binary)
|
||||
if len(eedata) > ee_size:
|
||||
print("WARNING: eeprom_image truncated!", file=sys.stderr)
|
||||
print("WARNING: eeprom_binary truncated!", file=sys.stderr)
|
||||
eedata = eedata[0:ee_size]
|
||||
if len(bindata) < code_size:
|
||||
bindata += bytes(code_size - len(bindata))
|
||||
elif len(bindata) > code_size:
|
||||
print("WARNING: eeprom_image overlaps code_image!", file=sys.stderr)
|
||||
print("WARNING: eeprom_binary overlaps code_binary!", file=sys.stderr)
|
||||
bindata = bindata[0:code_size]
|
||||
bindata += eedata
|
||||
|
||||
@ -133,7 +133,7 @@ class StcGal:
|
||||
return 1
|
||||
|
||||
try:
|
||||
if self.opts.code_image:
|
||||
if self.opts.code_binary:
|
||||
self.program_mcu()
|
||||
return 0
|
||||
else:
|
||||
@ -166,10 +166,9 @@ class StcGal:
|
||||
|
||||
def cli():
|
||||
# check arguments
|
||||
parser = argparse.ArgumentParser(formatter_class=argparse.RawDescriptionHelpFormatter,
|
||||
description="stcgal %s - an STC MCU ISP flash tool\n(C) 2014-2015 Grigori Goronzy\nhttps://github.com/grigorig/stcgal" %stcgal.__version__)
|
||||
parser.add_argument("code_image", help="code segment file to flash (BIN/HEX)", type=argparse.FileType("rb"), nargs='?')
|
||||
parser.add_argument("eeprom_image", help="eeprom segment file to flash (BIN/HEX)", type=argparse.FileType("rb"), nargs='?')
|
||||
parser = argparse.ArgumentParser(description="stcgal %s - an STC MCU ISP flash tool" %stcgal.__version__)
|
||||
parser.add_argument("code_binary", help="code segment binary file to flash", type=argparse.FileType("rb"), nargs='?')
|
||||
parser.add_argument("eeprom_binary", help="eeprom segment binary file to flash", type=argparse.FileType("rb"), nargs='?')
|
||||
parser.add_argument("-P", "--protocol", help="protocol version", choices=["stc89", "stc12a", "stc12", "stc15a", "stc15"], default="stc12")
|
||||
parser.add_argument("-p", "--port", help="serial port device", default="/dev/ttyUSB0")
|
||||
parser.add_argument("-b", "--baud", help="transfer baud rate (default: 19200)", type=BaudType(), default=19200)
|
||||
|
@ -446,14 +446,13 @@ class Stc15AOption(BaseOption):
|
||||
|
||||
class Stc15Option(BaseOption):
|
||||
def __init__(self, msr):
|
||||
assert len(msr) == 5
|
||||
assert len(msr) == 4
|
||||
self.msr = bytearray(msr)
|
||||
|
||||
self.options = (
|
||||
("reset_pin_enabled", self.get_reset_pin_enabled, self.set_reset_pin_enabled),
|
||||
("clock_source", self.get_clock_source, self.set_clock_source),
|
||||
("clock_gain", self.get_clock_gain, self.set_clock_gain),
|
||||
("cpu_core_voltage", self.get_core_voltage, self.set_core_voltage),
|
||||
("watchdog_por_enabled", self.get_watchdog, self.set_watchdog),
|
||||
("watchdog_stop_idle", self.get_watchdog_idle, self.set_watchdog_idle),
|
||||
("watchdog_prescale", self.get_watchdog_prescale, self.set_watchdog_prescale),
|
||||
@ -604,18 +603,6 @@ class Stc15Option(BaseOption):
|
||||
self.msr[2] &= 0xdf
|
||||
self.msr[2] |= 0x20 if val else 0x00
|
||||
|
||||
def get_core_voltage(self):
|
||||
if self.msr[4] == 0xea: return "low"
|
||||
elif self.msr[4] == 0xf7: return "mid"
|
||||
elif self.msr[4] == 0xfd: return "high"
|
||||
else: return "unknown"
|
||||
|
||||
def set_core_voltage(self, val):
|
||||
volt_vals = {"low": 0xea, "mid": 0xf7, "high": 0xfd}
|
||||
if val not in volt_vals.keys():
|
||||
raise ValueError("must be one of %s" % list(volt_vals.keys()))
|
||||
self.msr[4] = volt_vals[val]
|
||||
|
||||
|
||||
class StcBaseProtocol:
|
||||
"""Basic functionality for STC BSL protocols"""
|
||||
@ -675,17 +662,13 @@ class StcBaseProtocol:
|
||||
print("Target frequency: %.3f MHz" % (self.mcu_clock_hz / 1E6))
|
||||
print("Target BSL version: %s" % self.mcu_bsl_version)
|
||||
|
||||
def pulse(self, character=b"\x7f", timeout=0):
|
||||
"""Send a sequence of bytes for synchronization with MCU"""
|
||||
def pulse(self):
|
||||
"""Send a sequence of 0x7f bytes for synchronization"""
|
||||
|
||||
duration = 0
|
||||
while True:
|
||||
if timeout > 0 and duration > timeout:
|
||||
raise serial.SerialTimeoutException("pulse timeout")
|
||||
self.ser.write(character)
|
||||
self.ser.write(b"\x7f")
|
||||
self.ser.flush()
|
||||
time.sleep(0.015)
|
||||
duration += 0.015
|
||||
if self.ser.inWaiting() > 0: break
|
||||
|
||||
def initialize_model(self):
|
||||
@ -732,17 +715,12 @@ class StcBaseProtocol:
|
||||
Set up serial port, send sync sequence and get part info.
|
||||
"""
|
||||
|
||||
self.ser = serial.Serial(port=self.port, parity=self.PARITY)
|
||||
# set baudrate separately to work around a bug with the CH340 driver
|
||||
# on older Linux kernels
|
||||
self.ser.baudrate = self.baud_handshake
|
||||
self.ser = serial.Serial(port=self.port, baudrate=self.baud_handshake,
|
||||
parity=self.PARITY)
|
||||
|
||||
# fast timeout values to deal with detection errors
|
||||
self.ser.timeout = 0.5
|
||||
self.ser.interCharTimeout = 0.5
|
||||
|
||||
# avoid glitches if there is something in the input buffer
|
||||
self.ser.flushInput()
|
||||
# conservative timeout values
|
||||
self.ser.timeout = 10.0
|
||||
self.ser.interCharTimeout = 1.0
|
||||
|
||||
print("Waiting for MCU, please cycle power: ", end="")
|
||||
sys.stdout.flush()
|
||||
@ -757,10 +735,6 @@ class StcBaseProtocol:
|
||||
except (StcFramingException, serial.SerialTimeoutException): pass
|
||||
print("done")
|
||||
|
||||
# conservative timeout values
|
||||
self.ser.timeout = 15.0
|
||||
self.ser.interCharTimeout = 1.0
|
||||
|
||||
self.initialize_status(status_packet)
|
||||
self.initialize_model()
|
||||
self.initialize_options(status_packet)
|
||||
@ -1550,7 +1524,7 @@ class Stc15AProtocol(Stc12Protocol):
|
||||
packet += bytes([0x98, 0x00, 0x02, 0x00])
|
||||
packet += bytes([0x98, 0x80, 0x02, 0x00])
|
||||
self.write_packet(packet)
|
||||
self.pulse(timeout=1.0)
|
||||
self.pulse()
|
||||
response = self.read_packet()
|
||||
if response[0] != 0x65:
|
||||
raise StcProtocolException("incorrect magic in handshake packet")
|
||||
@ -1592,7 +1566,7 @@ class Stc15AProtocol(Stc12Protocol):
|
||||
packet += struct.pack(">H", target_trim_start + i)
|
||||
packet += bytes([0x02, 0x00])
|
||||
self.write_packet(packet)
|
||||
self.pulse(timeout=1.0)
|
||||
self.pulse()
|
||||
response = self.read_packet()
|
||||
if response[0] != 0x65:
|
||||
raise StcProtocolException("incorrect magic in handshake packet")
|
||||
@ -1653,7 +1627,7 @@ class Stc15Protocol(Stc15AProtocol):
|
||||
"""Initialize options"""
|
||||
|
||||
# create option state
|
||||
self.options = Stc15Option(status_packet[5:8] + status_packet[12:13] + status_packet[37:38])
|
||||
self.options = Stc15Option(status_packet[5:8] + status_packet[12:13])
|
||||
self.options.print()
|
||||
|
||||
def initialize_status(self, packet):
|
||||
@ -1757,7 +1731,8 @@ class Stc15Protocol(Stc15AProtocol):
|
||||
packet += bytes([0x00, 0x40, 0x80, 0x40, 0xff, 0x40])
|
||||
packet += bytes([0x00, 0x00, 0x80, 0x00, 0xc0, 0x00])
|
||||
self.write_packet(packet)
|
||||
self.pulse(b"\xfe", timeout=1.0)
|
||||
self.ser.write(bytes([0x92, 0x92, 0x92, 0x92]))
|
||||
self.ser.flush()
|
||||
response = self.read_packet()
|
||||
if response[0] != 0x00:
|
||||
raise StcProtocolException("incorrect magic in handshake packet")
|
||||
@ -1776,7 +1751,8 @@ class Stc15Protocol(Stc15AProtocol):
|
||||
for i in range(prog_trim[0] - 3, prog_trim[0] + 3):
|
||||
packet += bytes([i & 0xff, prog_trim[1]])
|
||||
self.write_packet(packet)
|
||||
self.pulse(b"\xfe", timeout=1.0)
|
||||
self.ser.write(bytes([0x92, 0x92, 0x92, 0x92]))
|
||||
self.ser.flush()
|
||||
response = self.read_packet()
|
||||
if response[0] != 0x00:
|
||||
raise StcProtocolException("incorrect magic in handshake packet")
|
||||
@ -1904,7 +1880,7 @@ class Stc15Protocol(Stc15AProtocol):
|
||||
response = self.read_packet()
|
||||
if response[0] != 0x07 or response[1] != 0x54:
|
||||
raise StcProtocolException("incorrect magic in finish packet")
|
||||
print("done")
|
||||
print(" done")
|
||||
|
||||
def program_options(self):
|
||||
print("Setting options: ", end="")
|
||||
@ -1924,9 +1900,7 @@ class Stc15Protocol(Stc15AProtocol):
|
||||
(self.trim_frequency >> 0) & 0xff,
|
||||
0xff])
|
||||
packet += bytes([msr[3]])
|
||||
packet += bytes([0xff] * 23)
|
||||
packet += bytes([msr[4]])
|
||||
packet += bytes([0xff] * 3)
|
||||
packet += bytes([0xff] * 27)
|
||||
packet += bytes([self.trim_value[0], self.trim_value[1] + 0x3f])
|
||||
packet += msr[0:3]
|
||||
self.write_packet(packet)
|
||||
|
Reference in New Issue
Block a user