This commit is contained in:
Timofey Titovets 2026-01-12 02:21:47 +01:00 committed by GitHub
commit b3744e7067
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 10 additions and 5 deletions

View file

@ -111,10 +111,10 @@ class MCU_SPI:
return self.spi_transfer_cmd.send([self.oid, data],
minclock=minclock, reqclock=reqclock)
def spi_transfer_with_preface(self, preface_data, data,
minclock=0, reqclock=0):
minclock=0, reqclock=0, retry=True):
return self.spi_transfer_cmd.send_with_preface(
self.spi_send_cmd, [self.oid, preface_data], [self.oid, data],
minclock=minclock, reqclock=reqclock)
minclock=minclock, reqclock=reqclock, retry=retry)
# Helper to setup an spi bus from settings in a config section
def MCU_SPI_from_config(config, mode, pin_option="cs_pin",

View file

@ -56,7 +56,7 @@ class SHT3X:
self.reactor = self.printer.get_reactor()
self.i2c = bus.MCU_I2C_from_config(
config, default_addr=SHT3X_I2C_ADDR, default_speed=100000)
self._error = self.i2c.get_mcu().error
self._error = self.printer.command_error
self.report_time = config.getint('sht3x_report_time', 1, minval=1)
self.deviceId = config.get('sensor_type')
self.temp = self.min_temp = self.max_temp = self.humidity = 0.

View file

@ -192,20 +192,25 @@ class MCU_TMC_SPI_chain:
share = "tmc_spi_cs"
self.spi = bus.MCU_SPI_from_config(config, 3, default_speed=4000000,
share_type=share)
self._error = self.printer.command_error
self.taken_chain_positions = []
def _build_cmd(self, data, chain_pos):
return ([0x00] * ((self.chain_len - chain_pos) * 5) +
data + [0x00] * ((chain_pos - 1) * 5))
def reg_read(self, reg, chain_pos):
cmd = self._build_cmd([reg, 0x00, 0x00, 0x00, 0x00], chain_pos)
self.spi.spi_send(cmd)
if self.printer.get_start_args().get('debugoutput') is not None:
self.spi.spi_send(cmd)
return {
"spi_status": 0,
"data": 0,
"#receive_time": .0,
}
params = self.spi.spi_transfer(cmd)
# Optimize read by grouping write + transfer request
try:
params = self.spi.spi_transfer_with_preface(cmd, cmd, retry=False)
except self._error:
params = self.spi.spi_transfer(cmd)
pr = bytearray(params['response'])
pr = pr[(self.chain_len - chain_pos) * 5 :
(self.chain_len - chain_pos + 1) * 5]