Все не очевидно. Hal просит два буфера по uint32 , и просит длину буфера. В этом и вопрос оказался. Какую длину буфера ставить? Вот я нормальный программер поставил длину буфера как есть 1024. Как потом выяснилось , что hal отправляет через дма пол слова! Что впринципе разумно цап всего 12 бит и смысла отправлять 32 бита нет. Вот и пришлось длину для hal ставить в два раза длиннее, так как он хочет количество отправок по пол слова 16 бит.
Ну и заполнение буфера нужно было делать в uint32 два значения амплитуды для цап по 16 бит.
Короче : при работе с Hal там где он просит длину - нужно ставить количество отправок.