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.

[参考译文] MSP430FR2355:使用模数转换器时出现问题

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1291135/msp430fr2355-problem-using-the-analog-to-digital-converter

器件型号:MSP430FR2355

;-------------------------------------------------------------------------------
            ORG     08000h                  ; Program Reset
;-------------------------------------------------------------------------------


;******************************************************************************
#include  "msp430fr2355.h"
;-------------------------------------------------------------------------------

RESET       mov     #03000h,SP               ; Initialize stackpointer
StopWDT     mov.w   #WDTPW|WDTHOLD,&WDTCTL     ; Stop WDT
MeasurePulse
            clr     &ADCMCTL0
            mov     #ADCSHT_1+ADCON,&ADCCTL0
            mov     #ADCDIV_1,&ADCCTL1
            mov     #ADCRES_2,&ADCCTL2
            mov.b   #0FFh,&P1DIR
            mov.b   #0FFh,&P1SEL0
            mov.b   #0FFh,&P1SEL1
A2DConversion
            bic     #ADCIFG0,&ADCIFG
            bis     #ADCENC+ADCSC,&ADCCTL0
A2DLoop
            bit     #ADCIFG0,&ADCIFG
            jz      A2DLoop
            bic     #ADCENC+ADCSC,&ADCCTL0
            mov     &ADCMEM0,R4
            ret
            
;-------------------------------------------------------------------------------
            ORG     0FFFEh
            DW      RESET
            END

这是我针对 MSP430FR2355的代码。  它会从 A0进行 A/D 读取。  我在开始转换之前清除 ADCIFG0标志。  然后我会轮询 ADCIFG0标志以查看转换何时完成、但转换从未从 A2DLoop 分段中结束。  ADCIFG0标志始终保持0。  我做错了什么?

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

    我不知道您在使用哪种汇编器、但绝对地址的用法与我不同。 我让链接器来查找内容。

    设置 P1SELx 寄存器的每一位只是询问问题。 设置您需要的位、而不设置其他位。

    当选择模块功能时、P1DIR 位无关。

    在任何 FRAM 器件上、您都需要考虑 LOCKLPM5位、该位会锁定 GPIO 设置、直到被清除。

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

    这是来自我正在研究的一个较大程序的摘录、因此所有 P1SELx 位都已设置(我将使用 MSP430FR2355上的所有运算放大器)。  在未使用和无关位上设置 P1DIR 是我做的反射式操作、以避免悬空输入引脚上可能出现额外的电流消耗。

    我的确尝试了清除 PM5CTL0上的 LOCKLPM5位、尽管我认为这只是用于 GPIO。

    问题仍然相同。

    顺便说一下、ADCBUSY 位也被置位、表示微控制器认为它仍在转换。

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

    > MOV #ADCDIV_1、&ADCCTL1

    当 SHP=0时、采样/保持将永远不会结束。 尝试改用如下所示的:

    > MOV #ADCDIV_1+ADCSHP、&ADCCTL1

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

    哇!  就是这样。  谢谢!