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.

[参考译文] ADS122C04:ADS122C04数据速率问题

Guru**** 2390755 points
Other Parts Discussed in Thread: ADS122C04

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/797697/ads122c04-ads122c04-data-rate-issue

器件型号:ADS122C04

大家好、我正在为 ADS122C04编写一个驱动程序、我有一些有趣的问题。

我首先写入并验证四个配置寄存器的内容:

>>
DET ADC 初始化(ADDR:80)
验证 ERR_NONE、reg:40、01 -> 01
验证 ERR_NONE、reg:41、B2->B2
验证 ERR_NONE、reg:42、20 -> 20
验证 ERR_NONE、reg:43、00 -> 00 

然后、我在单次触发模式下读取10个样本、方法是使用中断监控 nDRDY 引脚、以了解重复发送 START 命令可在单次触发模式下实现的最大采样率。

3595 ADC 采样数据:115A3A
3646 ADC 采样数据:C66D3A
3698 ADC 采样数据:40693A
3749 ADC 采样数据:4C713A
3801 ADC 采样数据:1B5D3A
3852 ADC 采样数据:6653A
3904 ADC 采样数据:BB623A
3955 ADC 采样数据:99663A
4007 ADC 采样数据:C693A
408683A ADC 采样数据:C693A 

第一个数字是以毫秒为单位的当前操作系统时间、最后一个十六进制代码是格式错误的 ADC 样本(不是当前的问题)。

如您在配置中所见、我将寄存器$01 ($41写入、$21读取)设置为值 B2、该值应为1000 SPS、正常模式、单次触发、外部参考、温度传感器禁用。

但是、无论出于何种原因、我的数据速率都保持在~20Hz、这是默认速率(采样时间增量~ 50ms)。 我尝试下载评估套件 GUI 软件以查看 TI 用于配置器件的配置、但下载 zip 文件中包含的唯一内容是 code composer 和 makefile 的构建结果。

我的问题如下:

1 -我是否误解了配置过程?

2 -任何人是否有此部件的任何参考代码?

提前感谢

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

    更清楚的是、下面是我手动启动的转换、显示配置寄存器在不发送 START 命令的情况下发生变化。

    >> i2c 读取80 21 1
    个水文结果:ERR_NONE
    读取结果:ERR_NONE
    地址:80、寄存器:21、数据:00
    发布结果:ERR_NONE
    
    >> i2c 写入80 41个 C2
    水文结果:ERR_NONE
    写入结果:ERR_NONE
    发布结果:ERR_NONE
    
    >> i2c 读取80 21 1
    个水文结果:ERR_NONE
    读取
    结果:80:C2
    数据:21:C2发布结果: ERR_NONE
    
    >> i2c 读取80 21 1
    个水文结果:ERR_NONE
    读取结果:ERR_NONE
    地址:80、寄存器:21、数据:C2
    发布结果:ERR_NONE
    
    >> i2c 写入80 40 01
    
    
    
    
    
    水文结果:ERR_NONE 写入结果:ERR_NONE 发布结果:ERR_NONE >> i2c 读取80 20 1个水文结果:ERR_NONE
    读取结果:ERR: ERR_NONE
    地址:80、寄存器:20、数据:01
    发布结果:ERR_NONE
    
    >> i2c write 80 08 02
    Aquire result:ERR_NONE
    Write result:ERR_NONE
    Release result:ERR_NONE
    
    >> iire read 80 10 4
    Aquire result:ERR_NONE
    read result:ERR_NONE
    Address:80、Register:10、Data:2C-31-00
    Aquire Release result
    
    :I2c >I2C 读取
    结果:I2c 21:i20_NONE result:er_NONE 读入结果:ERR_21:er_ ERR_NONE
    读取结果:ERR_NONE
    地址:80、寄存器:21、数据:01
    发布结果:ERR_NONE 

    您可以看到、在某个点、配置寄存器1在某个点被清除。

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

    您好、Luke、

    确保发送的命令正确。  例如、0x40是对配置寄存器0的寄存器写入。  0x41也是对配置寄存器0的寄存器写入、即0x42和0x43。  正确的用法显示在 ADS122C04数据表的第39页。  位3-2是寄存器地址位(在数据表中显示为"RR")、位1-0无关位(显示为"xx")。  WREG 和 RREG 命令的工作方式相同。  例如、WREG 命令将以这种方式寻址:

    0x40 -- WREG 寄存器0

    0x44 -- WREG 寄存器1

    0x48 -- WREG 寄存器2

    0x4C -- WREG 寄存器3.

    此致、

    Bob B

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

    Bob、

    谢谢你。 我将继续介绍该寄存器映射;

    typedef 枚举
    {
    ADS122C04_REG_NONE = 0x00u、
    ADS122C04_REG_RESET = 0x06u、
    ADS122C04_REG_START = 0x08u、
    ADS122C04_REG_PWRDN = 0x02u、
    ADS122C04_REG_RDATA = 0x10u、
    ADS122C04_REG_RCONF0 = 0x20u、//为简单起见,合成(base cmd)*/
    ADS122C04_REG_RCONF1 = 0x24u、//为简单起见、*复合
    ADS122C04_REG_RCONF2 = 0x28u、//为简单起见、*复合
    ADS122C04_REG_RCONF3 = 0x2Cu、//为简单起见、合成材料*/
    ADS122C04_REG_WCONF0 = 0x40u、//为简单起见,合成(base cmd)*/
    ADS122C04_REG_WCONF1 = 0x44u、//为简单起见、*复合
    ADS122C04_REG_WCONF2 = 0x48u、//为简单起见、*复合
    ADS122C04_REG_WCONF3 = 0x4Cu、//为简单起见的合成*/
    }ads122c04_REG_t;