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/MSP-EXP430F5529LP:存储 ADC 值

Guru**** 2604225 points
Other Parts Discussed in Thread: MSP430F5529

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/650726/ccs-msp-exp430f5529lp-storing-adc-values

器件型号:MSP-EXP430F5529LP
主题中讨论的其他器件:MSP430F5529

工具/软件:Code Composer Studio

您好!

是否有人知道如何存储26、000个 ADC 值、以便我可以在 MATLAB 上绘制这些值? 我尝试将其保存在 ADC12MEM 中、但它没有足够的存储器。 我想通过 UART 将这些值传输到终端(PuTTy)、并将这些值保存到 MATLAB 中绘制。 但是、我不确定它是否起作用以及如何使它起作用。  

此致、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    不知道采样率是多少、但数据可以存储到器件闪存(高达200KByte/s)或由 CDC (高达1MB/s)传输到 PC。 有开源 TI USB 堆栈、默认配置为5529、因此您可以在此处找到开源 CDC 示例。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我以1KHz 采样。 您知道吗 ?我是否可以参考任何示例来将数据存储在器件闪存中?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    它应该在这个封装内...
    www.ti.com/.../slac300
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我将数据从串行端口发送到 PC。 我更喜欢使用逗号分隔的 ASCII 值、您可以使用 Tera Term 或其他一些现成的终端程序读取这些值。 逗号分隔使您可以轻松地阅读 Excel 或其他程序以进行分析、或使用 python 脚本重新格式化。

    您必须将逻辑电平串行端口转换为 RS-232电平。 然后、本地计算机 COM 端口与 USB 到串行 COM 端口之间存在很大差异。 我在使用计算机 COM 端口获得任何速度时遇到问题。 (我怀疑司机是古代的。) 有时、它将螺旋上升至低至9600波特。 但是、使用 USB 转串行电缆时、当我需要快速转储大量数据时、我通常会得到高达460.8千波特的工作电压。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用用户="Kipton Moravec"]
    您必须将逻辑电平串行端口转换为 RS-232电平。 然后、本地计算机 COM 端口与 USB 到串行 COM 端口之间存在很大差异。 我在使用计算机 COM 端口获得任何速度时遇到问题。 (我怀疑司机是古代的。) 有时、它将螺旋上升至低至9600波特。 但是、使用 USB 转串行电缆时、当我需要快速转储大量数据时、我通常会得到高达460.8千波特的工作电压。[/quot]

    主题与带有 USB 硬件模块的 MSP430F5529相关、无需串行端口或 USB 转串行电缆。 有一个带有开源 CDC 示例的 TI 开源 USB 堆栈。

    http://software-dl.ti.com/msp430/msp430_public_sw/mcu/msp430/MSP430_USB_Developers_Package/latest/index_FDS.html

    对于没有 USB 硬件模块的器件、可将 USB 用于具有 TTL 电平的串行芯片/板、例如、像这个...

    https://www.ebay.com/itm/112297626610 

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

    大家好、

    感谢所有输入。 我将尝试这两种方法。 这是我使用计时器在1KHz 时读取1000个 ADC 值的代码、这些值存储在存储器中。  我当前正在尝试将数据写入闪存、但不确定如何启动。  

    #include "driverlib.h"
    #include

    #define ADC_TIMER_PERIOD 1000
    define num 1000

    volatile uint16_t X_axy[num];
    volatile uint16_t Y_AXI[num];
    volatile uint16_t Z_axy[num];

    void Setup_ADC (void)

    GPIO_setPeripheralModuleFunctionInputPin (GPIO_PORT_P6、GPIO_PIN0 + GPIO_PIN1 + GPIO_PIN2);//启用 A/D 通道输入
    ADC12_A_ENABLE (ADC12_A_base);
    ADC12_A_setupSamplingTimer (ADC12_A_base、ADC12_A_CYCLEHOLD_256_cycles、ADC12_A_CYCLEHOLD_4_cycles、ADC12_A_MULTIPLESAMPLESENABLE);
    ADC12CTL1 = ADC12SHP;
    ADC12MCTL0 = ADC12INCH_0;// ref+=AVcc、channel = A0
    ADC12MCTL1 = ADC12INCH_1;// ref+=AVcc、channel = A1
    ADC12MCTL2 = ADC12INCH_2+ADC12EOS;// ref+=AVcc、channel = A2、end seq

    //启用存储器缓冲器2中断
    ADC12_A_clearInterrupt (ADC12_A_base、ADC12IE2);
    ADC12_A_enableInterrupt (ADC12_A_base、ADC12IE2);

    void main (void)

    WDT_A_HOLD (WDT_A_base);//停止看门狗计时器
    GPIO_setAsOutputPin (GPIO_PORT_P4、GPIO_PIN7);
    GPIO_setOutputLowOnPin (GPIO_PORT_P4、GPIO_PIN7);
    Setup_adc();
    TA0CCTL1 = OUTMOD_3;//设置/复位上升沿
    TA0CCR1 = ADC_TIMER_PERIODE/2-1;//中途
    TA0CCR0 = ADC_TIMER_PERIOD_1;//每1000个 SMCLK 周期一次,即1KHz。
    ADC12CTL1 |= ADC12SH_1;// SHS=1表示 F5529上的 TA0:CCI1B
    ADC12CTL0 |= ADC12ENC;//注意这将锁定 ADC12的其他字段。
    TA0CTL = tassel_2 | ID_0 | MC_1 | TACLR;// SMCLK、/1、向上(、清除)

    while (1)

    ADC12_A_startConversion (ADC12_A_base、ADC12_A_MEMORY_0、ADC12_A_SEQOFCHANNELS);
    //Enter LPM0、启用中断
    _bis_SR_register (LPM0_bits + GIE);
    //用于调试器
    __no_operation();

    #if defined (__TI_Compiler_version__)|| Defined (__IAR_systems_ICC__)
    #pragma vector=ADC12_vector
    _interrupt
    #Elif defined (_GNU_)
    __attribute__((中断(ADC12_vector))
    #endif
    空 ADC12ISR (空)

    静态无符号 int i = 0;

    switch (__evo_in_range (ADC12IV、34)){
    情况0:中断;//Vector 0:无中断
    情况2:中断;//Vector 2:ADC 溢出
    情况4:中断;//矢量4:ADC 时序溢出
    情况6:中断;//Vector 6:ADC12IFG0
    情况8:中断;//Vector 8:ADC12IFG1
    案例10://Vector 10:ADC12IFG2
    if (i<1000)

    //移动结果,IFG 被清除
    x_axy[i]= ADC12_A_getResults (ADC12_A_base、ADC12_A_MEMORY_0);
    //移动结果,IFG 被清除
    y_axy[i]= ADC12_A_getResults (ADC12_A_base、ADC12_A_MEMORY_1);
    //移动结果,IFG 被清除
    z_axy[i]= ADC12_A_getResults (ADC12_A_base、ADC12_A_MEMORY_2);
    i++;

    其他
    GPIO_toggleOutputOnPin (GPIO_PORT_P4、GPIO_PIN7);

    //退出活动 CPU,在此处设置断点
    _BIC_SR_REGISTER_ON_EXIT (LPM0_BITS);
    情况12:中断;//向量12:ADC12IFG3
    案例14:中断;//Vector 14:ADC12IFG4
    情况16:中断;//向量16:ADC12IFG5
    情况18:中断;//Vector 18:ADC12IFG6
    情况20:中断;//Vector 20:ADC12IFG7
    情况22:中断;//Vector 22:ADC12IFG8
    情况24:中断;//Vector 24:ADC12IFG9
    情况26:中断;//Vector 26:ADC12IFG10
    情况28:中断;//Vector 28:ADC12IFG11
    情况30:中断;//Vector 30:ADC12IFG12
    情况32:中断;//Vector 32:ADC12IFG13
    案例34:中断;//Vector 34:ADC12IFG14
    默认值:break;

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    MATLAB 具有用于读取串行端口数据的内置函数(对于 MSP430F5529LP、为 AKA CDC 或虚拟 COM)。 请参阅此链接 :www.mathworks.com/.../serial.fscanf.html