ээээ... Какой Вы веселый !!
SPI_DEV_DMA_TX->CCR &= ~DMA_CCR1_EN;
// для эксперименту ставлю здесь
if ((SPI_DEV_DMA_TX->CCR & ~DMA_CCR1_EN) != 0)
{
while(true); // и ставлю здесь брекпоинт! и нихуа никогда сюда не попадаю!
}
if ((data.size > 0) && (data.buf != NULL))
{
SPI_DMA->IFCR = 0xFFFF;
SPI_DEV_DMA_RX->CMAR = (uint32_t)data.buf;
SPI_DEV_DMA_RX->CNDTR = data.size;
SPI_DEV_DMA_TX->CMAR = (uint32_t)data.buf;
SPI_DEV_DMA_TX->CNDTR =
data.size;
SPI_DEV_DMA_TX->CCR |= DMA_CCR1_EN;
SPI_DEV_DMA_RX->CCR |= DMA_CCR1_EN;
более того !
if ((data.size > 0) && (data.buf != NULL))
никаким образом не относится к spi , это лишь проверка есть ли данные в пакете кроме команды