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.

[参考译文] ADS1285:寄存器编程问题

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1300822/ads1285-register-programming-problem

器件型号:ADS1285

大家好、团队成员。

我在寄存器的配置方面遇到了一些问题。

"write_ads1285_register ()"是 我用于写入 所有寄存器的函数;

"write_single_register (adress、data)"是 我用于写入 单个寄存器的函数;

"read_ads1285_register ()"是 我用来读取所有寄存器的函数;

它们通过 SPI 进行传输、

{0x40、0x0D、0x00、0x12、0x00、 0x32、0x03、0x00、0x00、0x00、 0x00、0x00、0x40、0x00、0x00、 0x80}

{0x20、0x0D、0x00、0x00、0x00、 0x00、0x00、0x00、0x00、0x00、 0x00、0x00、0x00、0x00、0x00、 0x00}

这些数据将被写入寄存器/以读取配置

WRITE_ADS1285_REGISTER ();

while (1){read_ads1285_register ();}

我得到的是:00 12 00 32 03 00 00 00 00 00 00 40 08 00 80  

这意味着 GPIO0_DAT[3:3]是高电平模式,

除非我发送以下代码、否则我无法更改它:

WRITE_SINGLE_register (0x4b、0x02);
Read_ads1285_register();
WRITE_SINGLE_register (0x4b、0x00);
Read_ads1285_register();


我得到了以下信息:

00 12 00 32 03 00 00 00 00 40 02 00 80

00 12 00 32 03 00 00 00 00 00 40 00 80

如果我只在为  GPIO0_DAT[3:3]得到"08"后执行此操作  

WRITE_SINGLE_register (0x4b、0x00);
Read_ads1285_register();

我得到的仍然是"08"

此寄存器的默认值不是0x00吗?它是否有"08"的特殊含义?

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

    您好 Xingwitt:

    向 GPIO 寄存器写入02会将 GPIO 引脚配置为输入。  读回该值时、即表示正在读取本例中位[4:3]的 GPIO 引脚状态。  当您将02写入此寄存器时、您现在已将 GPIO0配置为输出、该位的读取值将始终等于您写入该位的值。

    根据此行为、我假设 GPIO 引脚(15和16)未连接到任何地方、并且当配置为输入时、它们是悬空的。  根据泄漏电流的不同、GPIO 寄存器中的位读数可以为0或1。

    此致、
    N·基思
    精密 ADC 应用

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

    大家好、

    感谢您 解决我的 问题。

    当我尝试通过更改寄存器配置来更改通道时、我需要使用 ads1285的两个通道、地址为0x02。 多路复用器:000b =输入1 001b =输入2、我发现当写入寄存器 的时间间隔少于大约15~25ms 时、ADC 的通道输出数据看起来很混乱。 更具体地说、当我要读取通道1时、输出数据 是:通道2、或者:通道1和2。当切换时间大于此值时、这个现象消失、这意味着 我读取通道1时、输出数据 是通道1。

    我可以 改变这种情况、使之更省时吗?

    此致、
    兴维特

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

    尊敬的 Xingwitt:

    Keith 将参加美国当地的假期、请预计1月1日起一周内会收到回复

    感谢您的耐心等待

    -Bryan

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

    您好 Xingwitt:

    ADS1285使用内部数字滤波器、更改通道时、必须让此滤波器完全稳定。  如果使用的是 sinc+FIR 滤波器、则需要等待66个采样率周期才能完全稳定。  如果将数据速率设置为4ksps,则需要66*1/4000=16.5ms。  如果您希望获得更短的稳定时间、则需要使用 sinc 滤波器输出。  使用高功率或中功率模式、DR=0x000b 时、数据速率将为8ksps。  sinc 滤波器将需要6个数据速率样本才能稳定,即6*1/8000=0.75ms。

    此致、
    基思

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

    尊敬的 Keith:

    我 用 SINC+FIR 滤波器给 ADS1285提供一个正弦信号(单端输入、-0.5V)、输出数据是-0.5V 正弦信号、这是正确的、但当我使用正弦滤波器时、输出数据看起来很奇怪--- 这是一个正弦信号 、有三条线重合、 峰峰值大约是-0.23V、跟我输入的相比是不正确的(下图是用同一个输入、左边 用的是 sinc+FIR 滤波器、右边用的是 sinc 滤波器)

    这是否意味着如果我要选择 更短的稳定时间 并获取正确的输出数据、我应 配置以下寄存器:

    CONFIG0 (地址0x01):0x22、表示4ksps、 使用 sinc+FIR 滤波器

    CONFIG1 (地址0x02):0x00、表示 input1

    然后、

    CONFIG0 (地址0x01):0x01、表示   要建立8ksps 和6个数据速率样本

    CONFIG1 (地址0x02):0x20、表示 INPUT2

    CONFIG0 (地址0x01):0x22、表示4ksps、 使用 sinc+FIR 滤波器

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

    尊敬的 Xingwitt:

    我们需要更多时间来回答此问题、请预计在大约1周内得到答复。 感谢您的耐心等待

    -Bryan

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

    尊敬的 Xingwitt:

    我们本周无法回答这些问题、我们希望在下周一星期三之前给您回复、因为星期一是假日

    -Bryan

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

    您好 Xingwitt:

    ADS1285使用抖动功能来减少低频通带中的空闲音调。  该抖动功能基本上是一个添加到输入信号中的0.25Vpp 方波。  使用 FIR+SINC 滤波器选项时、该抖动频率被移除。  Sinc 滤波器选项的使用仅与系统处理器中的附加 FIR 滤波器功能搭配使用。  遗憾的是、无法关闭此功能、因此、要使用 ADC、您需要使用 FIR+sinc 函数、因为当在通道之间切换时、该函数的稳定时间会很长。

    以下是仅使用 SINC 滤波器时的输出波形。

    此致、
    基思