По-первых, в таком случае, (вы фактически пишите-отлаживаете сами, на основе библиотечных ф-ий) ,
- отключить слейв(ы).
- "закольцевать" SPI - соединяем MOSI-MISO (на процессоре, все слейвы должны быть отключены от шины)
При этом на первый же засланый в SPI байт Вы должны получить егоже по Rx. При корректной работе ф-ий.
-
Код
(AVR32_SPI_SR_RDRF_MASK | AVR32_SPI_SR_TXEMPTY_MASK)) !=
(AVR32_SPI_SR_RDRF_MASK | AVR32_SPI_SR_TXEMPTY_MASK))
Такие конструкции часто работают не так как предполагает автор, малочитабельны и способствуют ошибкам.
Разложите на пару if. Возможно в этом причина.
При работе функций как приема, так и передачи - проверяйте "свободность" регистров на передачу.
Проверяйте, перед чтением последнего байта, что буфер и сдвиговый регистр передатчика свободны.