Цитата(k155la3 @ Mar 30 2017, 17:11)

Вам надо разделить адресацию (в смысле понимания) для мастера и слейва.
- Адресация по шине I2c - 7-битная, без всяких "подаресов".
- Адресация регистров мастера
- Адресация регистров слейва.
Добейтесь четкого отрабатывания:
- посылки адреса слейва
- проверки ответа от него ACK (ответ только на "свой" адрес)
Если это будет работать - можно двигать дальше.
Судя по даташиту, ОНО должно работать из терминалки - так как команды ASCII.
Также надо проверить инициализацию самого мастера (настройки его регистров)
Обратите внимание на fifo - возможно надо делать операции подобные purge/drain fifo
чтобы команда пошла на исполнение (как в PC так и в мастере).
Так я из терминалки сейчас и мучаю его.
До регистров мастера достучатся не проблема, там всё четко.
Чуть выше я не верно описал последовательно команд.
Было так: старт/адрес слейва+чтение/количество принимаемых байт/регистры ведомого (0С)/конец пакета это из описания на SC18
53 D9 01 0С 50
Из описания на слейв должно выглядеть так: старт/адрес слейва+чтение/регистры ведомого (0С)/рестарт/количество принимаемых байт//конец пакета
53 D9 0C 53 D9 01 50
Как я писал ранее Если послать слейву команду 53 D9 01 50, то я получу один байт в ответ, если 53 D9 0А 50 то соответвенно 10 байт в ответе. Но значения байтов в этих ответах всё время разные. На другие адреса слейв не отвечает.
Отсюда следует, что мастер воспринимает 3-ий байт как значение количества байт которые он должен принять от слейва.
Цитата(k155la3 @ Mar 30 2017, 17:11)

Обратите внимание на fifo - возможно надо делать операции подобные purge/drain fifo
Не совсем понял где делать эти операции? FIFO у м/сх 16 байт, что вполне хватает для команды чтения.
Хм, поковырял еще немного вроде добился чтения вот такой командой, как раз как советовали read after write старт/адрес+бит записи/количество байт/регистр куда делать запись/рестарт/адрес+бит чтения/количество байт получаемых/стоп