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.

[参考译文] CCS/LAUNCHXL-F28377S:您能不能建议我如何在 LAUNCHXL-F28377S 中使用 ADC

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/595067/ccs-launchxl-f28377s-could-you-suggest-me-how-to-use-adc-in-launchxl-f28377s

器件型号:LAUNCHXL-F28377S

工具/软件:Code Composer Studio

大家好、

我有1个电流传感器可释放交流电压、我想使用 LAUNCHXL-F28377S 读取它们。
您能不能向我推荐我必须使用的代码以及如何将其与 LAUNCHXL-F28377S 连接。

提前感谢您。

卡纳特  

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

    您好、Kanthanet、

    您可以在 controlSUITE 或 C2000器件中找到一些 ADC 示例软件来帮助您启动并运行。  

    至于与传感器的连接、这是一个非常广泛的问题。  在非常高的水平下、您将需要获得0至 VREFHI 范围内的传感器输出、并且您希望使用足够低的阻抗源驱动 ADC、以便它能够针对您的给定 S+H 持续时间要求和/或实现良好的输入趋稳 采样率要求。  

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

    但我仍然不理解您的句子中的某些词语、例如 S+H 持续时间、VREFHI、
    您能给我一些文件吗、我将会阅读。

    我是初学者、所以如果我让你感到厌烦、请原谅我。
    卡纳特
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Kanthanet、

    首先、从器件主页下载上述器件的数据表和 TRM。 在 TRM 中、您将能够找到您可以浏览的 ADC 外设部分。 至于示例代码、下载 C2000ware 后、您可以导航至以下文件夹:

    C:\ti\c2000Ware_1_00_00_00\device_support\f2837xs\examples\CPU1\ADC_SoC_ePWM

    此致、
    Gautam
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我已经完成了。
    我按照源代码将传感器的输出连接到 J3:27、但它不起作用。
    它说"asm (" ESTOP0");"

    可以建议我吗?
    P.S.我的电流传感器有3根导线、其中包含 VDD=5V、GND 和输出信号。

    提前感谢您。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您可以分享屏幕截图吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Gautam:

    下面的屏幕截图显示了我的错误:

    我使用了以下源代码:

    //######################################################################################################################
    //
    ////文件:adc_soc_ePWM_cpu01.c
    //
    标题:通过 ePWM 触发 F2837xS 的 ADC。
    //
    //! addtogroup cpu01_example_list
    //! 

    ADC ePWM 触发(ADC_SoC_ePWM)

    //! //! 此示例设置 EPWM 以定期触发 ADC。 //! //! 程序运行后、内存将包含:\n //! -\b 结果:一系列来自 //的模数转换样本! 引脚 A0。 采样之间的时间根据周期 //! PWM 计时器的功能。 // //########################################################################################################################## //$TI 发行版:F2837xS 支持库 V200 $// $发行 日期:星期二6月21日13:52:16 CDT 2016 $// 版权所有:版权所有(C) 2014-2016德州仪器(TI)公司-// http://www.ti.com/ 保留所有权利$ //############################################################################################################ // //包含的文件 // #include "F28x_Project.h" // 函数原型 // void ConfigureADC (void); void ConfigureEPWM (void); void SetupADCepwm (uint16通道); 中断 void adca1_ISR (void); // //#define results_buffer_size_s/ void /uint16;/[void Resumpts1/uints/simumpts1/u.1/uints/simumpts/simum/ u.1/u.1/u./uints/simumpts;/uint16 ;/uints/simumpth。 初始化系统控制: // PLL、看门狗、启用外设时钟 //此示例函数位于 F2837xS_SYSCTRL.c 文件中。 // InitSysCtrl(); // //步骤2。 初始化 GPIO: //此示例函数位于 F2837xS_GPIO.c 文件中, //说明了如何将 GPIO 设置为其默认状态。 // InitGpio();//针对本例跳过 // //步骤3。 清除所有中断并初始化 PIE 矢量表: //禁用 CPU 中断 // Dint; // //将 PIE 控制寄存器初始化为默认状态。 //默认状态是禁用所有 PIE 中断并 清除标志//。 //此函数位于 F2837xS_PIECTRL.c 文件中。 // InitPieCtrl(); // 禁用 CPU 中断并清除所有 CPU 中断标志: // IER = 0x0000; IFR = 0x0000; // //初始化 PIE 矢量表,其中包含指向 shell 中断 //服务例程(service routines,ISR)的指针。 //这将填充整个表,即使在 本示例中未使用中断//也是如此。 这对于调试很有用。 //可以在 F2837xS_DefaultIsr.c 中找到 shell ISR 例程 //此函数可在 F2837xS_PieVect.c 中找到 // InitPieVectTable(); // //映射 ISR 函数 // EALLOW; PieVectTable.ADCA1_INT =&adca1_ISR;//针对 ADCA 中断1的函数 EDIS; // //配置 ADC 并为其加电 // ConfigureADC(); // 配置 ePWM // ConfigureEPWM (); // //将 ADC 设置为通道0上的 ePWM 触发转换 // SetupADCepwm (0); // //启用全局中断和更高优先级的实时调试事件: // IER |= M_INT1;//启用组1中断 EINT;//启用全局中断 INTM ERTM;//启用全局实时中断 DBGM // 初始化结果缓冲 区// for (resultsIndex = 0;resultsIndex < results_buffer_size;resultsIndex++) { AdcaResults[resultsIndex]= 0; } resultsIndex = 0; bufferFull = 0; // //启用 PIE 中断 // PieCtrlRegs.PIEIER1.bit.INTx1 = 1; // 同步 ePWM // EALLOW; CpuSysRegs.PCLKCR0.bit.TBCLKSYNC = 1; // //在循环中无限期地进行转换 // 操作 { // //启动 ePWM // EPwm1Regs.ETSEL.bit.SOCAEN = 1;//启用 SOCA EPwm1Regs.TBCTL.bit.CTRMODE = 0;//取消冻结、并进入递增计数模式 // //等待、而 ePWM 导致 ADC 转换、然后导致中断、 //填充结果缓冲区,最终设置 bufferFull //flag // while (!bufferFull); bufferFull = 0;//清除缓冲区已满标志 // //停止 ePWM // EPwm1Regs.ETSEL.bit.SOCAEN = 0;//禁用 SOCA EPwm1Regs.TBCTL.bit.CTRMODE = 3;//冻结计数器 // //此时,AdcaResults[]包含一系列转换 //从所选通道 // // //软件断点,再次点击运行以获取更新的转换 // asm (" ESTOP0"); }while (1); } // 配置 ADC -写入 ADC 配置并为这两 个//都加电 ADC ADC A 和 ADC B // void ConfigureADC (void) { EALLOW; // //写入配置 // AdcaRegs.ADCCTL2.bit.prescale = 6;//将 ADCCLK 分频器设置为/4 AdcSetMode (ADC_ADCA、ADC_resolution_12位、ADC_SIGNALMODE_SINGLE); // //将脉冲位置设置为晚期 // AdcaRegs.ADCCTL1.bit.INTPULSEPOS=1; // //为 ADC 加电 // AdcaRegs.ADCCTL1.bit.ADCPWDNZ = 1; // //延迟1ms 以允许 ADC 加电时间 // DELAY_US (1000); EDIS; } // // ConfigureEPWM -配置 ePWM SOC 和比较值 // void ConfigureEPWM (void) { EALLOW; //假设 ePWM 时钟已启用 EPwm1Regs.ETSEL.bit.SOCAEN = 0;//禁用组上的 SOC EPwm1Regs.ETSEL.bit.SOCASEL = 4;//在递增计数时选择 SOC EPwm1Regs.ETPS.bit.SOCAPRD = 1; //在发生第一个事件时生成脉冲 EPwm1Regs.CMPA.bit.CMPA = 0x0800; //将比较 A 值设置为2048个计数 EPwm1Regs.TBPRD = 0x1000; //将周期设置为4096个计数 EPwm1Regs.TBCTL.bit.CTRMODE = 3; //冻结计数器 EDIS; } // SetupADCepwm - Setup ADC ePWM acquisition window // void SetupADCepwm (uint16 channel) { uint16 acqps; // //根据分辨率确定最小采集窗口(在 SYSCLKS 中) // if (adc_resolution_12bit = AdcaRegs.ADCCTL2.bit.resolution) { acqps = 14;//75ns } 否则、//分辨率为16位 { acqps = 63;//320ns } // //选择要转换的通道和转换结束标志 // EALLOW; AdcaRegs.ADCSOC0CTL.bit.CHSEL =通道;//SOC0将转换引脚 A0 AdcaRegs.ADCSOC0CTL.bit.ACQPS = acqps;//采样窗口为100个 SYSCLK 周期 AdcaRegs.ADCSOC0CTL.bit.TRIGSEL = 5;// ePWM1 SOCA/C 上的触发 AdcaRegs.ADCINTSEL1N2.bit.INT1SEL = 0;// SOC0结束将设置 INT1标志 AdcaRegs.ADCINTSEL1N2.bit.INT1E = 1;//启用 INT1标志 AdcaRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;//确保 INT1标志被清除 EDIS; } // // adca1_ISR -在 ISR 中读取 ADC 缓冲 区// 中断 void adca1_ISR (void) { AdcaResults[resultsIndex++]= AdcaResultRegs.ADCRESULT0; if (results_buffer_size <= resultsIndex) { resultsIndex = 0; bufferFull = 1; } AdcaRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;//清除 INT1标志 PieCtrlRegs.PIEACK.all = PIEACK_Group1; } // //文件结束 //

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    //######################################################################################################################
    //
    //文件:adc_soc_ePWM_cpu01.c
    //
    //标题:针对 F2837xS 通过 ePWM 触发 ADC。
    //
    //! addtogroup cpu01_example_list
    //!

    ADC ePWM 触发(ADC_SoC_ePWM)


    //!
    //! 此示例设置 EPWM 以定期触发 ADC。
    //!
    //! 程序运行后,内存将包含:\n
    //! -\b 结果:一系列的模数转换样本
    //! 引脚 A0。 采样之间的时间根据周期确定
    //! PWM 计时器的功能。
    //
    //######################################################################################################################
    //$TI 版本:F2837xS 支持库 V200 $
    //$Release Date:Tue Jun 21 13:52:16 CDT 2016 $
    //版权所有:版权所有(C) 2014-2016 Texas Instruments Incorporated -
    // http://www.ti.com/ 保留所有权利$
    //######################################################################################################################

    //
    //包含的文件
    //
    #include "F28x_Project.h"

    //
    //函数原型
    //
    void ConfigureADC (void);
    void ConfigureEPWM (void);
    void SetupADCepwm (uint16通道);
    中断 void adca1_ISR (void);

    //
    //定义
    //
    #define results_buffer_size 256

    //
    //全局
    //
    uint16 AdcaResults[results_buffer_size];
    uint16结果索引;
    易失性 uint16 bufferFull;

    void main (void)

    //
    //步骤1. 初始化系统控制:
    // PLL、安全装置、启用外设时钟
    //此示例函数位于 F2837xS_SYSCTRL.c 文件中。
    //
    InitSysCtrl();

    //
    //步骤2. 初始化 GPIO:
    //此示例函数位于 F2837xS_GPIO.c 文件和中
    //说明了如何将 GPIO 设置为其默认状态。
    //
    InitGpio();//针对此示例跳过

    //
    //步骤3. 清除所有中断并初始化 PIE 矢量表:
    //禁用 CPU 中断
    //
    Dint;

    //
    //将 PIE 控制寄存器初始化为默认状态。
    //默认状态为禁用所有 PIE 中断和标志
    //被清除。
    //此函数位于 F2837xS_PIECTRL.c 文件中。
    //
    InitPieCtrl();

    //
    //禁用 CPU 中断并清除所有 CPU 中断标志:
    //
    IER = 0x0000;
    IFR = 0x0000;

    //
    //使用指向 shell 中断的指针初始化 PIE 矢量表
    //服务例程(ISR)。
    //这将填充整个表,即使是中断也是如此
    //在本例中未使用。 这对于调试很有用。
    //可以在 F2837xS_DefaultIsr.c 中找到 shell ISR 例程
    //此函数可在 F2837xS_PieVect.c 中找到
    //
    InitPieVectTable();

    //
    //映射 ISR 函数
    //
    EALLOW;
    PieVectTable.ADCA1_INT =&adca1_ISR;//针对 ADCA 中断1的函数
    EDIS;

    //
    //配置 ADC 并为其加电
    //
    ConfigureADC();

    //
    //配置 ePWM
    //
    ConfigureEPWM();

    //
    //在通道0上设置用于 ePWM 触发转换的 ADC
    //
    SetupADCepwm (0);

    //
    //启用全局中断和更高优先级的实时调试事件:
    //
    IER |= M_INT1;//启用组1中断
    EINT;//启用全局中断 INTM
    ERTM;//启用全局实时中断 DBGM

    //
    //初始化结果缓冲区
    //
    for (resultsIndex = 0;resultsIndex < results_buffer_size;resultsIndex++)

    AdcaResults[resultsIndex]=0;

    resultsIndex = 0;
    bufferFull = 0;

    //
    //启用 PIE 中断
    //
    PieCtrlRegs.PIEIER1.bit.INTx1 = 1;

    //
    //同步 ePWM
    //
    EALLOW;
    CpuSysRegs.PCLKCR0.bit.TBCLKSYNC=1;

    //
    //循环无限地进行转换
    //
    操作

    //
    //启动 ePWM
    //
    EPwm1Regs.ETSEL.bit.SOCAEN = 1;//启用 SOCA
    EPwm1Regs.TBCTL.bit.CTRMODE = 0;//取消冻结、并进入递增计数模式

    //
    //等待、而 ePWM 导致 ADC 转换、然后导致中断、
    //填充结果缓冲区,最终设置 bufferFull
    //flag
    //
    while (!bufferFull);
    bufferFull = 0;//清除缓冲区已满标志

    //
    //停止 ePWM
    //
    EPwm1Regs.ETSEL.bit.SOCAEN = 0;//禁用 SOCA
    EPwm1Regs.TBCTL.bit.CTRMODE = 3;//冻结计数器

    //
    //此时,AdcaResults[]包含一系列转换
    //从所选通道
    //

    //
    //软件断点,再次点击运行以获取更新的转换
    //
    asm (" ESTOP0");
    } while (1);


    //
    // ConfigureADC -写入 ADC 配置并为两者加电
    // ADC A 和 ADC B
    //
    空配置 ADC (空)

    EALLOW;

    //
    //写入配置
    //
    AdcaRegs.ADCCTL2.bit.prescale = 6;//将 ADCCLK 分频器设置为/4
    AdcSetMode (ADC_ADCA、ADC_resolution_12位、ADC_SIGNALMODE_SINGLE);

    //
    //将脉冲位置设置为晚期
    //
    AdcaRegs.ADCCTL1.bit.INTPULSEPOS=1;

    //
    //为 ADC 加电
    //
    AdcaRegs.ADCCTL1.bit.ADCPWDNZ = 1;

    //
    //延迟1ms 以允许 ADC 加电时间
    //
    DELAY_US (1000);

    EDIS;


    //
    // ConfigureEPWM -配置 ePWM SOC 并比较值
    //
    空配置 EPWM (空)

    EALLOW;
    //假设 ePWM 时钟已启用
    EPwm1Regs.ETSEL.bit.SOCAEN = 0;//禁用组上的 SOC
    EPwm1Regs.ETSEL.bit.SOCASEL = 4;//在递增计数时选择 SOC
    EPwm1Regs.ETPS.bit.SOCAPRD = 1; //在发生第一个事件时生成脉冲
    EPwm1Regs.CMPA.bit.CMPA = 0x0800; //将比较 A 值设置为2048个计数
    EPwm1Regs.TBPRD = 0x1000; //将周期设置为4096个计数
    EPwm1Regs.TBCTL.bit.CTRMODE = 3; //冻结计数器
    EDIS;


    //
    // SetupADCepwm -设置 ADC ePWM 采集窗口
    //
    void SetupADCepwm (uint16通道)

    uint16 acqps;

    //
    //根据分辨率确定最小采集窗口(在 SYSCLKS 中)
    //
    if (adc_resolution_12bit = AdcaRegs.ADCCTL2.bit.resolution)

    acqps = 14;//75ns

    否则、//分辨率为16位

    acqps = 63;//320ns


    //
    //选择要转换的通道和转换结束标志
    //
    EALLOW;
    AdcaRegs.ADCSOC0CTL.bit.CHSEL =通道;//SOC0将转换引脚 A0
    AdcaRegs.ADCSOC0CTL.bit.ACQPS = acqps;//采样窗口为100个 SYSCLK 周期
    AdcaRegs.ADCSOC0CTL.bit.TRIGSEL = 5;// ePWM1 SOCA/C 上的触发
    AdcaRegs.ADCINTSEL1N2.bit.INT1SEL = 0;// SOC0结束将设置 INT1标志
    AdcaRegs.ADCINTSEL1N2.bit.INT1E = 1;//启用 INT1标志
    AdcaRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;//确保 INT1标志被清除
    EDIS;


    //
    // adca1_ISR -在 ISR 中读取 ADC 缓冲器
    //
    中断 void adca1_ISR (void)

    AdcaResults[resultsIndex++]= AdcaResultRegs.ADCRESULT0;
    if (results_buffer_size <= resultsIndex)

    resultsIndex = 0;
    bufferFull = 1;


    AdcaRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;//清除 INT1标志
    PieCtrlRegs.PIEACX.ALL = PIEACK_Group1;


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

    或者我必须设置读取 ADC 的引脚?

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

    对于您的问题、请发表以下几篇文章:

    当程序到达 Estop 时、它基本上已经完成运行;这是预期的操作、而不是错误。 然后、您可以直接检查 AdcaResults[]或 ADC 硬件结果寄存器的内容。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Devin:

    非常感谢。
    A0引脚在哪里、因为我尝试连接引脚 J3:27、请参阅数据表中的 ADCINA0。
    此外、您能否建议我将引脚设置为从上述代码接收 ADC 信号。

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

    您可以在 controlSUITE 中的\controlSUITE\development_kits\LAUNCHXL-F28377S\HwDevPkg\中找到 Launchpad 原理图。

    如果您在 PDF 中搜索 ADCINA0、您可以找到它的物理位置。 我认为您已正确识别它已连接到 J3。

    要更改采样通道、请在 SOC 配置中更改 CHSEL 设置。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    现在、我可以看到我的电流传感器的值、但是、  
    在使用万用表测量时、我得到的值与下图不同、这是一个问题:

    实际上、它应该是2500、以及如何将 int 更改为 float?

    提前感谢您、

    卡纳特

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

    您好、Kanthanet、

    VREFHI 的范围是多少?输入电压是多少?  传感器/输入源的阻抗是多少?采样的 S+H 持续时间是多少?

    要进入浮点、我认为您需要将原始转换结果转换为浮点值、然后进行计算

    结果(浮点、以伏特为单位)= VREFH (浮点、以伏特为单位)*结果(int、以 LSB 为单位)/ 4096

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

    我的 VREFHI 范围是0-5V、
    -您的样片的 S+H 持续时间是多少?
    答案。 我不确定如何实现这一点、但从数据表中可以看出、"转换时间大约为10.5 ADCCLK
    12位模式下为29.5个 ADCCLK 周期、16位模式下为29.5个 ADCCLK 周期。"
    因此、我的 S+H 持续时间为12位(10.5 ADCCLK)
    -您的传感器/输入源的阻抗是多少?
    答案。 我不知道
    -什么是 LSB?

    以下是我的电流传感器数据表?


    e2e.ti.com/.../MLX91207_2D00_DVK.pdf

    提前感谢您、

    卡纳特

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

    该器件上的 VREFHI 不能超过 VDDA、因此我认为您的 ADC 基准范围不能为0至5V。 通常这是0至3.0V 或0至2.5V。 您可以查看 LaunchPad 原理图和/或测量 LaunchPad 上 VREFHI 引脚上的电压。

    S+H 持续时间由 SOC 的 ACQPS 设置控制。 S+H 持续时间为(ACQPS+1)* SYSCLK。 如果器件以200MHz 运行、则 SYSCLK 将为5ns。 只有在使用低阻抗+高带宽源驱动时、最小 S+H 持续时间(75ns)才会很好:通常情况下、这是在使用运算放大器直接驱动引脚时。 否则、您需要根据传感器的阻抗将 S+H 持续时间调整为更长(高阻抗需要更长的 S+H 持续时间)。

    LSB 为(VREFHI - VREFLO)/2^N、其中 N 是 ADC 中的位数。 由于 VREFLO = 0且 N = 12、因此一个 LSB 为 VREFHI / 4096。 对于3.0V 基准、这将是732uV。 当 ADC 产生数字输出时、读数在0到4095之间的 LSB 中。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我认为 Launchpad A/D 不喜欢负电压或高于 VRefHi 的电压。

    我看到 F28069部件的数字 I/O 电压为5伏。

    您的 adaResultsReg 中的值看起来可疑。 它们彼此非常接近。

    这是我的板的快照。 LaunchXL-F28379D

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    已确认:对任何引脚施加5V 电压几乎肯定会损坏器件。

    为避免损坏、您不应向任何模拟或数字引脚施加小于-0.3V 的任何电压、也不应向高于 VDDA + 0.3V (模拟引脚)或 VDDIO + 0.3V (数字引脚)的任何电压。

    对于大多数数字 IO 和 ADC 输入引脚、如果您提供限流电阻器、则可以担心流入引脚的钳位电流。 应将电流限制为+/-2mA (连续)、并且所有引脚之间的总瞬时电流不应超过+/-20mA。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Devin、

    现在、我知道 VREFHI 为3.0V
    然后、如何混合"结果(浮点、以伏特为单位)= VREFH (浮点、以伏特为单位)*结果(int、以 LSB 为单位)/ 4096"
    和我的代码。
    我已经试过很多次了、完全不起作用。
    请推荐我吗?

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

    您好、Kanthanet、

     我猜您正在使用电源。  如果是降压电源、您可能需要导入项目

    C:\ti\controlSUITE\development_kits\BOOSTXL_BUCKCONV\v1_01_00_00\Buck_VMC_F2837xS

    它已经设置了一些 A/D、您可以看到一个响应、就像您已经知道如何操作一样。

    此致

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    C=(浮点) 3.0/4096;
    张力=(浮点)(3.0/4096)* AdcaResult0;

    有这样的东西吗?

    提前感谢您、
    卡纳特
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    非常感谢您的可编程解决方案。
    实际上、我没有使用电源、但感谢您的帮助。

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

    在 Buck_VMC-Main.c 文件中、它们执行的宏与类似
    #defineVout1RAdcaResultRegs.ADCRESULT0//
    ------------
    然后、我像这样使用它
    易失性 UINT16 Vout1R_A;

    if (gpio69_val = 0)
    Vout1R_A = Vout1R;
    其他
    Vout1R_A = RDATA_A;

    祝您好运!