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.

[参考译文] ADS8860:数据转换器论坛

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/966611/ads8860-data-converters-forum

器件型号:ADS8860
主题中讨论的其他器件: REF6030REF6050

您好、Keith、

现在、我正在尝试使用2个 ADC 来获得2个处理值的2通道输入、这是在原型阶段使用 ADS8860 EVM。

我已通过以下方式将其连接、以便在4线制 CS 模式下使用 ADS8860:

两个卡的 DIN 引脚分别连接到我的 MCU 端口 P2.3和 P2.7

两个卡的 CONV 引脚连接到我的 MCU 端口 P2.6

两个卡的 SDO 引脚都连接到我的 MCU 端口 P2.5 (可映射到 PM_UCA0SOMI)

两个卡的 CLK 引脚都连接到我的 MCU 端口 P2.0 (可映射到 PM_UCA0CLK)

基准电压(使用 REF6030代替 REF6050)已被检查为3V

提供的 AVDD 和 DVDD 电压为3.3V、已经过检查

现在、为了读取进入 Card1输入的 CH1和进入 Card2输入的 CH2的 ADC 计数、软件中执行了:

1) 1)     两个卡的第一个 CONV 引脚保持高电平。 因此、P2.6由 MCU 保持在高电平。 在 CONV 上观察到的电压电平为3.3V

2) 2)     最初、两个 DIN 引脚在两个卡上都保持高电平

3)     3)延迟1ms 后、CH2的 DIN (P2.7)变为低电平、使用 SPI 读取驱动器从 DOUT 读取数据、并存储 CH2的值

4)     4)然后在1m 延迟后、CH1 (P2.3)的 DIN 变为低电平、并使用 SPI 读取驱动器从 DOUT 读取数据、并存储 CH1的值

 

现在、我在这里发现、即使测量时的模拟输入从0–3V 发生变化、DOUT 中接收到的值也是0xFFFF。 在示波器中检查时、我始终将 DOUT 信号设置为高电平。 请在下面找到所实现的软件、在硬件中所做的更改如上所示(还提供了 ADS8860的原理图以及上面所写的更改)和所附的示波器屏幕截图。

 在示波器中、绿色波形为 SCLK、粉红色信号用于 P2.3、蓝色信号用于 P2.7、这是为 MCU 的各个 DIN 提供的

DOUT 是黄色信号

uint16_t SPI_ADC_CH_READ (ADC_Ch_EnumerTypeDef enPV_SV)

_DELAY_CYCLES (24000);//1ms 延迟

if (position_ADC_count = enPV_SV)

  P2OUT |= 1 << 3;//第一个通道的 DIN 为高电平、用于数据转换

  P2OUT &=~(1 << 7);对于数据采集、第二通道的//DIN 为低电平

  ADC_READ_VAL_ADC = SPI_READ ();//SPI_READ 是通过 SPI 接口读取数据的驱动程序

其他

  P2OUT |= 1 << 7;对于第二通道、//DIN 为高电平、用于数据转换

  P2OUT &=~(1 << 3);对于数据采集、第一个通道的//DIN 为低电平

  ADC_READ_VAL_ADC = SPI_READ ();

返回 ADC_READ_VAL_ADC;//ADC_READ_VRA_ADC 根据指定的通道返回数据

 

 

 

 

 

 

 

 

uint16_t SPI_read (空)

uint16_t ADC_READ_VAL_MSB;

uint16_t adc_read_val_lsb;

UCA0TXBUF = 0x0FF;//TX 缓冲区写入来启动 SPI 传输

while (!(UCA0IFG & UCTXIFG));

while (UCA0STAT 和 UCBUSY);

UCA0IFG &=~UCTXIFG;

while (!(UCA0IFG & UCRXIFG));

while (UCA0STAT 和 UCBUSY);

ADC_READ_VAL_MSB = UCA0RXBUF;//通过读取 SPI 缓冲器读取第一个字节

UCA0TXBUF = 0x0FF;//TX 缓冲区写入来启动 SPI 传输

while (!(UCA0IFG & UCTXIFG));

while (UCA0STAT 和 UCBUSY);

UCA0IFG &=~UCTXIFG;

while (!(UCA0IFG & UCRXIFG));

while (UCA0STAT 和 UCBUSY);

ADC_READ_VAL_lsb = UCA0RXBUF;//通过读取 SPI 缓冲器读取第二个字节

返回((ADC_READ_VAL_MSB << 8)|(ADC_READ_VAL_lsb));

我想知道以下几点:

1) 1)     由于我在 EVM 上使用的是四线制 CS 模式、该模式并非针对相同的设计、因此还需要进行哪些更改、以便能够获得2通道输入的输出

2) 2)     EVM 中已为 DOUT 提供的10K 上拉电阻是否正常、或是否应将 DOUT 连接到两个板、然后将上拉电阻添加到 MCU 的线路中。 此外、还有2个并联的上拉电阻器彼此相邻、因为两条具有上拉电阻器的 DOUT 线路连接在一起并提供给 MCU

此致、

Dhiren

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

    您好 Dhiren、

    当两个 DIN 引脚均为高电平时、必须将 CONVST 引脚切换为高电平-低电平-高电平以启动转换。  在最长转换时间(ADS8860为710nS)之后、您可以将 DIN 拉低 CH1、读取数据、然后将 DIN 拉低 CH2并读取数据。  修改后的软件流程如下所示。

    现在、为了读取进入 Card1输入的 CH1和进入 Card2输入的 CH2的 ADC 计数、软件中执行了:

    1) 1)     首先、使两个卡上的两个 DIN 引脚保持高电平、并使 CONVST 保持高电平。

    2)     2)秒、脉冲 CONVST 低电平至少20nS、然后返回 CONVST 高电平。

    3)     在1ms 延迟后(最小延迟为710nS)、CH2的 DIN (P2.7)变为低电平、使用 SPI 读取驱动器从 DOUT 读取数据、并存储 CH2的值

    4)     1米延迟后(读取第二个 ADC 的最小延迟为13.2nS)、CH1的 DIN (P2.3)变为低电平、使用 SPI 读取驱动器从 DOUT 读取数据、并存储 CH1的值

    数据表中的图55显示了上述过程的正确时序图。

    每个 EVM 板上的10千欧负载电阻器不应成为问题。  大多数 CMOS 输出引脚可以驱动几 mA 的电流。

    此致、
    Keith Nicholas
    精密 ADC 应用