Нужно понимать механизм работы DMA. Началом каждой транзакции
служит request, которым физически является теневой флаг
подключенной периферии, разумеется нужно разришение арбитра шины.
После транзакции DMA получает ACK от шины, например APB,
декрементирует счетчик байт и ждёт новый request. Но этот ACK для
SPI означает просто копирование в сдвиговый регистр! Когда счетчик
байт становится равен 0, dma поднимает флаг TC, что может вызвать
прерывание. Так что это прерывание
означает только то, что
dma закончил работу, теперь нужно реагировать на прерывание от периферии.