mirror of
https://github.com/Klipper3d/klipper.git
synced 2025-08-07 05:54:05 -06:00
i2c_software: allow freq adjust
Signed-off-by: Timofey Titovets <nefelim4ag@gmail.com>
This commit is contained in:
parent
abc76ee963
commit
8ab12c86bf
1 changed files with 7 additions and 0 deletions
|
@ -26,12 +26,19 @@ command_i2c_set_software_bus(uint32_t *args)
|
|||
{
|
||||
struct i2cdev_s *i2c = i2cdev_oid_lookup(args[0]);
|
||||
struct i2c_software *is = alloc_chunk(sizeof(*is));
|
||||
uint32_t rate = args[3];
|
||||
is->ticks = CONFIG_CLOCK_FREQ / (100000 * 2); // 100KHz
|
||||
is->addr = (args[4] & 0x7f) << 1; // address format shifted
|
||||
is->scl_in = gpio_in_setup(args[1], 1);
|
||||
is->scl_out = gpio_out_setup(args[1], 1);
|
||||
is->sda_in = gpio_in_setup(args[2], 1);
|
||||
is->sda_out = gpio_out_setup(args[2], 1);
|
||||
while (rate > 100000) {
|
||||
rate = rate >> 1;
|
||||
if (rate < 100000)
|
||||
break;
|
||||
is->ticks = is->ticks >> 1;
|
||||
}
|
||||
i2cdev_set_software_bus(i2c, is);
|
||||
}
|
||||
DECL_COMMAND(command_i2c_set_software_bus,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue