STM32上SPI+DMA实现大批量读取flash数据

最近做项目需要使用SPI+DMA,为了做实验感受DMA传输数据块,本人以SPI+DMA来读取flash中的数据。网上有很多例程是spi直接读取flash,无法提高性能。因为只是简单的实验SPI的DMA功能,所以在写数据时并没有考虑页写一些制约,只是简单的将1k大小的数据写入flash,然后用DMA读出这1K大小的数据,相信SPI和DMA的配置大家都很熟悉了,本人在此不在强调,只是说几点注意点的:

(1)DMA关于SPI通道的选择,在stm32中,SPI1_RX读请求是DMA通道2,SPI1_TX发送请求是DMA通道3。刚开始我在配置通道的时候没仔细看,看的是SPI/I2S2_RX这个请求,把通道配置成了通道四和通道五,结果一直无法出来结果。所以这个是第一个要注意的。


(2)设置发送和接收缓冲区,并且对发送缓冲区初始化,本例中我设定发送和接收缓冲区大小是1K,可以根据自己需要设定,本帖子起抛砖引玉作用。

uint32_t Tx_Buffer[256];
uint32_t Rx_Buffer[256];

对发送缓冲区初始化:

for(i = 0; i< 256; i++)
{
Tx_Buffer[i] = i;
}

下面是对DMA的初始化,本例中没有用到中断。

void DMA_Config(void)
{
DMA_InitTypeDef DMA_InitStructure;

/*开启时钟*/
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);

  • 13
    点赞
  • 72
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值