Во-первых, лоханулся с NSS - он отрабатывает нормально, просто я не туда ткнул щупом. Данные передаю на дисплей от Nokia 3310. Я поменял полярность и фазу синхронизации:
Код
SPI1->CR1 |= SPI_CR1_BIDIMODE | SPI_CR1_BIDIOE; // задаем режим передачи
Передача теперь идет, но с диким косяком - после передачи каждого столбца (1 байта) на дисплей передается еще один пустой. В отладке вызова функций передачи пустых байтов я не увидел. Такое впечатление, что котроллер передает не 1 байт, а сразу 2. В результате на дисплейе - растянутая картинка с пробелами на каждом втором столбике. Странно, вообщем, ведь я задал разрядность 8 бит:
Код
SPI1->CR2 |= SPI_CR2_DS_0 | SPI_CR2_DS_1 | SPI_CR2_DS_2; // задаем формат данных (разрядность)
Из-за чего может такое происходить?
SasaVitebsk, спасибо, что откликнулись!
Цитата(SasaVitebsk @ Oct 3 2012, 00:09)

Там надо управлять ещё битами SSM и SSI.
Иначе мастер автоматом сбрасывается.
SSM управляю - я его отключаю))) Почему? Это нужно, чтобы аппартно подавать NSS (при условии одного ведомого) на соответсвующий пин установкой бита SSOE.
А если SSM отключен, то и SSI управлять не нужно, по крайней мере так говорит мануал:
Цитата
Bit 8 SSI: Internal slave select
This bit has an effect only when the SSM bit is set.