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.

[参考译文] ADS1263:TDAC 配置问题

Guru**** 2394305 points
Other Parts Discussed in Thread: ADS1262, ADS1263

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/798973/ads1263-tdac-configuration-issues

器件型号:ADS1263
主题中讨论的其他器件:ADS1262

我使用 python3和 RPI3来访问串行数据。 我可以使用内部或外部基准(连接到 ANI0-AIN1)从 AIN2-AIN5正确读取模拟信号。

但是 、我无法从 TDAC 设置和读取正确的差分电压。 我选择了多路复用器输入至 TDAC (P&N)、PGA=1、并设置 TDAC、TDACN 值并启用 OUTP 和 OUTN、我在 AIN6和 AIN7引脚上获得~5.25V 相对于接地电压。 因此、ADC 的读数接近0V

我正在使用单个 PS +5V 为芯片供电。

寄存器配置如下。 我会依次调用每个模块并检查寄存 器是否已更新。命令 SER.SPI_INIT[]、发送列表、列出串行数据、0x40、#Address、#Registers、New Register 值。

默认 ADS126x_version (self):# ADS126x 版本和修订版本

REG_addr_BASE = 0b00100000 # RREG (0x20)
REG_ADDR_SUFIX = 0b00000000 # 0x00
REG_VALUE =[0x0000000]# 0x00
配置= SER.SPI_INIT (0、reg_addr_BASE、reg_addr_sucfix、reg_value、self.speed)
时间睡眠(0.1)
打印('\033[34m'+"芯片版本="、配置[2]>5、"版本号="、配置[2]和0x1f、'\033[0m')

DEF ADS126x_pw_reg (self):# ADS1262功率寄存器

REG_addr_BASE = 0b01000000 # WREG (0x40)
reg_addr_sucfix = 0b00000001 # 0x01
POWER_reg =[0b00000000]   #0x00
配置= SER.SPI_INIT (0、reg_addr_BASE、reg_addr_sucfix、power_reg、self.speed)

时间睡眠(0.1)

DEF ADS126x_int (self):# ADS1262接口模式寄存器

REG_addr_BASE = 0b01000000 # WREG (0x40)
reg_addr_sucfix = 0b00000010 # 0x02
INT_reg =[0b00000100]       # 0x04
配置= SER.SPI_INIT (0、reg_addr_BASE、reg_addr_sucfix、int_reg、self.speed)

时间睡眠(0.1)

DEF ADS126x_mode0 (self):# ADS1262转换模式0

REG_addr_BASE = 0b01000000 # WREG (0x40)
reg_addr_sucfix = 0b00000011 # 0x03
MODE_0_conf =[0b00000000]# 0x00
配置= SER.SPI_INIT (0、REG_addr_BASE、REG_addr_sucfix、MODE_0_conf、self.speed)
时间睡眠(0.1)

DEF ADS126x_mode1 (self):# ADS1262转换模式1 -滤波器

REG_addr_BASE = 0b01000000 # WREG (0x40)
REG_addr_sucfix = 0b00000100 # 0x04
MODE_1_conf =[0b10010000]# 0x90

配置= SER.SPI_INIT (0、REG_addr_BASE、REG_addr_sucfix、MODE_1_conf、self.speed)
时间睡眠(0.1)

DEF ADS126x_mode2 (self):# ADS1262转换模式2

REG_addr_BASE = 0b01000000 # WREG (0x40)
REG_addr_sucfix = 0b00000101 # 0x05
MODE_2_conf =[0b00000100]# 0x04 - PGA=1
配置= SER.SPI_INIT (0、REG_addr_BASE、REG_addr_sucfix、MODE_2_conf、self.speed)

时间睡眠(0.1)

DEF ADS126x_mux (self、mux_ch):# ADS1262输入 MUX 寄存器

REG_addr_BASE = 0b01000000 # WREG (0x40)
REG_addr_sucfix = 0b00000110 # 0x06
MUX_INP =[0b11101110]      # 0xEE - TDACP 和 TDACN  
配置= SER.SPI_INIT (0、REG_addr_BASE、REG_addr_sucfix、MUX_INP、self.speed)
时间睡眠(0.1)

DEF ADS126x_ref_mux (self):# ADS1262参考 MUX 寄存器

REG_addr_BASE = 0b01000000 # WREG (0x40)
REG_ADDR_SUFIX = 0b00001111 # 0x0F
REFMUX_INP =[0b00001001]  # 0x09 - AIN0 - AIN1

配置= SER.SPI_INIT (0、reg_addr_BASE、reg_addr_sucfix、refmux_INP、self.speed)
时间睡眠(0.1)

DEF ADS126x_tdac_VP (self):# ADS1262 DAC 伏特位置寄存器

REG_addr_BASE = 0b01000000 # WREG (0x40)
REG_addr_sucfix = 0b00010000 # 0x10
tdacp_INP =[0b00000111]     # 0x07 - 3.0V

tdacp_Rec = SER.SPI_init (0、reg_addr_BASE、reg_addr_sucfix、tdacp_INP、self.speed)
时间睡眠(0.1)

DEF ADS126x_tdac_vn (self):# ADS1262 DAC 电压负寄存器

REG_addr_BASE = 0b01000000 # WREG (0x40)
REG_addr_sucfix = 0b00010001 # 0x11
tdacn_INP =[0b00011001]     # 0x19 - 0.5V
配置= SER.SPI_INIT (0、reg_addr_BASE、reg_addr_sucfix、tdacn_INP、self.speed)

时间睡眠(0.1)

DEF ADS126x_cal (self):# ADS1262校准寄存器

REG_ADDR_BASE = 0x40 # WREG (0x40)

REG_addr_sucfix = 0x07
OFCAL0 =[0x00]#[0xEF] 200mV # 0x00复位
SER.SPI_init (0、reg_addr_BASE、reg_addr_sucfix、OFCAL0、self.speed)

REG_addr_sucfix = 0x08
OFCAL1 =[0xD0]#[0x47] 200mV # 0x00复位
SER.SPI_init (0、reg_addr_BASE、reg_addr_sucfix、OFCAL1、self.speed)

REG_addr_sucfix = 0x09
OFCAL2 =[0x00]#[0x07] 200mV # 0x00复位
SER.SPI_init (0、reg_addr_BASE、reg_addr_sucfix、OFCAL2、self.speed)

REG_ADDR_SUFIX = 0x0A
FSCAL0 =[0x00]# 0x00增益1
SER.SPI_init (0、reg_addr_BASE、reg_addr_sucfix、FSCAL0、self.speed)

REG_ADDR_SUFIX = 0x0B
FSCAL1 =[0x00]# 0x00增益1
SER.SPI_init (0、reg_addr_BASE、reg_addr_sucfix、FSCAL1、self.speed)

REG_ADDR_SUFIX = 0x0C
FSCAL2 =[0x39]# 0x40增益1
SER.SPI_init (0、reg_addr_BASE、reg_addr_sucfix、FSCAL2、self.speed)

REG_addr_sucfix = 0x0D
IDACMUX =[0xBB]# 0xBB 复位
SER.SPI_init (0、reg_addr_BASE、reg_addr_sucfix、IDACMUX、self.speed)

REG_ADDR_SUFIX = 0x0E
IDACMAG =[0x00]# 0x00复位
SER.SPI_init (0、reg_addr_BASE、reg_addr_sucfix、IDACMUX、self.speed)

REG_addr_sucfix = 0x12
GPIOCOM =[0x00]# 0x00复位
SER.SPI_init (0、reg_addr_BASE、reg_addr_sucfix、GPIOCOM、self.speed)

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

    您好、Fernando、

    欢迎访问 TI E2E 论坛! 您是否有能够分享的电路原理图?

    我仔细检查了您的代码、没有发现任何错误。 我还测试了 ADS1263EVM 上的寄存器设置(使用内部基准源)、并查看2.5V 输出和 ADC 读数。

    我的建议是...

    • 使用默认的 OFCAL[2:0]和 FSCAL[2:0]寄存器设置尝试和调试 ADS1262。 在对非默认偏移和增益校正因数进行编程的情况下、您可能会获得与预期不同的输出代码。

    • 首先使用 ADC 的内部基准来查看是否可以使测试 DAC 正常工作、然后切换到外部基准、以防外部基准源出现任何问题。

    • 如果在对器件进行编程后还没有读回寄存器值、请尝试读取每个寄存器、以查看它们的寄存器是否按照您的意愿进行编程。

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

    我使用不同的板测试了代码、工作正常!

    此外、我还比较了原始电路板和工作电路板的 SCH、没有"电气"差异。

    此时、我正在查找 PCB 硬件问题

    使用原电路板中的工作配置之一和 AIN02-AIN03作为输入几个小时后、芯片将失去配置。

    这使我相信可能 存在接地问题/环路。

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

    感谢您分享您的发现。 如果您是 RPI3和另一个带有 ADC 的 PCB 之间的跳线、请尝试保持接地连接(以及所有其他连接)尽可能短。 我在 E2E 主题上发布了一些其他详细信息并建议使用跳线、这对您可能很有用: e2e.ti.com/.../2883925
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢、Chris、

    我将 RPI3与 ADC 侧隔离。 请参阅下图:

    两个 ADC 具有相同的行为。 AINx 正常工作、但 TDAC 和 PS 监视器不工作。

    PS:RPI 仅进行调试。 FPGA 未就绪/未实现。

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

    外部基准导致问题。 我使用的是具有差动输出的 LTZ1000。 该配置以某种方式支持馈送到 ADS1263内部。

    谢谢