(gdb) bt#0 I2C_MasterWrite (i2c=i2c@entry=0x4001e000, addr=<optimized out>, data=<optimized out>, data@entry=0x2003ffbc "\r\002\377\377", len=<optimized out>, len@entry=2, restart=restart@entry=0) at ../lib/sdk/Libraries/MAX32665PeriphDriver/Source/i2c.c:347#1 0x100217d2 in max86150_write_register (address=address@entry=94 '^', reg=<optimized out>, value=<optimized out>) at ../lib/vendor/Maxim/MAX86150/max86150.c:858#2 0x10021822 in max86150_bit_mask (reg=reg@entry=13 '\r', mask=mask@entry=253 '\375', thing=thing@entry=2 '\002') at ../lib/vendor/Maxim/MAX86150/max86150.c:837#3 0x10021872 in max86150_shut_down () at ../lib/vendor/Maxim/MAX86150/max86150.c:256#4 0x100124dc in hardware_early_init () at ../epicardium/modules/hardware.c:196#5 0x10010738 in main () at ../epicardium/main.c:27
Adding a print before the call to I2C_MasterWrite() "solves" the issue. This I2C peripheral is weird.