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.

[参考译文] MSP-EXP430FR5739:自从执行 ADC 以来、电路板不可访问

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1118832/msp-exp430fr5739-board-inaccessible-since-implementing-adc

器件型号:MSP-EXP430FR5739
主题中讨论的其他器件: UNIFLASHMSP-FET430UIF

大家好、

我一直在使用 MSP-EXP430FR5739板开发一些代码来读取电位器输入并将其发送到 UART。  

一个重要的问题是、当 ADC 已经设置好并且正常工作时、我无法再通过 Uniflash 或 CCS 访问该电路板。多个电路板会发生这种情况。

这使我无法重新刷写电路板、有时甚至无法 通过 PuTTy 访问电路板。

我在尝试连接期间尝试过重置按钮、但我不确定这是否有用。

我是否错误地实现了 ADC 外设、从而使电路板无法运行? 此代码具有其他方面、例如通过计时器的 PWM。  

以下 ADC 代码:

   //---- 电位计控制 ADC ---
   //为模拟输入 P3.0设置 P3.0 -> A12
   P3SEL0 |= BIT0;

   ADC10CTL0 &=~ADC10SHT0_H;        //清除 ADCSHT
   ADC10CTL0 |= ADC10SHT_2;          //更改为16个周期
   ADC10CTL0 |= ADC10ON;             //打开 ADC

   ADC10CTL1 |= ADC10SSEL_2;         // ADC 时钟源
   ADC10CTL1 |= ADC10SHP;            //采样定时器

   ADC10CTL2 &= ~ADC10RES;          //清除分辨率
   ADC10CTL2 |= ADC10RES;            // 10位分辨率

   ADC10MCTL0 |= ADC10INCH_12;        //发送 A6到 ADC 存储器

谢谢

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

    以下代码位于主循环中:

         INT 值= ADC10MEM0;

         ADC10CTL0 |= ADC10ENC | ADC10SC;       //启用并开始转换

         while ((ADC10IFG & ADC10IFG0)==0){};   //等待转换

        

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

    您好!

    当您尝试刷写程序时、您会收到什么类型的错误?  您是否能够调试程序?  此外、我能看到您正在尝试运行的程序中的所有代码吗?

    此致、

    Kyle Holub

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

    您好、Kyle、

    感谢您的回复。

    在 Uniflash 上、完全无法检测到电路板。 该板在设备管理器中显示为 Windows 上的 COM 端口。

    在 CCS 上、尝试闪存会加载调试器、但它会在声明"无法在指定的 COM 端口上找到 MSP-FET430UIF "之前挂起几分钟。

    我将尝试收集代码以供审核。 下面的这个代码片段也是一个可能也影响我的新代码位。 在添加 ADC 和该代码之前、所有其他代码均正常工作。

     char* msg = IntToHexArray (value);//用于将 ADC 值转换为用于 UART 输出的字符数组

         SerialPrint (msg、3);//将数组发送到 UART - USB 的函数,通过 putty 进行读取
         免费(msg);
         SerialPrint("\n\r\n",2);

    char * IntToHexArray (int val){
       无符号短整型 I = 0;
       int val_buff = val;
       while (val_buff){
           VAL_buff /= 10;
           i++;
       }

       char* out_arr =(char *) calloc (i、sizeof (char));

       if (out_arr =NULL){
           返回(char *) NULL;
       }

       while (i---){
           OUT_ARr[i]=(val % 10)+"0";
           Val /= 10;

       }
       返回 OUT_ARR;

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

    快速更新:我可以使用其他计算机连接到 Putty。 这是我尝试过的两个板的情况。 对于一个、我可以连接到 Uniflash 和 Putty。 对于另一个、我只能使用 PuTTy 进行连接

    谢谢

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

    您好!

    CCS 找不到调试器肯定是很奇怪的。  我目前认为代码没有任何问题。  我对您插入调试器时的状态很好奇。  您能否查看以下有关调试器 LED 输出的屏幕截图、并告诉我您电路板上的 LED 是什么样子?  此外、您的硬件设置是什么样的?

    此致、

    Kyle Holub