Цитата(HHIMERA @ Jan 9 2013, 21:39)

Ещё раз... не то же самое!!!
Смотрим в книгу... Конец передачи - RXNE и BSY изменяются одновременно. То есть, при проверке окончания передачи можно использовать и тот, и другой биты, с одинаковым успехом. При передаче многобайтовых последовательностей для записи байтов в DR лучше проверять TXE, а конец передачи определять, как сказано выше. Хотя можно записывать байты и по и RXNE, можно и по BSY . Но тогда появятся задержки между передачами байтов. Поскольку CS мы формируем программно, не страшно.
Нажмите для просмотра прикрепленного файлаЦитата
Просто пришло понимание, что и как работает... и только...
Проверим? Для связи STM32F207 с M25PE40 (мастер и слейв, соответственно, пишу для полного понимания) мне пришлось программировать SPI следующим образом. Вывод NSS я прицепил на /S памяти, рассчитывая управлять аппаратно. Но не получилось. Пришлось использовать, как GPIO.
CODE
/* SPI1 -- связь с SFM M25PE40
8-bit, MSB first, SPEn, Fpclk2 / 4 (15 MHz), Master, CPOL=0, CPHA=0 */
SPI1->CR1 =
SPI_CR1_CPHA * 0 | // Clock Phase
SPI_CR1_CPOL * 0 | // Clock Polarity
SPI_CR1_MSTR * 1 | // Master Selection
SPI_CR1_BR_0 * 1 | // Baud Rate Control - fpclk2 / 4 = 15 MHz
SPI_CR1_BR_1 * 0 | //
SPI_CR1_BR_2 * 0 | //
SPI_CR1_SPE * 1 | // SPI Enable
SPI_CR1_LSBFIRST * 0 | // Frame Format
SPI_CR1_SSI * 1 | // Internal slave select
SPI_CR1_SSM * 1 | // Software slave management
SPI_CR1_RXONLY * 0 | // Receive only
SPI_CR1_DFF * 0 | // Data Frame Format
SPI_CR1_CRCNEXT * 0 | // Transmit CRC next
SPI_CR1_CRCEN * 0 | // Hardware CRC calculation enable
SPI_CR1_BIDIOE * 0 | // Output enable in bidirectional mode
SPI_CR1_BIDIMODE * 0; // Bidirectional data mode enable
SPI1->CR2 =
SPI_CR2_RXDMAEN * 0 | // Rx Buffer DMA Enable
SPI_CR2_TXDMAEN * 0 | // Tx Buffer DMA Enable
SPI_CR2_SSOE * 0 | // SS Output Enable
SPI_CR2_FRF * 0 | // Protocol format - 0: SPI Motorola mode, 1: SPI TI mode
SPI_CR2_ERRIE * 0 | // Error Interrupt Enable
SPI_CR2_RXNEIE * 0 | // RX buffer Not Empty Interrupt Enable
SPI_CR2_TXEIE * 0; // Tx buffer Empty Interrupt Enable
Обратите внимание на SSM и SSI. Ни при каких других комбинациях SPI не работал. В отличие от STM32F103, где была другая комбинация магических битов.
Объясните, зачем нужны эти биты, если ногой NSS я управляю, как GPIO. Покажите, в каком месте руководства это написано. Покажите, как работает у вас.
P.S. А мануал я листаю в начале начал, а не в конце концов.