Я работаю над чипом PIC18F55K42 некоторое время.PIC настроен как ведомый, и он правильно получает байты.Но я столкнулся с несколькими проблемами.
Например, когда я делаю:
i2cset -y 1 0x54 0x80 0x01
Это выглядит правильно на стороне контроллера, и я вижу адрес 0x80 (адрес данных) и значение байта0x01.
Когда я отправляю в режиме блокировки, например:
i2cset -y 1 0x54 0x80 0x01 0x02 0x03 0x04 i
Я вижу ложные байты, появляющиеся на контроллере.Точнее, это выглядит так:
ADDRESS 80 6c 00 2f 01 02 03 04 STOP
Сначала я подумал, что это как-то связано с моим контроллером, и даже попытался закопать егонастройки часов.Использовал логический анализатор Salae тоже.Там нет ничего плохого с контроллером или он настроен.Единственное место, о котором я могу думать, - это сложное распределение драйверов лука, которое выполняет Linux.
Я хотел бы знать, почему Linux отправляет 3 дополнительных байта (6c 00 2f
).Почему i2c_smbus_write_block_data
отправляет дополнительные байты и как этого избежать?