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.

[参考译文] MSP430FR58891:CAN#39;t 将 ADC12_B 作为单通道或序列执行。 我在下面添加了我的 ADC10_Initialize 例程。 ADC12IFG0标志从未被置位、我不能#39;t 在 ADC12MEM0中获取任何数据??

Guru**** 2539500 points
Other Parts Discussed in Thread: MSP430FR58891

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/567298/msp430fr58891-can-t-do-adc12_b-as-single-channel-or-as-sequence-i-have-included-my-adc10_initialize-routine-below-the-adc12ifg0-flag-is-never-being-set-i-don-t-get-any-data-in-adc12mem0

器件型号:MSP430FR58891

void ADC10_Initialize (void)


P9SEL1 = 0xff;// A8 - A15 58891 Msp430fr58891 64引脚数据封装第114页
P9SEL0 = 0xff;

P1SEL0 = 0x0F;// A0 - A3 58891数据页93
P1SEL1 = 0x0F;

while (ADC12CTL1 & ADC12BUSY){dummy++;}

while (REFCTL0 & REFGENBUSY){dummy++;}//等待 REF 模块

ADC12CTL0_bit.ADC12SC = 0;//无采样 n 转换启动
ADC12CTL0_bit.ADC12ENC = 0;//禁用转换

// ADC12CTL0 = 0x4490;//S&H 时间3=>64 ADC12CLK,ADC12ON=1,序列模式自动启动
ADC12CTL0 = 0x4410;//S&H 时间3=>64 ADC12CLK、ADC12ON=1、单模式自动启动

REFCTL0 = 0x0061;// Genot=1、VSEL=2.5V、REFON=1

// ADC12CTL1 = 0x00E2;// ClkDiv = 8、SHS = 000 ADC12SC 位、
// ClkSel=0 ADC12OSC ~5MHz (MODOSC)、CONSEQ=01通道序列
ADC12CTL1 = 0x00E0;// ClkDiv=8、SHS=000 ADC12SC 位、
// ClkSel=0 ADC12OSC ~5MHz (MODOSC)、CONSEQ=00单通道
ADC12CTL2 = 0x0010;// RES = 10位
ADC12CTL3 = 0x0000;// StartAddx=0在 Chnl 0上的起始序列

// ADC12MCTL0 = 0x0400;//通道 A0 4=VRSEL ->VR+= VeREF+、VR-=AVSS
ADC12MCTL0 = 0x0000;//通道 A0 0 = VRSEL -> VR+= AVCC、VR-= AVSS、8= EOS -序列结束

ADC12MCTL1 = 0x0401;//通道 A1
ADC12MCTL2 = 0x0402;//通道 A2
ADC12MCTL3 = 0x0403;//通道 A3
ADC12MCTL4 = 0x0404;//通道 A4
ADC12MCTL5 = 0x0405;//通道 A5
ADC12MCTL6 = 0x0406;//通道 A6
ADC12MCTL7 = 0x0407;//通道 A7
ADC12MCTL8 = 0x0408;//通道 A8
ADC12MCTL9 = 0x0409;// Chanl A9
ADC12MCTL10 = 0x040A;// Chanl A10
ADC12MCTL11 = 0x040B;// Chanl A11
ADC12MCTL12 = 0x040C;//通道 A12
ADC12MCTL13 = 0x040D;//通道 A13
ADC12MCTL14 = 0x040E;// Chanl A14
ADC12MCTL15 = 0x048F;// Chanl A15 8=EOS -序列结束

ADC12IER0 = 0x0000;//中断使能
ADC12IER1 = 0x0000;//中断使能
ADC12IER2 = 0x0000;//中断使能:RDY、TOV、OV、HI、LO、 在中

ADC12IFGR0 = 0x0000;//中断标志
ADC12IFGR1 = 0x0000;//中断标志
ADC12IFGR2 = 0x0000;//中断标志:RDY、TOV、OV、HI、LO、 在中

ADC12CTL0 |= ADC12ENC | ADC12SC;

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您需要将 ADC12VRSEL 位设置为1以使用内部基准、而不是提供外部基准。 通道序列可通过 ADC12CONSEQx 位进行设置、此时您只需执行单通道操作、并且可通过 ADC12MSC 位获取多个样本。 您尚未设置任何 ADC 中断或全局中断使能位。 请参阅 MSP430F55xx_ADC_09.c 和 msp430fr69xx_ADC12_xx.c 示例。

    此致、
    Ryan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    首先、非常感谢您的帮助。 如果我启用中断、我需要 ISR 吗? TI MSP430 5891系列指南第671页的第28.1节指出:"要转换和存储的32个独立 ADC 样本将不会有任何 CPU 干预。"
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    示例在哪里?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    好的、谢谢您。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    很高兴听到您在代码方面取得了进展。 CPU 可能不会干预32个独立 ADC 样本的转换和存储、但您需要知道样本何时完成、以便您可以采取措施。 这可以通过轮询 IFG 或进入 ISR 来完成。

    此致、
    Ryan