Цитата(Golikov A. @ Jan 22 2015, 13:00)

а синхронизация как? Прерывание по первому пришедшему байту?
Точно уже не помню.
Вроде так:
спад CS - в ISR от GPIO программируем цепочку SPI+GPDMA+таймер;
сигнал SCLK заводим на счётный вход таймера, его настраиваем на сброс и генерацию DMA-request каждый 16-й клок (16 битные слова).
Размер блока был фиксированный и заранее известный - по прерыванию от завершения DMA отключаем всё хозяйство.
Данные шли от FPGA с нашей прошивкой, так что была возможность в ней сделать увеличенную паузу от спада CS до начала SCLK, чтобы
всё успело запрограммироваться. Но при необходимости можно было сделать и предварительное программирование цепочки SPI+GPDMA+таймер
по фронту предыдущего CS.
Цитата(Golikov A. @ Jan 22 2015, 13:00)

SSP - мастер быстрее SPI мастера, а SSP slave медленнее... чудно

Так SPI - проще - транзисторов и паразитных емкостей меньше, поэтому наверное и быстрее