STM32F207通过FSMC读取ADC数据

1.控制寄存器配置


19:写突发使能
0:写操作为异步模式,1:同步模式
15:异步传输等待模式
0:异步时不等待(默认),1:异步时等待
14:扩展模式
可编程BWTR寄存器
0:关闭(默认),1:开启
13:等待模式
0:NWAIT无效,1:有效(默认)

2.时钟配置

每次读数只有七个脉冲,而adc要求有8个时钟周期的时延。
看看没发读数命令时是否有时钟输出?
看看单次发读数命令是否只有一个脉冲串?
为什么fsmc初始化完成后直接64m内存就写满数据了?

单步运行程序,每运行一次,发送的是一组脉冲串,每组脉冲串内部有7个脉冲,频率为20MHz,此为ADC采样频率。脉冲串之间的间隔为20us,脉冲串个数未知,但是从0x60000000地址开始的64M地址空间全部写满。

现象1:将 hsram1.Init.BurstAccessMode = FSMC_BURST_ACCESS_MODE_DISABLE;设为DISABLE后,时钟脉冲消失;
现象2:使用DEBUG模式读0XA0000000地址空间时,时钟脉冲也会消失;改成读0X60000000时又会重新出现。

发现NE1信号每隔20us触发一个低电平,宽度400ns
NADV信号宽度50ns,但是触发频率一直在抖动

同步突发模式只有CLKDIV和DATLAT两个设置项,不知道怎么设置读数长度。
把DATLAT默认是设置为2,设置成0后,脉冲数变为20个,NE1低电平脉冲宽度1us,但是时间间隔变成40us

好像是使用的单次突发模式

fsmc的同步工作模式应该是初始化之后就一直开始读数。然后配置psram的同步模式,应该把datlat设置成0。每次脉冲串会有21个脉冲。这个模式不能控制读数时间长度,不能一直连续读数,所以与ADC之间应该加一个双口RAM。

datlat设置成2是7个脉冲,3是8个脉冲,最多设置成15,一共20个脉冲

发现ADC输出不正常原因是STM32的MCO时钟输出引脚速度配置为低,导致时钟不对。

2020.2.11
在ADC和STM32中间加一个FIFO,FIFO与STM32的通信还是采用FSMC功能
我们只有一个外设,然后又没有地址,所以NE和NADV信号不需要,就直接把NOE送给FPGA,等一个周期后再转发给FIFO的RDEN,然后把NWAIT信号接到FIFO的EMPTY,如果没数据就等待,有数据就读数.
NWAIT的CFG设置为1,

2020.02.20
ADC-----FPGA-----STM32
FPGA里面做FIFO和RAM两级缓存。FIFO接收STM32的写控制指令来读ADC的数据,一边读一边给RAM发送数据;RAM接收的数据循环存储在地址空间里面,收到SMT32的读数指令后将最新的20000个数据通过FSMC发送给STM32。

STM32F207通过FSMC读取ADC数据相关推荐

  1. 【GD32】GD32读取ADC数据

    GD32的ADC有很多模式,这里教大家使用最简单的软件触发读取ADC,我使用的芯片是 GD32F350K8U6 使用步骤 1.初始化IO引脚设置为模拟输入模式 2.初始ADC时钟和配置ADC 3.软件 ...

  2. 复旦微ZYNQ procise axi读取adc数据

    1,使用vivado2018.3搭建block design 2,点击菜单栏 File -> Export -> Export Hardware,勾选 Include bitstream, ...

  3. STM32学习:通过DMA读取ADC规则通道多通道转换数据

    1.STM32的DMA简介 直接存储器存取(DMA)用来提供在外设和存储器之间或者存储器和存储器之间的高速数据传输.无须CPU干预,数据可以通过DMA快速地移动,这就节省了CPU的资源来做其他操作. ...

  4. Arduino RP2040 读取ADC采样数据

    Arduino RP2040 读取ADC采样数据

  5. 用GPIO模拟SPI接口读取传感器数据

    本文基于平头哥开发板RVB2601,简要介绍了用GPIO模拟SPI时序逻辑,实现SPI协议,按照特定温度传感器的时序,读取其数据,及示例程序 一.概述 SPI(Serial Peripheral In ...

  6. 使用Matlab提取ADC数据占空比变化的波形

    提取变化占空比的规则如下: 1. 如果占空比发生 >=5% 的变化,则认为占空比发生变化: 2. 正常的1个周期100个,其中连续 <0.1V 变化的点约为40个左右: 3. 那么,40* ...

  7. RA4M2开发(3)----读取ISL29035数据,并在OLED上显示,串口打印

    概述 首先导入必要的库文件,包括I2C驱动和OLED驱动. 在代码中配置I2C接口,并初始化I2C驱动. 配置ISL29035传感器,包括配置传感器的工作模式和量程. 使用I2C读取ISL29035传 ...

  8. STM32H7并行读取AD7606数据以及片内AD值不准解决办法

    一.硬件 先了解一下AD7606,16位,单电源,200k采样率,8路,除了贵没有其他缺点,数据相当的稳,一个5V供电,不用运放的情况下采集电压精度可以达到1mv,非常Nice 与单片机相连 单片机 ...

  9. TensorFlow csv读取文件数据(代码实现)

    TensorFlow csv读取文件数据(代码实现) 大多数人了解 Pandas 及其在处理大数据文件方面的实用性.TensorFlow 提供了读取这种文件的方法. 前面章节中,介绍了如何在 Tens ...

  10. SharePoint2010沙盒解决方案基础开发——关于TreeView树形控件读取列表数据(树形导航)的webpart开发及问题...

    转:http://blog.csdn.net/miragesky2049/article/details/7204882 SharePoint2010沙盒解决方案基础开发--关于TreeView树形控 ...

最新文章

  1. python3 仿写PHP gzip解压缩
  2. 如何在Tomcat中设置JNDI数据库连接池-Spring教程示例
  3. html5调用手机摄像头和相册,h5 调用手机摄像头/相册
  4. Java SSM篇5——SpringMVC
  5. 判断并输出三个数abc 中的最大值 (C语言)
  6. STS创建Spring Boot项目实战(Rest接口、数据库、用户认证、分布式Token JWT、Redis操作、日志和统一异常处理)
  7. 只会用console.log调试?快来试试这些高效的调试方法
  8. paip.修复文件关联总结
  9. 解决mysql编码问题_解决mysql乱码问题
  10. 进程线程----转自林海峰
  11. 数据采集及预处理——针对“数据”“采集”“预处理”的理解与解析
  12. 字节内推 面试进度可查询 拒绝石沉大海 !!!
  13. python工商银行流水_python爬取银行名称和官网地址
  14. 嵌入式开发学习笔记9-做一个好玩的LED闪烁
  15. 关于死亡最温暖的解答
  16. Java中的测不准原理
  17. 贪心 csust1250 绮礼的阴谋
  18. TED:Grit: The power of passion and perseverance(Angela Lee Duckworth)
  19. 2021年中国境内上市公司数量及融资情况:首发上市公司及募资总额均创近10年新高[图]
  20. bitcoin 基础(一)

热门文章

  1. 一步到位,直播系统源代码搭建直播推流服务器
  2. App后台开发运维和架构实践读书笔记
  3. 施耐德c语言编程软件,施耐德PLC讲座 IEC语言梯形图
  4. EST 云硬盘修复小工具-SAS希捷固件升级工具
  5. JAVA32位的如何换成64位的_win10系统中怎么把32位改成64位教程
  6. 应用时间序列分析(王燕)学习笔记1
  7. 添加无线网连接服务器,单片机加WIFI模块,一直无法连接到TCP服务器麻烦大家看看...
  8. php opendir(),php之opendir()函数的用法
  9. matlab数理统计工具箱,Matlab数理统计工具箱应用简介
  10. Sublime text3安装Emmet插件及PyV8