STM32F429 DMA 方式连接 ADS1274

      之前使用过ADS1246 24bit ADC 设计过产品。该芯片功能强大,可编程能力强。不过它的缺点是参数设置和通道选择,数据读写都是通过SPI 读写,无法实现DMA 模式数据传送。经测试,无法满足振动信号采集的要求。所以在设计振动信号测试IO板时,我们选择ADS1274 芯片。在本博文中,介绍如何使用STM32F429实现ADS274 的高速数据传送。内容会随着项目进展不断更新。

ADS1274 介绍

ADS1274 是TI公司的四路、128kHz、24 位同步采样 Σ-Δ ADC。相比于其它ADC 芯片而言:

  1. 它的所有功能都通过硬件引脚来选择,而不是使用SPI访问内部寄存器。
  2. 多路ADC 的采样数据通过不同的DOUT 输出,而不是使用SPI 命令来选择不同的模拟通道,所以每个通道的ADC 是同步输出的。不过这需要 FPGA 支持才可以。
  3. DOUT1 还具有SPI-TDM 的输出方式,即所有通道的数据已时分复用的方式在该通道上发送。
  4. 支持支持SPI和Frame-Sync两种模式。
  5. 支持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 传输。

本项目希望实现

  1. 采样频率 :15KHz
  2. 采样精度:24bits
  3. 模拟通道数:4

    本方案选用ADS1274芯片。实现一次采集4 个通道64个采样,采用DMA 方式实现ADS1274 与STM32F429 之间的数据传送。

设计的关键是时钟系统(我们不希望使用FPGA)。具体考虑如下:

  1. 采样周期 15KHz
  2. 数据传送速率:15KHz*24*4=1.44MHz

设计方案

采用SPI-TDM 模式

  1. 使用TIM2 产生CLK,频率 1MHz
  2. 使用TIM3 ETR 输入对DRDY 计数一个脉冲 产生触发信号 触发SPI TX DMA 产生 SCLK 时钟,每次发送12 个字节
  3. SPI DMA 要开启两个DMA stream 一个是SPI TX 另一个是SPI RX DMA
  4. SPI TX DMA 设置成循环模式。

SPI 的传输速率 4MHz (高于CLK,应该没有问题吧?)

软件没有写,本文可能有错误。

2020/2 修改

 

 

你可能感兴趣的:(C++,mbed)