Цитата(KnightIgor @ Sep 15 2013, 12:57)

Мне не поможет, т.к. количество байт для считывания может быть и нечетным.
Почему же?
Если данных четное число, то просто отправляем их 16 битными посылками.
Если нечетное, то отправляем один байт, дожидаемся приема. Затем отправляем четное количество данных.
Ожидание приема можно совместить с настройкой DMA, т.е. отправляете байт, настраиваете DMA, ждете флаг приема
(а с учетом Вашей скорости SPI он уже закончится), отправляете данные через DMA 16-битными словами.
Цитата(alexdos @ Sep 15 2013, 13:31)

А это как, на таймерах видеопамять ?
Обычно светодиодное табло - это длинный/длинные сдвиговые регистры. В случае динамической индикации все еще интереснее.
Так вот, на таймерах STM можно сделать отправку видеоданных через SPI и DMA с формированием всех необходимых
строб-сигналов. Т.е. остается только периодически вызывать refresh(), в которой инициализируется таймеры, DMA и SPI
- все остальное делается аппаратно, причем не для одной строки, а целиком для всей видеопамяти. Нагрузка на CPU 0%.