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.

[参考译文] RTOS/MSP432P401R:寻找MSP432差分ADC的TI-RTOS示例。

Guru**** 2513045 points
Other Parts Discussed in Thread: ADS1281

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/654004/rtos-msp432p401r-looking-for-ti-rtos-example-of-msp432-differential-adc

部件号:MSP432P401R
在“线程: ADS1281”中讨论的其他部件

工具/软件:TI-RTOS

您好,

我使用CCS7 + MSP432P401R。

我注意到差分ADC没有TI-RTOS示例。

仅Driverlib示例(adc14_singl_davinial_2s_fenderity)。

这只是初始差速器输入的方式吗?

/*在重复模式下配置ADC内存(ADC_MEM0 A0/A1差分)*/
MAP_ADC14_configureSingleSampleMode (ADC_MEM0,TRUE);
MAP_ADC14_configureConversionMemory (ADC_MEM0,ADC_VREFPOS_AVCC_VREFNEG_VSS, ADC_INPUT_A0,TRUE);

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

    刘鸿

    我们确实支持使用TI-Drivers在TI-RTOS中使用差分。

    如果从此处导入ADCBufContinuousSampling示例:

    然后,您可以进入MSP_EXP432P401R.c文件,在ADCBuf下,将ADCBufMSP432_Channels设置更改为:

    ADCBufMSP432_Channels adcBufMSP432Channel[]={
    {
    adcPin = ADCBufMSP432_P5_A0,
    .refSource = ADCBufMSP432_VREFPOS_INTBUF_VREFNEG_VSS,
    .refVoltage = 250万,
    adcInputMode = ADCBBufMSP432_Differential,
    adcDifferentialPin = ADCBufMSP432_PIN,
    adcInternalSource = ADCBufMSP432_internal_source_mode_off
    }
    }; 

    有关详细信息,请参见《TI驱动程序API指南》(doxygen): dev.ti.com/.../中的ADCBuf API指南

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

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

    您好,Evan Wakefield,

    您的方法不起作用。

    >>编译失败
    subdir_rules.mk:9:目标'MSP_EXP432P401R.obj'的配方失败
    "../MSP_EXP432P401R.c",第118行:错误#137:结构"ADCBufMSP432_Channels"没有字段"adcInputMode"
    "../MSP_EXP432P401R.c",第118行:错误#20:未定义标识符"ADCBufMSP432_Different"
    "../MSP_EXP432P401R.c",第120行:错误#20:标识符"ADCBufMSP432_INTERNAL_SOURCE_MODE_OFF"未定义
    编译"../MSP_EXP432P401R.c"时检测到3个错误。
    gmake:***[MSP_EXP432P401R.obj]错误1
    gmake:由于错误,目标'all'没有重制。

    ****构建已完成****

    和ADCBufMSP432.h中的定义

    typedef结构ADCBBufMSP432_Channels {
    UINT_FAST16_t adcPin;/*! ADC引脚,端口通道*/
    ADCBBufMSP432_Reference_Source refSource;/*! ADC参考源*/
    UINT32_t参考电压;/*! 以微伏为单位的ADC参考电压(如果是内部电压,则值应为1.5 / 2.5)*/
    } ADCBufMSP432_Channels;

    我正在使用SimpleLink MSP432P4 SDK v 1.50 .00.12。

    我尝试安装1.60。00.12。

    但我的CCS 7.2 .0.0.0013万 让我下载1.60 as.com无限循环,即使我已经被TI资源浏览器下载了。

    您好

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

    我认为,在MSP432 SDK 1.6 v之前,我们没有添加差分支持,因此您需要下载。

    下载1.60 SDK之后,请访问 :www.ti.com/.../SIMPLELINK-MSP432-SDK

    您需要确保使用的是适当的TI-RTOS内核。 要执行此操作,您可以访问此链接 dev.ti.com/.../

    您需要确保所指向/使用的TI-RTOS内核是1.6 内核,否则会抛出一系列错误。

    由于7.4 v 1.6 在7.4 上经过测试,因此更新至CCS v可能也是明智之举。 processors.wiki.ti.com/.../Download_CCS
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,Evan Wakefield,

    原始 示例在我删除旧CCS,安装新CCS和删除“src”目录时有效。

    但当我修改了代码时,如下所示。

    ADCBBufMSP432_Channels adcBuf0MSP432通道[MSP_EXP432P401R_ADCBUF0CHANNELCOUNT]={


    adcPin = ADCBufMSP432_P5_A0,
    .refSource = ADCBufMSP432_VREFPOS_INTBUF_VREFNEG_VSS,
    .refVoltage = 250万,
    adcInputMode = ADCBBufMSP432_Differential,
    adcDifferentialPin = ADCBBufMSP432_P5_4_A1,
    adcInternalSource = ADCBufMSP432_internal_source_mode_off
    },

    adcPin = ADCBufMSP432_P5_3_A2,
    .refSource = ADCBufMSP432_VREFPOS_INTBUF_VREFNEG_VSS,
    .refVoltage = 250万,
    adcInputMode = ADCBBufMSP432_singLE_end,(.adcInputMode = ADCBBufMSP432_singe_end,)
    adcDifferentialPin = ADCBBufMSP432_PIN_NONE,
    adcInternalSource = ADCBufMSP432_internal_source_mode_off
    }
    };

    WFP 5.5 连接至1.5伏正极电池。
    WFP 5.4 连接到1.5伏电池。

    UART输出如下所示。

    缓冲区482已完成:
    2344.4221万9808,1091360,2453280,2725664,974624,3172544,2570016,1830688,1091360,2764576,3170720,974624,2570016,2764574576,9355712,3170720,25311031104,101313131313536,1363744,3637437456,3374144,136724142,1765246524652,17651957122,1367121957122,13671957122,1357122,1357122,175712301457123,1757123,175712301367123013671230123,175712301367123013571230135712301357123013571230135712301357123,1357121317571213175712131757121317571213175712301357121317571213175712131757123013571230135712301357123013571213175712131757121317</s>980.8109万 136.0245万32.80272566亿49.74624317亿25.44257001亿618.3068万810.9136万27.6457万631.7072万97.4624万25.70016276亿45.74576935亿57.12317072亿2.53110311亿0.4101万3131.3131万353.6136万374.4363万743.7456万33.74144136亿7241.42176524亿65.24652176亿519.57122136亿71.21957122亿1.36719571亿2213.5712万213.5712万217.5712万3014.5712万317.5712万317.5712万3013.6712万3013.6712万3012.3175万7.12301367亿12.3013万57.123万13.5712万30.1357万12.3013万57.123万13.5712万30.1357万12.3135万71.2131万75.7121万31.7571万21.3175万71.2131万75.7121万31.7571万23.0135万71.2131万75.7121万31.7571万21.3175万71.2301万35.7123万1.3571万23.0135万71.2301万35.7121万31.7571万21.3175万712.1317万

    我认为该值不正确。

    我的设置是否错误?

    您好

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

    YHH,

    所以我相信你从这个例子中得到的API可以转换成微伏,所以你需要小心处理。 原因是您需要考虑ADC中获取和显示原始数据的格式。

    默认情况下,此字段显示为下面的圆圈行:  

    为什么不尝试下面的代码示例,我们使用这些示例来测试和查看您获得的内容。  

    e2e.ti.com/.../adcBufDifferential.c

    e2e.ti.com/.../5468.MSP_5F00_EXP432P401R.c

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

    您好,Evan Wakefield,

    我使用MSP-EXP432P401R 2.1 来运行您的示例。

    当我缩短了WFP 5.5 和WFP 5.4 的时间。

    终端显示如下。

    缓冲器452已完成:
    - 0.00 ,0.00 ,0.00 ,- 0.00 ,0.00 ,0.00 ,- 0.02 ,- 0.00 ,0.00 ,0.00 ,- 0.01 ,0.00 ,0.00 ,- 0.01 ,0.00
    0.00 ,0.00 ,- 0.00 ,0.00 ,0.00 ,- 0.00 ,0.00 ,0.00 ,- 0.01 ,- 0.00 ,0.00 ,- 0.00 ,- 0.00 ,0.00 ,0。
    00,- 0.01 ,0.00 ,0.00 ,- 0.04 ,- 0.00 ,- 0.00 ,0.00 ,- 0.02 ,0.00 ,0.00 ,- 0.00 ,0.00 ,0.00 ,- 0.01 ,
    - 0.00 ,0.00 ,0.00 ,- 0.01 ,0.00 ,0.00 ,

    使用1.5V碱性电池作为输入电压。


    当WFP 5.5 连接到正极,而WFP 5.4 连接到负极时。

    终端显示如下。

    缓冲区701已完成:

    1.21 ,1.21 ,1.21 ,1.04 ,0.98 ,1.15 ,1.04 ,1.21 ,1.02 ,1.21 ,1.21 ,0.94 ,1.21 ,1.06 ,0.88 ,1.02 ,
    1.21 ,1.21 ,1.02 ,1.04 ,1.04 ,1.11 ,1.11 ,1.06 ,1.06 ,1.17 ,1.02 ,1.21 ,1.02 ,1.21 ,1.21 ,0.94 ,
    1.17 ,1.21 ,1.21 ,1.04 ,1.11 ,1.15 ,1.02 ,1.19 ,1.09 ,1.17 ,1.08 ,1.13 ,1.21 ,0.90 ,1.21 ,1.21 ,
    0.94 ,1.21 ,

    当WFP 5.5 连接到负极 ,而WFP 5.4 连接到正极时。

    终端显示如下。

    缓冲区795已完成:
    - 1.06 ,- 1.21 ,- 1.13 ,- 1.06 ,- 1.21 ,- 1.00 ,- 1.21 ,- 1.02 ,- 1.04 ,- 1.21 ,- 1.02 ,- 1.20 ,- 1.21 ,-1
    .08,- 1.21 ,- 0.98 ,- 0.98 ,- 1.02 ,- 1.00 ,- 1.21 ,- 1.06 ,- 1.11 ,- 1.11 ,- 1.04 ,- 1.21 ,- 1.21 ,- 1.0
    0,- 1.02 ,- 1.11 ,- 1.21 ,- 1.00 ,- 1.21 ,- 1.13 ,- 1.00 ,- 1.21 ,- 1.00 ,- 1.06 ,- 1.06 ,- 1.04 1.21 ,
    - 0.96 ,- 1.04 ,- 1.08 ,- 0.98 ,- 1.15 ,- 1.21 ,- 1.08 ,- 1.09 ,- 1.17 ,- 1.21 ,

    我认为该值 不正确且不稳定。

    你有什么想法吗? 主板损坏?

    您好

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

    有人对此有什么想法吗?

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

    我可以确认,我已经看到您的行为,并且正在进行调查。

    需要注意的一点是,当您将电池连接到差分输入时,如果电池未连接到VSS,那么ADC输入的高z可能会导致共模电压移动,因此您可以看到摆动。 因此我尝试将电池的正极连接到A0,将电池的负极连接到GND/VSS和A1,并在大约1.21V电压下看到更稳定的结果,电压摆动极少或无摆动。 但是,这显然不是正确的电压,所以我将研究原始值是否正确,或者我们转换为UV的API是否关闭。 请尝试上述操作,确认在将负极连接到GND/VSS和A1时没有摆动。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,Evan Wakefield,

    当我将负极连接到GND时,它是稳定的。

    值也是1.20V。

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

    YHH,

    我发现了问题。 在MSP_EXP432P401R.c中,我们使用AVCC作为参考电压。 然而,我们已将参考电压设为2.5V,而AVCC实际上是3.3V,因此在转换过程中放弃计算。

    请在MSP_EXP432P401R.c文件中进行调整:

    ADCBBufMSP432_Channels adcBuf0MSP432通道[MSP_EXP432P401R_ADCBUF0CHANNELCOUNT]={
    {
    adcPin = ADCBufMSP432_P5_A0,
    .refSource = ADCBufMSP432_VREFPOS_INTBUF_VREFNEG_VSS,
    .refVoltage = 250万,
    adcInputMode = ADCBBufMSP432_Differential,
    adcDifferentialPin = ADCBBufMSP432_P5_4_A1,
    adcInternalSource = ADCBufMSP432_internal_source_mode_off
    },
    {
    adcPin = ADCBufMSP432_P4_7_A6,
    .refSource = ADCBufMSP432_VREFPOS_INTBUF_VREFNEG_VSS,
    .refVoltage = 250万,
    adcInputMode = ADCBBufMSP432_singLE_end,(.adcInputMode = ADCBBufMSP432_singe_end,)
    adcDifferentialPin = ADCBBufMSP432_PIN_NONE,
    adcInternalSource = ADCBufMSP432_internal_source_mode_off
    }
    }; 

    使用此功能,您可以将设备更改为使用正确的内部参考电压发生器作为.refSource,并设置准确的refVoltage。 您应该会看到在1.5V电池上测得的正确值。  

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

    您好 ,Evan Wakefield,

    当我将GND连接到A0针脚时,它工作正常。 (单端?)

    但如果仅使用电池输入,则仍可变。

    您好

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

    YHH,

    包括我使用的示意图的图片。

    我很抱歉,但您必须更清楚地告诉我您的确切含义。  

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

    您好 ,Evan Wakefield,

     我要对我的英语表示歉意。

    如果我关注您的连接,我获得了正确的值。

    但是如果我删除GND的连接,我得到未知值。

    (ADS1281中使用的以下连接)

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

    不用担心英语,这里很棒!! 我只是需要更好地了解您在做什么。 这很有帮助!

    如前所述,当您在差分输入之间连接电池时,如果电池未连接到VSS,则ADC输入的高z可能导致共模电压移动,因此您会看到摆动和不可预测性。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这不是差分测量的全部点吗? 它是否忽略了共模? (当然在限制范围内)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Keith,YHH,

    您回答正确。 我很抱歉。 我被其他东西弄糊涂了。 谢谢!

    所以,首先,我想发生的是,有一些非公共的噪音被添加到其中一个信道中,即NEG或POS侧。

    我会推荐的几件事。 首先,使用可产生稳定电压的已知电源更换电池。

    其次,启动板的布局不是为了优化ADC的性能。 有些迹线比其他迹线长,并且倾向于通过具有不同切换特性的其它迹线,这些迹线可能会向电路中注入噪音。 在LaunchPad上选择要用于差分模式的信道时,需要格外小心。 如果使用其他通道的轨迹长度大致相等,并且它们不会通过或通过其他快速切换I/O,则使用这些通道可能会更好。 我怀疑这可能是挥杆的原因,在某种程度上,其中一个信道上注入了非常见的噪音,因为启动板的布局并不涉及ADC的出色性能。 尝试几个不同的渠道,看看这是否会对结果产生任何影响。

    另一件可能有帮助的事情是使用外部Vref。