|

楼主 |
发表于 2018-11-1 22:17:03
|
显示全部楼层
硬汉兄,再问个问题,我的串口的dma发送数据调通了,但是我现在调试spi1的dma,死活调不通,就是启动不了传输,配置和串口的配置是一样的,只不过是把数据流和通道换成了spi1的,程序如下:
MYDMA_Config(DMA2_Stream2,37,(u32)&SPI1->RXDR,(u32)Rx_Buffer0,3,0);//关联相应通道的DMA RX 0表示外设到内存
MYDMA_Config(DMA2_Stream3,38,(u32)&SPI1->TXDR,(u32)Tx_Buffer0,3,1);//关联相应通道的DMA TX 1表示内存到外设
启动传输过程如下:
MYDMA_Enable(DMA2_Stream3,(u32)dat_ptr,rx_size);//开始一次DMA TX传输!
MYDMA_Enable(DMA2_Stream2,(u32)dat_ptr,rx_size);//开始一次DMA RX传输!
SPI1->CFG1 |= 1<<14; //RX DMA ENABLE
SPI1->CFG1 |= 1<<15; //TX DMA ENABLE
temp = 0xffffff;
while ((((DMA2->LISR )&(1<<27))==RESET) && temp--);
temp = 0xffffff;
while ((((DMA2->LISR )&(1<<21))==RESET) && temp--);
DMA2->LIFCR |= (1<<27);
DMA2->LIFCR |= (1<<21);
SPI1->CFG1 &= ~(1<<14); //RX DMA DISABLE
SPI1->CFG1 &= ~(1<<15); //TX DMA DISABLE
|
|