Разобрался что происходит, но не было времени разобраться (вернее проверить как надо знаю

) как грамотно решить проблему. Жесткий график проекта не давал продохнуть.
При старте SAI думает, что в FIFO уже есть один байт. Это и вызывает сдвиг. По хорошему перед вызовом функции куба передачи через DMA надо промыть (flush) FIFO, но не было времени проверять.