Ну я вот за основу взял исходники с ST.. там явный косяк реализации
при чтении массива... Как я понял, чтение следующего байта стартует сразу после выгребания из регистра свеже полученного. Отсюда лишние такты по окончании.
А отдаленный СТОП решился (в статейке в инете нарыл) вот этим:
I2Cx->CR1 &= ~I2C_CR1_ACK;
сейчас как-то красиво заработало. Теперь то же самое дерьмо разгребать придется по записи.