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.

[参考译文] ADS7886:未正确读取 ADC 输出

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/845817/ads7886-not-reading-properly-of-adc-output

器件型号:ADS7886

您好!

我在具有 SMT32F767的定制设计 PCB 上有一个外部12位 ADC (ADS7886)。 该 ADC 与具有 SPI 的微处理器相连。 现在、我的问题是我无法正确读取数字化值。 可能是由于 ADC 驱动错误或 SPI 设置错误。 根据 ADC 数据表、我应该将 ADC SCK 设置为20MHz、但我无法使用 SPI 实现这一点。 由于我只能使用 SPI 设置13.5Mbit/s 或26Mbit/s 的波特率(时钟设置超过1Mbit/s)、因此时钟信号失真、类似于不完全的方形)。 那么、如何正确驱动 ADC 并读取数字化值呢?

谢谢你

此主代码:

void ADC_Conversion_for_Voltage_Transtents ()
{

HAL_GPIO_WritePin (ADC_CS_GPIO_Port、ADC_CS_Pin、GPIO_PIN_RESET);
HAL_SPI_Receive (&hspi4、ADC_buf、2、100);
HAL_GPIO_WritePin (ADC_CS_GPIO_Port、 ADC_CS_Pin、GPIO_PIN_SET);
采样=(((uint16_t) ADC_buf[1])<< 8 | ADC_buf[0]);
//采样= 0x0 << 12 | ADC_buf;
电压=(float)(采样*(5.0 / 4096.0));//
DATA_IN=<6TES16]


;VOLT =(float) 


SPI 设置:

/* SPI4初始化函数*/
static void MX_SPI4_Init (void)
{

/* SPI4参数配置*/
hspi4.instance = SPI4;
hspi4.Init.Mode = SPI_MODE_MASTER;
hspi4.Init.DIRECTION = SPI_DIRECTION_2LINES;hspi4.InIT.Spi_polarity
= SPI_RATI.Spi_RIST_HSPI4
;HSPI4_INIT_INIT.Spolarity = SPI_BIT.BIT.UST_RASIT_HSD
hspi4.Init.CLKPhase = SPI_PHASE_2EDGE;
hspi4.Init.NSS = SPI_NSS_Soft;
hspi4.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_4;
hspi4.Init.FirstBit = SPI_FIRSTBIT_BADDRESCAST_DISABET_TIMESCAST_4;hTITMDSF_INIT_INIT_INIT_DITDITDITDIT4.TDITDIT_DITDITON_DIT

hspi4.Init.CRCalaculy = SPI_CRCCALLion_disable;
hspi4.Init.CRCPolynomial = 7;
hspi4.Init.CRCCLhelength = SPI_CRC_LENGTH_DATAZE;
hspi4.Init.NSSPMode = SPI_NSS_pule_disable;
if (H_OK)= HSI_4 (HAL_HAL!

_Error_Handler (__file__、__line__);
}



我随附了以下图表结果:

带有黄色双相方波的 ADC 输入模拟信号。





带黄色图的 ADC SCK 信号和带绿色图的 ADC CS 信号。




带黄色图的 ADC SCK 信号和带绿色图的 ADC SDO 信号。



在 Keil IDE 的调试模式期间、变量的值由什么来获取。 
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    此器件只能在最大20MHz 时钟下工作。 如果时钟的速率高于此速率、它将无法正常工作。

    如果您无法提供满足 DEICE 要求的时钟、则器件将无法正常运行。

    您应该能够使用13.5Mbit/s、但这将限制器件的采样率。

    此致

    Cynthia

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

    您能解释一下波特率(13.5 Mbit/s)和采样率之间的关系吗? 因为我计划使用外部触发器来控制采样率。

    另一件事是、ADC 直接从 PCB 上的5V LDO 获取其电源电压。 但在数据表中有类似"ADS7886应使用低阻抗源驱动..."的说明。 那么、我应该将电源电压从5V 更改为3.3V、还是不影响电压范围?

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

    波特率通常用于无线电应用、通常与 UART 配套使用。  

    由于您使用的是 SPI、这意味着您将在每个时钟周期传输一位数据、因此波特率本质上是您的采样率。

    这个主题很快就会深入探讨。 我建议独立研究以下主题。 之后、您将获得更好的图片

    SAR ADC 采样率、SPI 通信、然后是波特率。

    至于电源、5V LDO 还可以、但 VDD 电压电平确实决定了最大模拟输入。

    您参考的报价是指器件的模拟输入、而不是电源。

    此致

    Cynthia