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.

[参考译文] MSP430F5132:MSP430F5132

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1239223/msp430f5132-msp430f5132

器件型号:MSP430F5132

您好!
我们将使用 MSP430F5132和 PMP7647源代码。

在 PMP7647中源自... ADC 配置、如下所示:

P1.0 --模拟输入 A0 -- 10位模数转换器(3) --面板电压
P1.1 --模拟输入 A1 -- 10位 ADC (3) -- 电池电压
P1.2 --模拟输入 A2 -- 10位 ADC (3) --电池电流
P1.3 --模拟输入 A3 -- 10位 ADC (3)--  负载电压
P1.4 --模拟输入 A4 -- 10位 ADC (3) --负载电流

//ADC 初始化//
void init_adc (void)
{
ADC10CTL0 = ADC10SHT_2 + ADC10MSC + ADC10ON;// 8clk 周期、单次触发、转换被禁用
ADC10CTL1 = ADC10SHP + ADC10CONSEQ_1;  //采样定时器、通道序列
ADC10CTL2 |= ADC10RES;           // 10位转换结果
ADC10MCTL0 = ADC10INCH_4 + ADC10SREF_1;// A4、A3、A2、A1、A0 (EOS)、Vref+= Vref、Vref-= GND

REFCTL0 |= REFVSEL_2+REFON;        //选择内部 ref = 2.5V
//配置 DMA
DMACTL0 = DMA0TSEL_24;           // ADC10IFG 触发

_data16_write_addr ((unsigned short)&DMA0SA、(unsigned long)&ADC10MEM0);
//源单个地址
_data16_write_addr ((unsigned short)&DMA0DA、(unsigned long)&ADC_Readings[0]);
//目标阵列地址

DMA0SZ = 0x05;               //传输5个字(转换结果)
DMA0CTL = DMADT_4 + DMADSTINCR_3 + DMAEN + DMAIE;//源不变、目标增量、启用、中断启用


WDT 中断中的 ADC 采样和转换

//WDT 以重新启动 ADC
空 INIT_WDT (空)
{

WDTCTL = WDT_MDLY_32;           // WDT 32ms 从1MHz,SMCLK,间隔计时器
SFRIE1 |= WDTIE;              //启用 WDT 中断


//看门狗计时器中断服务例程
#pragma vector=WDT_vector
__interrupt void WDT_ISR (void)
{

_data16_write_addr ((unsigned short)&DMA0DA、(unsigned long)&ADC_Readings[0]);
ADC10CTL0 |= ADC10ENC + ADC10SC;     //采样和转换开始


在当前设计中,我们已对 ADC 通道分配

P1.0 --模拟输入 A0 -- 10位模数转换器(3) --面板电压
P1.1 --模拟输入 A1 -- 10位 ADC (3) -- 电池电压
P1.2 --模拟输入 A2 -- 10位 ADC (3) --电池电流
P1.3 --模拟输入 A3 -- 10位 ADC (3)--  负载电压
P1.4 --用于 I2C 的 SDA  
P3.6 --模拟输入 A7 -- 10位 ADC (3) --负载电流

无法配置 多通道转换。 您能建议使用 ADC 配置吗?

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

    尊敬的 Yogesh Sutar:

    请参阅 MSP430x5xx 和 MSP430x6xx 系列用户指南(修订版 Q)

    我是否可以知道多通道序列转换是通道序列(自动扫描)通道重复序列转换(重复扫描)

    谢谢!

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

    尊敬的 Xiaodong Li:

    它是 重复通道序列(重复自动扫描)...

    我们希望使用 A0、A1、A2、A3和 A6来转换值... 这些通道不是按顺序的、因此 我们在这里需要一些建议

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

    尊敬的 Yogesh Sutar:

    请 在 https://dev.ti.com/tirex/explore/node?node=A__AE9eFMaqVmXndZ9X1mezcg__msp430ware__IOGqZri__LATEST 上查找代码示例 MSP430F51x2_ADC10_14.c

    >>我们希望使用 A0、A1、A2、A3和 A6来转换值... 这些通道不按顺序

    序列通道重复不支持序列不连续的通道。 请参阅 ADC10INCHx.ADC10MCTL0增益描述

    谢谢

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


    Tnanks、表示更新。 以下配置适用于 A0、A1和 A7转换?


    //配置 ADC10;脉冲采样模式、s/w 触发器、rpt 通道序列
    ADC10CTL0 = ADC10SHT_2 + ADC10MSC + ADC10ON;// 16ADCclks、ADC 打开
    ADC10CTL1 = ADC10SHP + ADC10CONSEQ_3;//采样定时器、通道的报告序列
    ADC10CTL2 = ADC10RES;// 10位分辨率

    ADC10MCTL0 = ADC10INCH_7;//A7

    ADC10MCTL0 |= ADC10INCH_1;// AVCC ref、A0、A1 (EOS)

    //配置 DMA0 (ADC10IFG 触发器)
    DMACTL0 = DMA0TSEL_24;// ADC10IFG 触发器
    _data20_write_long ((uintptr_t)&DMA0SA、(uintptr_t)&ADC10MEM0);
    //源单个地址
    DMA0SZ = 0x03;// 2x32转换
    DMA0CTL = DMADT_4 + DMADSTINCR_3 + DMAEN + DMAIE;
    // Rpt、包括目标、字节访问、
    //在转换序列之后启用 int

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

    ADC10 (CONSEQ=1或=3)总是从 ADC10INCH 向下计数到 A0 [请参阅用户指南(SLAU208Q)第二部分27.2.7.4]。 如果您的通道范围不连续、您将对某些不感兴趣的通道进行采样、并忽略结果。 通常、ADC 在采样/保持期间消耗的一小部分电流不会被其穿过的任何数字引脚注意到。

    在本例中、您将对8个通道(A7->A0)进行采样、因此 DMA0SZ 需要为=8。

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

    Bruce、您好!

    感谢您的更新。  

    P1.0 --模拟输入 A0 -- 10位模数转换器(3) --面板电压
    P1.1 --模拟输入 A1 -- 10位 ADC (3) -- 电池电压
    P1.2 --模拟输入 A2 -- 10位 ADC (3) --电池电流
    P1.3 --模拟输入 A3 -- 10位 ADC (3)--  负载电压
    P1.4 --用于 I2C 的 SDA  
    P3.6 --模拟输入 A7 -- 10位 ADC (3) --负载电流

    用于其他用途的其他 ADC 通道,如 I2C ..can 您建议对上述通道列表进行 ADC 配置?

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

    我的预期是、拥有 ADC 样本 P1.4不会给 I2C 带来问题、因为任何干扰都将非常小且非常短。 [我还没有特别尝试过 I2C 引脚、所以先测试一下。] 替代方法是使用 CONSEQ=0并单独对通道进行采样、这更有效。

    更笼统地说:我想你不希望 CONSEQ=3 (MSC=1)、因为在下一组开始之前 DMA ISR 没有时间提取之前的测量值。 我建议你返回到你的原始代码(CONSEQ=1)、只需使用 ADC10INCH_7 (而不是 ADC10INCH_4)并设置 DMA0SZ=8。 在 DMA ISR 中、挑选数组元素[0、4、5、6、7]。 您还应该为 P3.6设置 PM_ANALOG 端口映射、与当前为 P1.0-P1.3设置相同的方法。

    [编辑:固定通道阵列排序。]