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/TIDA-00120:MSP430F5132

Guru**** 2519520 points
Other Parts Discussed in Thread: TIDA-00120, MSP430F5132

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/715946/ccs-tida-00120-msp430f5132

器件型号:TIDA-00120
主题中讨论的其他器件: MSP430F5132

工具/软件:Code Composer Studio

主席先生,

   我正在从事 TIDA-00120参考设计。 在此设计编程中、未使用两个 ADC A7和 A8。 我想在我的应用中启用它。 我曾经尝试过,但它不起作用。 请帮助我启用 ADC 7和8。  

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

    您好 Sanjay、

    尽管我不熟悉此 TI 参考设计、但我建议您参考 CCS 中 TI Resource Explorer 中 MSP430F5132的代码示例。 结合参考 《MSP430x5xx 和 MSP430x6xx 系列用户指南》、您可以添加或重新配置 TI 设计源代码、以添加对 ADC A7和 A8通道的支持。

    查看 PMP7605源代码中的'main.c'文件、我找到了完成 ADC 设置的"Init_adc ()"函数。 假设您希望其他 A7和 A8通道与其他通道相似、我首先要更改的内容之一是"ADC10INCH_5"至"ADC10INCH_8"。

    void Init_ADC (void)
    {
    //在
    
    ADC10CTL1上配置 ADC10 ADC10CTL0 = ADC10SHT_2 + ADC10MSC + ADC10ON;// 16ADCclks、MSC、ADC = ADC10SHP + ADC10CONSEQ_1; //采样定时器,s/w 三态,单序列
    ADC10CTL2 |= ADC10RES; // 10位转换结果
    ADC10MCTL0 = ADC10INCH_5 + ADC10SREF_1;// A0、A1、A2、A3、A4、A5 (EOS)、Vref
    //默认情况下、REFMSTR=1 => REFCTL 被用来配置内部基准
    while (REFCTL0 & REFGENBUSY); //如果基准发生器忙,则等待
    REFCTL0 |= REFVSEL_2+REFON; //选择内部基准= 2.5V
    _DELAY_CYCLES (1000);
    //配置 DMA0 (ADC10IFG 触发器)
    DMACTL0 = DMA0TSEL_24; // ADC10IFG 触发
    器__data16_write_addr ((无符号短整型)&DMA0SA、(无符号长整型)&ADC10MEM0);
    //源单地址
    __data16_write_addr ((无符号短整型)&DMA0DA,(无符号长整型)&ADC_Readings[0]);
    //目标数组地址
    DMA0SZ = 0x06; // 3次转换
    DMA0CTL = DMADD_4 + DMADSTINCR_3 + DMAEN + DMAIE;
    
    } 

    此致、

    James

    MSP 客户应用

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    主席先生,
    我已经完成了这个过程、但是我无法获得 ADC 值。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    这是很好的了解、但请提供有关您尝试过的内容的更多详细信息。 首先、我建议您打破这一挑战。 从我们的代码示例开始、充分了解如何在不使用 DMA 的情况下从所需通道读取 ADC 数据。 然后、了解如何在 TI 参考设计代码中使用 DMA (因为它在"Init_ADC"函数中进行了初始化)将 ADC 数据从缓冲区移动到数组、然后将所有内容逐件集成到 TI 参考设计代码中。

    此致、

    James

    MSP 客户应用
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    主席先生,
    我在该程序中进行了以下更改以启用 ADC A7。 我增加了 ADC 的数组值(1)。 然后定义整数。 用于存储 ADC 输出(2)的值。 定义第7个 ADC 名称(3)。 从0值(4)初始化整数。 取 ADC 值的平均值、并将平均 ADC 的最终值存储在另一个整数(5)中。 再次使用该值后、从0 (6)初始化整数。 ADC 函数平均值的变化、IO 函数的变化和 ADC 初始化函数的变化(7)。 但我无法启用 A7、也无法获取 A7上的值。

    unsigned intadc_Readings [7];

    无符号 int Temp_Comp、Temp_Comp_Avg=0;

    3.#define T_C 7.

    4、TEMP_Comp_Avg = 0;

    5. TEMP_Comp = Temp_Comp_Avg / CTR_TH;

    6. TEMP_Comp_Avg = 0;

    7.#pragma vector=dma_vector
    _interrupt void DMA0_ISR (void)

    switch (__evo_in_range (DMAIV、16))

    情况0:中断; //无中断
    案例2:
    //转换序列完成
    ADC10CTL0 &=~ADC10ENC;
    Panel_Voltage_Avg += ADC_Readings [P_V];
    Battery Voltage_Avg += ADC_Readings [B_V];
    Panel_Current_Avg += ADC_Readings [P_I_S];
    Battery CURRENT_AVG += ADC_Readings [B_I_S];
    Load_Current_Avg += ADC_Readings [B_i];
    TEMP_Comp_Avg += ADC_Readings [T_C];
    Reading_captured = 1;
    Avg_CTR ++;

    中断; // DMA0IFG
    案例4:中断; // DMA1IFG
    案例6:中断; // DMA2IFG
    案例8:中断; //保留
    案例10:中断; //保留
    案例12:中断; //保留
    案例14:中断; //保留
    案例16:中断; //保留
    默认值:break;




    /*此处所有端口初始化均已完成*/
    空 Init_IOS (空)

    //高分辨率频率已锁定;现在配置端口以在 TD0/TD1上输出 PWM
    P1SEL |= BIT7; // P1.7、TD0.1、选项选择
    P1DIR |= BIT7; //输出方向
    P2SEL |= BIT0 + BIT2 + BIT3;// P2.0/TD0.2、P2.2/TD1.1、P2.3/TD1.2、选项选择
    P2DIR |= BIT0 + BIT2 + BIT3 + BIT4 + BIT5 + BIT6;//输出方向
    // P3DIR &=~BIT6;
    P2DIR &=~BIT1;

    PMAPPWD = 0x02D52; //启用写入访问以修改端口映射寄存器
    PMAPCTL = PMAPRECFG;//允许在运行时重新配置
    P1MAP0|= PM_ANALOG;//修改所有 PxMAPy 寄存器
    P1MAP1|= PM_ANALOG;//修改所有 PxMAPy 寄存器
    P1MAP2|= PM_ANALOG;//修改所有 PxMAPy 寄存器
    P1MAP3|= PM_ANALOG;//修改所有 PxMAPy 寄存器
    P1OMAP4|= PM_ANALOG;//修改所有 PxMAPy 寄存器
    P1MAP5|= PM_ANALOG;//修改所有 PxMAPy 寄存器
    P3MAP6|= PM_ANALOG;//修改所有 PxMAPy 寄存器
    PMAPPWD=0; //通过写入不正确的密钥来禁用写访问以修改端口映射寄存器
    P1SEL |= BIT0 + BIT1 + BIT2 + BIT3 + BIT4 + BIT4;//在应用模拟信号时将端口映射寄存器 PxMAPy 设置为 PM_ANALOG、同时将 PxSEL.y=1

    P3SEL |= BIT6;

    P3DIR |= BIT2 + BIT3;
    Panel_disable;




    空 Init_ADC (空)

    //配置 ADC10
    ADC10CTL0 = ADC10SHT_2 + ADC10MSC + ADC10ON;// 16ADCclks、MSC、ADC 打开
    ADC10CTL1 = ADC10SHP + ADC10CONSEQ_1; //采样计时器,s/w trig,单序列
    ADC10CTL2 |= ADC10RES; // 10位转换结果
    ADC10MCTL0 = ADC10INCH_7 + ADC10SREF_1;// A0、A1、A2、A3、A4、A5、A6、A7 (EOS)、Vref
    //默认情况下、REFMSTR=1 => REFCTL 被用来配置内部基准
    while (REFCTL0和 REFGENBUSY); //如果参考生成器忙,请等待
    REFCTL0 |= REFVSEL_2+REFON; //选择内部基准= 2.5V
    _delay_cycles (1000);
    //配置 DMA0 (ADC10IFG 触发器)
    DMACTL0 = DMA0TSEL_24; // ADC10IFG 触发
    __data16_write_addr ((unsigned short)&DMA0SA、(unsigned long)&ADC10MEM0);
    //源单个地址
    __data16_write_addr ((无符号短整型)&DMA0DA、(无符号长整型)&ADC_Readings[0]);
    //目标数组地址
    DMA0SZ = 0x06; // 3次转换
    DMA0CTL = DMADT_4 + DMADSTINCR_3 + DMAEN + DMAIE;

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

    为了便于将来参考,当使用语法 Highlighter 工具(类似于“ ")找到"插入代码、附加文件等..." 单击"回复"按钮后显示的链接。

    如前所述、删除 DMA 代码、直到您知道正在从所有通道读取 ADC 数据。 现在、我想您一次处理的内容太多、需要先进行简化、然后再继续。

    此致、

    James

    MSP 客户应用