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.

[参考译文] ADS8698:在使用上述部件检查模拟输入时(仅获得提供的电压的一半)

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1299767/ads8698-while-checking-for-the-analog-input-using-the-above-mentioned-part-only-half-of-the-provided-voltage-is-getting

器件型号:ADS8698

我在上面提到过。 我在 ADC 的输入端施加了不同的电压、  只检测到输入端提供的输入电压的一半。

如需更多信息、请查看随附的原理图、并尽快告知我您的宝贵意见。

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

    您好!

    感谢您的发帖。

    对于给定通道、在两个输入引脚上测量的相对于接地的电压是多少? 该通道的 ADC 输出是什么? 请提供 以十六进制格式在表9中编程的寄存器设置、以便我们也可以查看这些设置。

    此致、

    瑞安

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

    对于给定通道、在两个输入引脚上测量的相对于接地的电压是多少?

    1.25伏

    该通道的 ADC 输出是什么?  

    在 ADC 引脚上获得适当的电压但检测到一半的电压

    请提供 以十六进制格式在表9中编程的寄存器设置、以便我们也可以查看这些设置。

    /*用户代码开始标头*/

    /**

    *@文件          : main.c

    *@简介         :主要节目主体

    *@注意事项

    *

    *版权所有(c) 2023 STMicroelectronics。

    保留所有权利。

    *

    *本软件的许可条款可在许可证文件中找到

    *位于该软件组件的根目录中。

    *如果本软件没有许可证文件,它将按原样提供。

    *

    */

    /*用户代码结束标头*/

    /*包括------------------------------------------------------- */

    #包含 "main.h"

     

    /*私有包括------------------------------------------------------- */

    /*用户代码开始包括*/

     

    /*用户代码结束包括*/

     

    /* Private typedef ------------------------------------------------------- */

    /*用户代码开始 PTD */

     

    /*用户代码 end PTD */

     

    /*私有定义------------------------------------------------------- */

    /*用户代码开始 PD */

     

    /*用户代码 end PD */

     

    /*私有宏------------------------------------------------------- */

    /*用户代码开始 PM */

     

    /*用户代码结束 PM */

     

    /*私有变量------------------------------------------------------- */

    SPI_HandleTypeDef hspi1;

     

    /*用户代码开始 PV */

     

    浮点 电压;

    浮点 温度电压;

    浮点 温度电压1;

    uint16_t ITER;

    uint16_t count = 0;

     

    uint8_t data1[10];

    uint8_t data[5];

    uint8_t DATA2[3];

     

    /*用户代码 end pv */

     

    /*私有函数原型------------------------------------------------------- */

    Clock_Config ( );

    静态 MX_GPIO_Init ( );

    静态 MX_SPI1_Init ( );

    /*用户代码开始 PFP */

     

    /*用户代码结束 PFP */

     

    /*私人用户代码------------------------------------------------------- */

    /*用户代码开始0 */

     

    /*用户代码结束0 */

     

    /**

     *@简要介绍 应用程序入口点。

     *@retval int

     */

    内部 ( )

    {

     /*用户代码开始1 */

     

    uint8_t cmd1[]={0x85、0x00、0x00、0x00、0x00};

    uint8_t cmd2[]={0x82、0x00、0x00、0x00、0x00};

    uint8_t cmd3[]={0xCC、0x00、0x00、0x00、0x00};

     

    uint8_t cmdwr5[]={0x11、0x02、0x00};

    uint8_t cmdrd6[]={0x10、0x00、0x00};

     

     /*用户代码结束1 */

     

     /* MCU 配置--------------------------------------------------------------- */

     

     /*所有外设的复位、初始化闪存接口和 SysTick。 */

     HAL_Init ();

     

     /*用户代码开始初始化*/

     

     /*用户代码 End Init */

     

     /*配置系统时钟*/

     Clock_Config ();

     

     /*用户代码开始 sysinit */

     

     /*用户代码 end sysinit */

     

     /*初始化所有配置的外设*/

     MX_GPIO_Init ();

     MX_SPI1_Init ();

     /*用户代码开始2 */

     

     /*用户代码结束2 */

     

     /*无限循环*/

     /*用户代码开始时*/

    HAL_GPIO_WritePin (CS_GPIO_Port、CS_Pin、SET);

    HAL_DELAY (100);

     

    HAL_GPIO_WritePin (CS_GPIO_Port、CS_Pin、RESET);

    HAL_SPI_TRANSMIT (&hspi1、cmd1、5100);

    HAL_GPIO_WritePin (CS_GPIO_Port、CS_Pin、SET);

     

    HAL_GPIO_WritePin (CS_GPIO_Port、CS_Pin、RESET);

    HAL_SPI_TRANSMIT (&hspi1、cmd2、5100);

    HAL_GPIO_WritePin (CS_GPIO_Port、CS_Pin、SET);

     

    HAL_GPIO_WritePin (CS_GPIO_Port、CS_Pin、RESET);

    HAL_SPI_TRANSMIT (&hspi1、cmdwr5、3100);

    HAL_GPIO_WritePin (CS_GPIO_Port、CS_Pin、SET);

     

    HAL_GPIO_WritePin (CS_GPIO_Port、CS_Pin、RESET);

    HAL_SPI_TransmitReceive (&hspi1、cmdrd6、Data1、5100);

    HAL_GPIO_WritePin (CS_GPIO_Port、CS_Pin、SET);

     

    同时 (1)

    {

    实现 (ITER = 0;ITER <1000;ITER ++)

    {

    HAL_GPIO_WritePin (CS_GPIO_Port、CS_Pin、RESET);

    HAL_SPI_TransmitReceive (&hspi1、cmd3、data、5100);

    HAL_GPIO_WritePin (CS_GPIO_Port、CS_Pin、SET);

     

    tempVoltage =(((data[2]<<16)|(data[3]<<8)|(data[4])>>6)/262144;

     

    如果 ((tempVoltage!= 0)&&(tempVoltage <= 5))

    {

    tempVoltage1 += tempVoltage;

    计数++;

    电压= tempVoltage1/计数;

    tempVoltage1 = 0;

    计数= 0;

     

       /*用户代码结束时间*/

     

       /*用户代码开始3 */

     /*用户代码结束3 */

     

    /**

     *@简短系统时钟配置

     *@retval

     */

    Clock_Config ( )

    {

     RCC_OscInitTypeDef RCC_OscInitStructure={0};

     RCC_ClkInitTypeDef RCC_ClkInitStruct1 ={0};

     

     /**配置主内部稳压器输出电压

     */

     __HAL_RCC_PWR_CLK_ENABLE ();

     __HAL_PWR_VOLTAGESCALING_CONFIG (PWR_RECONVERR_VOLTAGE_SCALE1);

     

     /**根据指定的参数初始化 RCC 振荡器

     *在 RCC_OscInitTypeDef 结构中。

     */

     RCC_OscInitStruct.OscatorType = RCC_OSCILLATORTYPE_HSE;

     RCC_OscInitStruct.HSEState = RCC_HSE_ON;

     RCC_OscInitStruct.PLL.PLLState = RCC_PLL_on;

     RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;

     RCC_OscInitStruct.PLL.PLLM = 4;

     RCC_OscInitStruct.PLL.PLLN = 168;

     RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;

     RCC_OscInitStruct.PLL.PLLQ = 7;

     如果 (HAL_RCC_OscConfig (&RCC_OscInitStruct)!= HAL_OK)

     {

       Error_Handler ();

     }

     

     /**初始化 CPU、AHB 和 APB 总线时钟。

     */

     RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK

                                 |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;

     RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;

     RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;

     RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4;

     RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2;

     

     如果 (HAL_RCC_ClockConfig (&RCC_ClkInitStructuret、FLASH_LATENCY_5)!= HAL_OK)

     {

       Error_Handler ();

     }

     

    /**

     *@SPI1初始化函数简介

     *@参数

     *@retval

     */

    静态 MX_SPI1_Init ( )

    {

     

     /*用户代码开始 SPI1_Init 0 */

     

     /*用户代码结束 SPI1_Init 0 */

     

     /*用户代码开始 SPI1_Init 1 */

     

     /*用户代码 end SPI1_Init 1 */

     /* SPI1参数配置*/

     hspi1.Instance = SPI1;

     hspi1.Init.Mode = SPI_MODE_MASTER;

     hspi1.Init.Direction = SPI_DIRECTION_2LINES;

     hspi1.Init.DataSize = SPI_DATASIZE_8BIT;

     hspi1.Init.CLKPolarity = SPI_POLICY_LOW;

     hspi1.Init.clkPhase = SPI_PHASE_2EDGE;

     hspi1.Init.nss = SPI_NSS_soft;

     hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_128;

     hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB;

     hspi1.Init.TIMode = SPI_TIMODE_DISABLE;

     hspi1.Init.CRCCalrup = SPI_CRCCALCULATION_DISABLE;

     hspi1.Init.CRCPolynomial = 10;

     如果 (HAL_SPI_Init (&hspi1)!= HAL_OK)

     {

       Error_Handler ();

     }

     /*用户代码开始 SPI1_Init 2 */

     

     /*用户代码结束 SPI1_Init 2 */

     

     

    /**

     *@简短 GPIO 初始化函数

     *@参数

     *@retval

     */

    静态 MX_GPIO_Init ( )

    {

     GPIO_InitTypeDef GPIO_InitStruct ={0};

    /*用户代码开始 MX_GPIO_Init_1 */

    /*用户代码 end MX_GPIO_Init_1 */

     

     /* GPIO 端口时钟使能*/

     __ HAL_RCC_GPIOH_CLK_ENABLE ();

     __ HAL_RCC_GPIOA_CLK_ENABLE ();

     __HAL_RCC_GPIO_CLK_ENABLE ();

     

     /*配置 GPIO 引脚输出电平*/

     HAL_GPIO_WritePin (CS_GPIO_Port、CS_Pin、GPIO_PIN_RESET);

     

     /*配置 GPIO 引脚: CS_Pin */

     GPIO_InitStruct.Pin = CS_Pin;

     GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;

     GPIO_InitStruct.pull = GPIO_NOPULL;

     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;

     HAL_GPIO_Init (CS_GPIO_Port、&GPIO_InitStruct);

     

    /*用户代码开始 MX_GPIO_Init_2 */

    /*用户代码 end MX_GPIO_Init_2 */

     

    /*用户代码开始4 */

     

    /*用户代码结束4 */

     

    /**

     *@简短 发生错误时执行此函数。

     *@retval

     */

    Error_Handler ( )

    {

     /*用户代码开始 Error_Handler_Debug */

    /*用户可以添加自己的实现来报告 HAL 错误返回状态*/

    _disable_irq ();

    同时 (1)

    {

     /*用户代码 end Error_Handler_Debug */

     

    #ifdef  使用_满_断言

    /**

     *@简要 报告源文件的名称和源行号

     *        发生 assert_param 错误的位置。

     *@param file :指向源文件名的指针

     *@param 行:assert_param 错误行源编号

     *@retval

     */

    assert_failed (uint8_t *文件、uint32_t 线路)

    {

     /*用户代码开始6 */

    /*用户可以添加自己的实现来报告文件名和行号,

        例如printf ("错误的参数值:第%d\r\n 行上的文件%s、文件、行)*/

     /*用户代码结束6 */

    #endif /* use_full_assert */

     

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

    您好、Ryan、

    请尽快提供信息。 只有这样我们才能将其关闭。

    您能否确认是硬件还是固件问题?

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

    请检查我在上面分享的必需信息。 和给出了结论。 它会有所帮助。 我需要关闭设计。 请帮助

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

    请确认以下计算是否正确?

    tempVoltage =(((data[2]<<16)|(data[3]<<8)|(data[4])>>6)/262144;

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

    您好、Aswin、

    Ryan 目前不在办公室、下周还会再来。 我们将尽快回复您、感谢您的耐心等待!

    此致!

    萨米哈

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

    您好、Aswin、

    您的 CPU 中的 SPI 总线是否具有推挽或开漏输出? 使用示波器捕获的 SDO、SCLK、SDI 和/CS 时序图对于解决该问题非常有帮助。

    是否 安装了这些电阻器(R173/R237/R171/R234)? ADS8698只能 接受单端输入信号、因此负输入引脚(AIN_xGDN)应连接至 GND。

    您正在使用一个120k 欧姆的串联电阻、它将创建具有1m Ω ADC 输入阻抗的增益误差、因此您将看到(1-1m/(1m+120k))* Vin 小于您的输入电压。

    将代码转换为电压时、可以使用 数据表中显示的传递函数(图69)、代码的中间位置是满量程输入范围的中心。 以双极输入范围为例、对于+/-2.5Vref 输入范围、LSB=2.Vref/2^18=2*2.5Vref/2^18、因此电压=(CODE-(2^18)/2)* FSR。

    此致、

    戴尔