主题中讨论的其他器件:MSP430F5529
工具/软件:Code Composer Studio
您好!
是否有人知道如何存储26、000个 ADC 值、以便我可以在 MATLAB 上绘制这些值? 我尝试将其保存在 ADC12MEM 中、但它没有足够的存储器。 我想通过 UART 将这些值传输到终端(PuTTy)、并将这些值保存到 MATLAB 中绘制。 但是、我不确定它是否起作用以及如何使它起作用。
此致、
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.
工具/软件:Code Composer Studio
您好!
是否有人知道如何存储26、000个 ADC 值、以便我可以在 MATLAB 上绘制这些值? 我尝试将其保存在 ADC12MEM 中、但它没有足够的存储器。 我想通过 UART 将这些值传输到终端(PuTTy)、并将这些值保存到 MATLAB 中绘制。 但是、我不确定它是否起作用以及如何使它起作用。
此致、
[引用用户="Kipton Moravec"]
您必须将逻辑电平串行端口转换为 RS-232电平。 然后、本地计算机 COM 端口与 USB 到串行 COM 端口之间存在很大差异。 我在使用计算机 COM 端口获得任何速度时遇到问题。 (我怀疑司机是古代的。) 有时、它将螺旋上升至低至9600波特。 但是、使用 USB 转串行电缆时、当我需要快速转储大量数据时、我通常会得到高达460.8千波特的工作电压。[/quot]
主题与带有 USB 硬件模块的 MSP430F5529相关、无需串行端口或 USB 转串行电缆。 有一个带有开源 CDC 示例的 TI 开源 USB 堆栈。
对于没有 USB 硬件模块的器件、可将 USB 用于具有 TTL 电平的串行芯片/板、例如、像这个...
大家好、
感谢所有输入。 我将尝试这两种方法。 这是我使用计时器在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;
}
}