STM32F429 DMA 方式连接 ADS1274
Posted 姚家湾
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STM32F429 DMA 方式连接 ADS1274相关的知识,希望对你有一定的参考价值。
之前使用过ADS1246 24bit ADC 设计过产品。该芯片功能强大,可编程能力强。不过它的缺点是参数设置和通道选择,数据读写都是通过SPI 读写,无法实现DMA 模式数据传送。经测试,无法满足振动信号采集的要求。所以在设计振动信号测试IO板时,我们选择ADS1274 芯片。在本博文中,介绍如何使用STM32F429实现ADS274 的高速数据传送。内容会随着项目进展不断更新。
ADS1274 介绍
ADS1274 是TI公司的四路、128kHz、24 位同步采样 Σ-Δ ADC。相比于其它ADC 芯片而言:
- 它的所有功能都通过硬件引脚来选择,而不是使用SPI访问内部寄存器。
- 多路ADC 的采样数据通过不同的DOUT 输出,而不是使用SPI 命令来选择不同的模拟通道,所以每个通道的ADC 是同步输出的。不过这需要 FPGA 支持才可以。
- DOUT1 还具有SPI-TDM 的输出方式,即所有通道的数据已时分复用的方式在该通道上发送。
- 支持支持SPI和Frame-Sync两种模式。
- 支持TDM 模式,也就是在SPI 可以连续读取四个通道,不需要软件选择通道。我们选择SPI-TDM 模式
时钟输入(CLK)
ADS1274 需要一个外部时钟输入,当最大数据速率时,低压模式可以输入27M或者13.5Mhz
低速模式可以为27M或者5.4MHz
接口模式(FORMAT[2:0])
FORMAT[2:0] | 接口协议 | 数据模式 | 数据位置 |
000 | SPI | TDM | 动态 |
001 | SPI | TDM | 固定 |
010 | SPI | 离散 | - |
011 | Frame-Sync | TDM | 动态 |
100 | Frame-Sync | TDM | 固定 |
101 | Frame-Sync | 离散 | - |
110 | Modulator | - | - |
本项目选择001 固定 SPI TDM 方式
采样模式(Mode)
MODE【1:0】 | 模式选择 | max f Data |
---|---|---|
00 | 高速 | 144,531 |
01 | 高分别率 | 52,734 |
10 | 低功耗 | 52,734 |
11 | 低速 | 10,547 |
本项目选择 00.
接口
ADS1274 使用串口方式获取数据。有两种协议SPI TDM和Frame-Sync。
SPI-TDM 方式
SPI 兼容格式是只读模式。DRDY 下降沿表示数据就绪,然后通过SCLK 移出。ADC 是从模式,MCU 为主模式。sclk 在转换过程中,可以保持低电平,或者free run。
Frame-Sync方式
类似与音频ADC 的方式,它是一种被动方式,处理器必须发送FSYNC和串行时钟信号
DRDY/FSYNC
在Frame-Sync 模式下,这一引脚是FSYNC 的输入。在SPI-TDM 模式下是DRDY 输入。
SCLK
在Frame-Sync 模式下,SCLK 是连续的。在一个帧周期(FSYNC 时钟)内,SCLK 的脉冲数量是CLK 周期的 2幂分频数(也就是1,1/2,1/4 等)
同步信号SYNCHRONIZATION (SYNC)
当sync 为低电平时,adc 停止转换,内部计数器清零。当sync 为高电平时,转换重新启动
TEST 【1:0】
应该为00.
TDM 模式
在TDM模式下所有通道的数据都依次在一个引脚(DOUT1)顺序输出。
固定位置模式和动态位置模式
固定模式是不管通道是否power down 都输出通道的值,当power down 时,输出为0.ao
而动态模式时,如果某个通道power down 就不再tdm 中输出。
与STM32F4 连接的方案
我们使用过ADS1246芯片与STM32 通过SPI方式相连.使用软件读取SPI实现数据传送。传送速度不高。要提高传输速率,要做到两件事:
1 去掉软件选择模拟通道。采用所谓SPI-TDM 模式。
2 实现SPI 的DMA 传输。
本项目希望实现
- 采样频率 :15KHz
- 采样精度:24bits
- 模拟通道数:4
本方案选用ADS1274芯片。实现一次采集4 个通道64个采样,采用DMA 方式实现ADS1274 与STM32F429 之间的数据传送。
设计的关键是时钟系统(我们不希望使用FPGA)。具体考虑如下:
- 采样周期 15KHz
- 数据传送速率:15KHz*24*4=1.44MHz
设计方案
采用SPI-TDM 模式
- 使用TIM2 产生CLK,频率 1MHz
- 使用TIM3 ETR 输入对DRDY 计数一个脉冲 产生触发信号 触发SPI TX DMA 产生 SCLK 时钟,每次发送12 个字节
- SPI DMA 要开启两个DMA stream 一个是SPI TX 另一个是SPI RX DMA
- SPI TX DMA 设置成循环模式。
SPI 的传输速率 4MHz (高于CLK,应该没有问题吧?)
软件没有写,本文可能有错误。
2020/2 修改
以上是关于STM32F429 DMA 方式连接 ADS1274的主要内容,如果未能解决你的问题,请参考以下文章
STM32F429 定时器触发 USART DMA 传输问题