使用DMA方式读取spi flash问题求助

[复制链接]

小弟在读取spi类flash W25Q128时,发现速度很慢,经测试,只达到300KB/S作用的速度。与要求相差甚远,于是想,是否可用DMA方式来读取,以便速度能提高。

首先说一下SPI与DMA的配置,配置好SPI2,需要加SPI_I2S_DMACmd(SPI2,SPI_I2S_DMAReq_Rx,ENABLE); 一句代码,将SPI的CR2寄存器第一位置位,一旦RXNE时,发送DMA请求。DMA外设地址配制成    (u32)&SPI2->DR,配置成DMA_Mode_Normal方式。配置完成。

然后说一下,DMA启动后,利用SPIx_ReadWriteByte方式发送读取命令(0x03),然后发送读取的地址0x000000(起始地址),下一步while(!DMA_GetFlagStatus(DMA1_FLAG_TC4));经调试,程序在这一步循环。

最后说一下我自己发现的问题,我将关于DMA的代码注释,继续用SPIx_ReadWriteByte方式读取,发现可以读取,一切正常。我的疑问是,用SPIx_ReadWriteByte方式读取可以,说明数据可以通信,为什么用DMA不可以呢?是配置有问题,还是控制有问题?

还有,我仔细查看,发现SPIx_ReadWriteByte是先发送一个数据SPIx->DR = Data,然后再接受一个数据,return SPIx->DR;当我用于接受时发送的数据是0xff,如果不发送则无法接受。我觉得这一点似乎制约着DMA方式的读取。

求大神帮忙

dma读nand_使用DMA方式读取spi flash问题求助相关推荐

  1. 使用 STM32 的 SPI 来读取外部 SPI FLASH 芯片(W25Qxx)

    SPI简介 SPI 是英语 Serial Peripheral interface 的缩写,顾名思义就是串行外围设备接口.是 Motorola 首先在其 MC68HCXX 系列处理器上定义的.SPI ...

  2. STM32F4 HAL库开发 -- SPI Flash

    一.驱动 bsp_spi_flash.c #include "THC_Board_include_h.h"/* Private define ------------------- ...

  3. ESP32系列:三线SPI硬件设计及程序驱动设计(SPI FLASH为例)

    (1)三线SPI硬件设计 首先,ESP32是支持三线制和四线制的,三线制为半双工通信,四线制为全双工通信.如果你们用的芯片不支持三线制,就不要再折腾了,支不支持三线制,看芯片的datasheet.如图 ...

  4. STM32H743+CubeMX-QSPI+DMA读取外部FLASH(W25Q128JVSQ)

    文章目录 一.前言 二.硬件电路 三.CubeMX 3.1.Parameter Setting 3.2.GPIO Settings 3.3.MDMA Settings(重点) 3.4.CubeMX生成 ...

  5. 基于DMA通道的连续ADC扫描读取

    ADC ADC即是模数转换器,将电压信号转换为数字信号. 以stm32f407为例,其拥有18个12位ADC转换通道,其中16个外部通道以及俩个内部通道. ADC有单次,连续,扫描或间断模式执行转换, ...

  6. 【Computer Organization笔记25】I/O:程序直接控制,程序中断方式,直接存储访问(DMA),通道控制方式

    本次笔记内容: P49 计算机组成原理(49) P50 计算机组成原理(50) 我的计组笔记汇总:计算机组原理成笔记 视频地址:计算机组成原理 清华大学刘卫东 全58讲 国家精品课程 1080P 更完 ...

  7. SPI中断方式读取MPU6500数据

    学习背景 MPU6500是MPU6050的升级版同时支持IIC和SPI通讯协议:IIC协议相对于SPI协议读取速率更低,并且在STM32的平台下硬件IIC存在更多地不确定性.因此选择采用SPI的方式读 ...

  8. Arduino 利用串口缓冲区监听的方式读取数据

    Arduino 利用串口缓冲区监听的方式读取数据 相关篇<Arduino读取串口接收到的数据并发送数据> 利用串口缓冲区监听的方式读取数据,实现该功能依赖:serialEvent()此函数 ...

  9. 【Xilinx DMA SG】Xilinx DMA SG 模式

    DMA简介: AXI 直接存储器访问 (AXI DMA) IP 提供高带宽直接存储器 AXI4 存储器映射和 AXI4-Stream IP 接口之间的访问.它SG模式还可以从中央处理中卸载数据移动任务 ...

  10. STM32CUBEMX(9)--ADC通过轮询方式读取,USART打印

    STM32CUBEMX--ADC通过轮询方式读取,USART打印 概述 硬件准备 选择芯片型号 配置时钟源 配置时钟树 串口配置 ADC配置 生成工程设置 生成代码 配置keil 代码 演示效果 视频 ...

最新文章

  1. 【风之语】至贱城市之苏州
  2. Linux用户权限管理
  3. 比特币和比特币现金就隐私保护展开辩论
  4. java的drawstring_java-Graphics.drawString()未绘制
  5. 使用matplotlib,同时在多个figure画图
  6. 一步步教你如何用别人的无线上网,附带破解软件
  7. ConcurrentHashMap源码学习
  8. web前端技术分享Electron之IPC 通信
  9. 【BCVP升级】泛型主键的使用
  10. 2017新生儿爆款名字出炉!90后的父母们最受欢迎的居然是.....
  11. 何把SATA/RAID驱动集成到win xp 安装盘里?
  12. ebs oracle pl sql开发_ORACLEERP开发基础之EBS开发基础
  13. linux 0.11根文件系统,构建一个最小Linux根文件系统
  14. 用计算机设置变大的命令按钮 vb,VB教程:命令按钮(CommandButton)
  15. 音频soundpool
  16. JavaTutorials之Operators
  17. 俄罗斯方块游戏的算法
  18. 米兔机器人恐龙拼图手册_米兔积木 篇三:我与小米积木有个约会之米兔机器人平衡车版...
  19. 唐巧访谈: iOS大V的技术进阶之路
  20. 安全风险 microsoft 已阻止宏运行 因为此文件的来源不受信任

热门文章

  1. 【读书笔记】计算广告(第3部分)
  2. safari html5 自动全屏,javascript – 使用iOS Safari网络浏览器的全屏html5视频
  3. bsb 网络验证系统 安装教程 免费的易语言网络验证系统 真正免费 不收钱
  4. 将加密的pdf转化成word
  5. 条件概率密度与条件均值
  6. 怎样通过计算机修改蓝牙音箱,有线音箱怎么改蓝牙无线音箱 有线音箱改无线音箱方法介绍【详解】...
  7. 网络安全求职该怎么写简历?
  8. 简单Python爬虫实例:抓取豆瓣热映电影信息
  9. python opencv 裁剪图片_python通过opencv实现图片裁剪原理解析
  10. Git使用笔记[持续更新]