DMA接受数据时关注的寄存器

本文关注DMA在接收数据时的寄存器配置,以SPI3为例,强调了DMABufferSize、MemoryDataSize和DMA_SetCurrDataCounter参数的重要性。当DMA将SPI值存储到uint16_t数组时,解释了如何根据BufferSize和MemoryDataSize设定数据传输次数,以及如何通过SxNDTR和DMA_FLAG_TCIFx判断传输完成。在DMA_Mode_Circular模式下,数据填充将从数组开头重新开始。
摘要由CSDN通过智能技术生成

首先要确定你需要存进来的那个值是正确的,我这里使用SPI3的值作为需要存入数据的外设,SPI3比较简单,但是比如ADC不同通道的话,一定要保证在一次触发后,在DR里面的是最后被读的通道的值。首先贴上配置DMA的代码吧。

    DMA_InitTypeDef  DMA_InitStructure;
    RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA1,ENABLE);
    DMA_DeInit(DMA1_Stream0);
	
    DMA_InitStructure.DMA_Channel = DMA_Channel_0;  
    DMA_InitStructure.DMA_PeripheralBaseAddr = (u32)&SPI3->DR;
    DMA_InitStructure.DMA_Memory0BaseAddr = (u32)arr;
    DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralToMemory;
    DMA_InitStructure.DMA_BufferSize = 1;
    DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
    DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;
    DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte;
    DMA_InitStructure.DMA_MemoryDataSize = DMA_PeripheralDataSize_Byte;
    DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;
    DMA_InitStructure.DMA_Priority =
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值