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:MSP430和 ADS8860之间的 SPI 接口

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/957932/ads8860-spi-interface-between-msp430-and-ads8860

器件型号:ADS8860

 您好 TI 团队

您好!

我是 Dhiren、目前正在从事16位 ADC ADS8860的工作、该 ADC 在其 UCA2的 SPI 线路上与 MSP430连接。 我使用的是不带忙指示器的3线 CS 模式、其中 ADS8860的 DI 引脚通过4.7K 上拉至 DVDD、CNV 引脚(P5.7)连接至 ADS8860的 CONVST 引脚、CLK 引脚连接至 ADS8860的 SCLK 引脚、 MSP430的 SOMI 引脚连接到 ADS8860的 DOUT 引脚。

我尝试按如下方式读取 ADC 计数(SCLK = 4MHz):

设置 CONV 引脚、并在延迟1毫秒后复位 CONV 引脚(转换时间= 1us)。 CONV 引脚复位后、我 将 UCA2TXBUF 设置为0xff 并将数据发送到 SIMO 引脚、然后等待 UCRXIFG 被置位。 现在该位 UCRXIFG 被置位、但即使在将 AINP 引脚上的电压更改为1 V w.r.t 之后、我也只接收到数据= 0。 我的基准是3.3V

我有以下问题:

1) 1)   根据 MSP430的 SPI 状态机、是否每次都需要写入缓冲器 UCA2TXBUF 来从 RXBUF 读取数据、即使按照 ADS8860 SDI 引脚需要上拉且无法向其发送数据?

2) 2)我已通过4.7K 上拉 SDI 引脚、但未将其直接连接到 DVDD。 它会影响 DOUT 上的输出吗?

2) 2)   现在、在通过 MISO 引脚发送数据并等待 UCRXIFG 置位后、输入= 1V 时、我仍然会得到数据= 0。 还发现我没有根据需要获得 DOUT 波形、因为振幅低于预期。 我正在发送软件和 SCLK (绿色波形)、DOUT (蓝色波形)和 CONV 引脚(黄色波形)的波形。 在此、我想告诉我、我的连接和读取数据的方法是否正确?

连接: MSP430的 SOMI 连接到 ADS8860的 DOUT、MSP430的 CLK 连接到 ADS8860的 SCLK、MSP430的 P5.7连接到 ADS8860的 CONVST 引脚

             为了检查、我们没有按照建议使用 ref0063、并将 REF 引脚、AVDD、DVDD 连接到3.3V、ADS8860的 DI 引脚通过4.7K 的上拉电阻连接到3.3V                                                                        

while 循环中调用用于 SPI 通信的软件:

P5OUT |= 1 << 7;//CONV 引脚被置位并在100us 延迟后复位

_DELAY_CYCLES (240000);//100US 延迟

P5OUT &=~(1 << 7);

UCA2TXBUF = 0xFF;//data = 0xff 通过 MOSI 引脚发送

while (!(UCA2IFG & UCTXIFG));//等待发送 TX 数据

UCA2IFG &=~UCTXIFG;//清除 TXIFG 标志

while (!(UCA2IFG & UCRXIFG));//等待 RX 缓冲区上的数据准备就绪

ADC_READ_VAL_MSB = UCA2RXBUF;//读取 MSB 的 RXBUF

UCA2TXBUF = 0xFF;//数据= 0xff 通过 MOSI 引脚发送

while (!(UCA2IFG & UCTXIFG));//等待发送 TX 数据

UCA2IFG &=~UCTXIFG;

while (!(UCA2IFG & UCRXIFG));//等待 RX 缓冲区上的数据准备就绪

ADC_READ_VAL_lsb = UCA2RXBUF;//读取 LSB 的 RXBUF

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

    您好 Dhiren、

    根据您的描述、您将 CONV 设置为高电平100us 至1ms、然后将其设置为低电平。  这是完成转换的足够时间(最大时间为710nS)。  我还看到16个频率为4MHz 的 SLCK、它满足所有时序要求。  MCU 无需执行任何其他操作即可从 ADS8860获取数据。   

    这可能是硬件问题。  您是否在 DVDD 和 AVDD 上使用1uF 电容器?  如果缺少这些电容器、则器件将无法正常运行、并且不提供任何数据。  此外、REF 引脚应具有>10uF 的电容器。  为了获得数据表性能、您必须使用精密基准。  然而、如果 REF 引脚被连接至3.3V 模拟电源、此部件仍将运行。

    您能否使用 DMM 进行一些电压测量、以验证每个引脚是否具有预期的电压?

    1. 在 REF (引脚1)、AVDD (引脚2)、DVDD (引脚10)和 DIN (引脚9)上验证3.3V 电压。

    答: 通过4.7k Ω 电阻器将 DIN 连接到 DVDD 是正常的。

    2. 确认 AINN (引脚4)为0伏。

    3、 测量 AINP (引脚3)上的电压、电压应为0V 至3.3V 之间的非零电压。

    有关示例、请参阅 ADS8860EVM 评估板原理图。

    此致、
    Keith Nicholas
    精密 ADC 应用