This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] ADS1258EVM-PDK:从 Anloge 更改为数字

Guru**** 2482685 points
Other Parts Discussed in Thread: ADS1258

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1555085/ads1258evm-pdk-anloge-to-digital

器件型号:ADS1258EVM-PDK
主题:ADS1258 中讨论的其他器件

工具/软件:

 我尝试将 ADS1258 ADC 转换器连接到 Arduino Mega 2560 微控制器。 我的 目标是 将信号施加到 ADS1258、将 ADS1258 连接到 Arduino、将 Arduino 连接到计算机、并读取计算机上的时变电压。 我正在使用的固定模式。 连接如下:

电源:
3.3V (ADC J5.9) 转实验室电源
5V (ADC J5.3) 连接到 实验室电源
GND (ADC J5.5) 连接到 实验室电源
信号线:
   函数发生器在 A0、A1 (ADC diff0) 上施加 20Hz、2Vpp 正弦信号
SCLK(ADC J6.3,输入)至 SLK(控制器 52,输出)
CS(ADC J6.7,输入)至 SS(控制器 53,输出)
DIN(ADC J6.11,输入)至 MOSI(控制器 51,输出)
DOUT(ADC J6.13,输出)至 MISO(控制器 50,输入)
DRDY(ADC J6.15,输出)至 INT(控制器 2,输入)
USB 电缆:
Arduino 到计算机
所有 ADC 转换器 配置设置 均为 默认值。 我的 Arduino 代码如下:

#include
const int DRDY=2;
const int DOUT=50;
const int DIN=51;
const int SCLK=52;
const int CS=53;

/* ADS1258 最小固定模式驱动器(单‑Ω 端 AIN0…AIN7)*/
#pragma once
#include

ADS1258 类{
公开:
ADS1258(uint8_t cs、uint8_t drdy、uint8_t start、uint8_t 复位)
:_cs(cs),_drdy(dy),_start(start),_reset(reset){}

void begin(){
pinMode (_cs、output);digitalWrite (_cs、high);
pinMode (_START、OUTPUT);digitalWrite (_START、LOW);
pinMode (_reset、output);digitalWrite (_reset、high);
pinMode(_drdy,输入);

SPI.begin();
SPI.beginTransaction(SPISettings(4000000UL、MSBFIRST、SPI_MODE0);

_hardwareReset();//步骤 1
_writeRegisters ();//步骤 3
digitalWrite (_start、high);//步骤 4
}

//*阻止直到 DRDY 下降、然后返回原始 24‑位样本和通道 id */
bool readSample (int32_t &code、uint8_t &channelId){
if (digitalRead (_drdy)) 返回 false;//尚未就绪

digitalWrite (_cs、low);
_spiTransfer (CMD_RDATA);// 0x30
Uint8_t status =_spiTransfer (0x00);
uint32_t d = 0;
D |=(uint32_t)_spiTransfer (0x00)<< 16;
D |=(uint32_t)_spiTransfer (0x00)<< 8;
D |=(uint32_t)_spiTransfer (0x00);
digitalWrite (_cs、high);

channelId = status 和 0x08;// Chid[4:0]:contentReferenc[oaicite:8]{index=8}
/*符号‑将 24‑位二进制‑补码扩展为 32 位*/
如果 (d & 0x800000) d |= 0xFF000000;
代码=(int32_t) d;
返回 true;
}

私人:
/*---- 低‑级帮助器----- */
静态 constexpr uint8_t CMD_RESET = 0xC0;// C[2:0]=110、MUL/A=0
静态 constexpr uint8_t CMD_WREG = 0x60;// C[2:0]=011、MUL=1、A=0000
静态 constexpr uint8_t CMD_RDATA = 0x30;// C[2:0]=001、MUL=1

void _hardwareReset(){
digitalWrite (_reset、low);delayMicroseconds (10);
digitalWrite (_reset、high);delay (2);//≥218 个 fCLK 周期:contentReferenc[oaicite:9]{index=9}
}

void _writeRegisters (){
静态常量 uint8_t regImage[]={
0x22、// CONFIG0–状态已启用、自动‑扫描、STAT=1:contentReference[oaicite:10]{index=10}
0x80、// CONFIG1–DRATE[1:0]=11(23.7ksps/通道) :contentReferenc[oaicite:11]{index=11}
//0x00、// MUXDIF:无差分对
0x08、// MUXCH–启用 AIN0…7
// 0x00 // MUXSG1–无 AIN8…15
};
digitalWrite (_cs、low);
_spiTransfer (CMD_WREG);
对于 (uint8_t b:regImage)_spiTransfer (b);
digitalWrite (_cs、high);
}

uint8_t _spiTransfer (uint8_t val){return spi.transfe (val);}

uint8_t _cs、_drdy、_start、_reset;
};

包含“ADS1258.h"</s>“
ADS1258 ADC (53、2、4、54);// CS=10、 DRDY= 2、START=3、RESET=4

void setup(){
Serial.begin(115200);
adc.begin();
}

void loop(){
int32_t 代码;uint8_t channelId;
if (adc.readSample (code、channelId)){
浮点 v =(CODE / 8388608.0)* 5.0;// VREF = 2.5V 单极的示例
serial.print(“CH")“);serial.print (channelId);
serial.print (“:“);serial.println (v、6);
}
}

但它不测量 AIN0、而是在 DOUT 随机数出现时进行测量。   您能帮忙吗  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Latifa Heydari:

    您是否确认了能够正确读取和写入寄存器? 这样可以确认 ADC 已正确通电并且时钟正常工作

    如果是、您能否读回“坏“数据的状态字节、以确认 Chid 位是否正确、以及 ADC 是否以正确的顺序通过通道扫描?

    您能分享系统原理图吗?

    如果事实证明这是一个通信问题、您还需要一个逻辑分析仪来帮助进行诊断

    -布莱恩

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

     

    嗨、Bryan、上面是图像、  

    黄色= DOUT

    绿色= DIN

    蓝色= CS

    紫色= SCLK

    我无法读取或写入寄存器、串行监控读取:

    CH0:0.000000
    CH0:–5.000000 .186768
    CH0:0.078125
    CH0:1.250000
    CH8:–1.25000.000000
    CH0:0.019531
    CH8:–2.343674
    CH0:0.253906
    Ch0:0.292969
    CH0:0.186768
    CH0:0.078125
    CH0:1.250000
    Ch8:–1.250000
    CH0:0.00241
    ⸮1.

    您所说的原理图是什么?  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Latifa Heydari:

    很遗憾、您的图像无法正确开机自检。  请重试、您可以再次检查您的帖子、确保在点击“回复“后图像可见

    “原理图“是指使用 ADS1258 连接到 Arduino 的 PCB 原理图。

    -布莱恩