aboutsummaryrefslogtreecommitdiffstats
path: root/klippy/extras
diff options
context:
space:
mode:
authorTimofey Titovets <nefelim4ag@gmail.com>2025-03-13 04:50:46 +0100
committerKevinOConnor <kevin@koconnor.net>2025-04-17 11:37:12 -0400
commitabc76ee963d4154dce0bd56f2fdb946d5065cc86 (patch)
tree7ffb3f2f1aaba14a5f017c81aebebca5db5ef7e8 /klippy/extras
parentb826844b34ac1603dac311ee2032b7f51f457eec (diff)
downloadkutter-abc76ee963d4154dce0bd56f2fdb946d5065cc86.tar.gz
kutter-abc76ee963d4154dce0bd56f2fdb946d5065cc86.tar.xz
kutter-abc76ee963d4154dce0bd56f2fdb946d5065cc86.zip
software_spi: set rate limiting ticks from the host
Signed-off-by: Timofey Titovets <nefelim4ag@gmail.com>
Diffstat (limited to 'klippy/extras')
-rw-r--r--klippy/extras/bus.py13
1 files changed, 13 insertions, 0 deletions
diff --git a/klippy/extras/bus.py b/klippy/extras/bus.py
index b8236dc7..ceeed732 100644
--- a/klippy/extras/bus.py
+++ b/klippy/extras/bus.py
@@ -43,6 +43,7 @@ class MCU_SPI:
cs_active_high=False):
self.mcu = mcu
self.bus = bus
+ self.speed = speed
# Config SPI object (set all CS pins high before spi_set_bus commands)
self.oid = mcu.create_oid()
if pin is None:
@@ -51,11 +52,17 @@ class MCU_SPI:
mcu.add_config_cmd("config_spi oid=%d pin=%s cs_active_high=%d"
% (self.oid, pin, cs_active_high))
# Generate SPI bus config message
+ self.config_fmt_ticks = None
if sw_pins is not None:
self.config_fmt = (
"spi_set_software_bus oid=%d"
" miso_pin=%s mosi_pin=%s sclk_pin=%s mode=%d rate=%d"
% (self.oid, sw_pins[0], sw_pins[1], sw_pins[2], mode, speed))
+ self.config_fmt_ticks = (
+ "spi_set_sw_bus oid=%d"
+ " miso_pin=%s mosi_pin=%s sclk_pin=%s mode=%d pulse_ticks=%%d"
+ % (self.oid, sw_pins[0], sw_pins[1],
+ sw_pins[2], mode))
else:
self.config_fmt = (
"spi_set_bus oid=%d spi_bus=%%s mode=%d rate=%d"
@@ -78,6 +85,12 @@ class MCU_SPI:
if '%' in self.config_fmt:
bus = resolve_bus_name(self.mcu, "spi_bus", self.bus)
self.config_fmt = self.config_fmt % (bus,)
+ if self.config_fmt_ticks:
+ if self.mcu.try_lookup_command("spi_set_sw_bus oid=%c miso_pin=%u "
+ "mosi_pin=%u sclk_pin=%u "
+ "mode=%u pulse_ticks=%u"):
+ pulse_ticks = self.mcu.seconds_to_clock(1./self.speed)
+ self.config_fmt = self.config_fmt_ticks % (pulse_ticks,)
self.mcu.add_config_cmd(self.config_fmt)
self.spi_send_cmd = self.mcu.lookup_command(
"spi_send oid=%c data=%*s", cq=self.cmd_queue)