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:如何使用库代码 MSP430检测 UART/串行中断条件?

Guru**** 2539500 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/940317/msp430fr2355-how-does-one-detect-a-uart-serial-break-condition-using-library-code-msp430

器件型号:MSP430FR2355

如何使用 MSP430检测中断条件?

到目前为止、我的代码如下:

 

 

#include


   EUSCI_A_UART_ENABLE        (EUSCI_A1_BASE);
   EUSCI_A_UART_clearInterrupt (EUSCI_A1_base、EUSCI_A_UART_receive_interrupt);
   EUSCI_A_UART_clearInterrupt (EUSCI_A1_base、EUSCI_A_UART_BREAKCHAR_INTERRUPT);
   
   EUSCI_A_UART_enableInterrupt (EUSCI_A1_base、EUSCI_A_UART_receive_interrupt);
   EUSCI_A_UART_enableInterrupt (EUSCI_A1_base、EUSCI_A_UART_BREAKCHAR_INTERRUPT);

\
// UART 中断服务
#pragma vector=USCI_A1_vector
_interrupt void USCI_A1_ISR (void)

   switch (__evo_in_range (UCA1IV、USCI_UART_UCTXCPTIFG))
   {
       USCI_NONE 案例:           中断;
       USCI_UART_UCRXIFG 案例:
       
      //    if (USCI_A1->STATW 和 UCBRK){// UCBRK EUSCI_A_STATW_BRK
       //       transmitString ("break"); // BN
       ///   }

           rBuff[Count++]= UCA1RXBUF;       

 
       案例 USCI_UART_UCTXIFG:    中断;
       案例 USCI_UART_UCSTTIFG:   中断;
       案例 USCI_UART_UCTXCPTIFG: 中断;
       默认值:                   break;
   }


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

    您好、Bryce、

    如 eUSCIA 的第17.3.15.1章所述、您需要将 UCBRKIE 位设置为1、然后在 UCRXIFG 标志处理期间必须检查 UCBRK 位。

    希望这对您有所帮助。

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

    这正是我所坚持的位置、在 C 编码方面。  我找不到符号 UCBRK。
    我尝试坚持使用 driverlib、而不是直接将位敲出。

    ( 这里是一个很棒的答案 )

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

    好的、明白了。

     

       EUSCI_A_UART_ENABLE        (EUSCI_A1_BASE);
       EUSCI_A_UART_clearInterrupt (EUSCI_A1_base、EUSCI_A_UART_receive_interrupt);
       EUSCI_A_UART_clearInterrupt (EUSCI_A1_base、EUSCI_A_UART_BREAKCHAR_INTERRUPT);
       EUSCI_A_UART_enableInterrupt (EUSCI_A1_base、EUSCI_A_UART_receive_interrupt);
       EUSCI_A_UART_enableInterrupt (EUSCI_A1_base、EUSCI_A_UART_BREAKCHAR_INTERRUPT);

    #pragma vector=USCI_A1_vector
    _interrupt void USCI_A1_ISR (void) // UART 中断服务

       switch (__evo_in_range (UCA1IV、USCI_UART_UCTXCPTIFG))
       {
           USCI_NONE 案例:           中断;
           USCI_UART_UCRXIFG 案例:
           
               if (eUSCI_A_UART_queryStatusFlags (eUSCI_A1_base、eUSCI_A_UART_break_detect))){
                   早餐= 1;
               }

     

    但它引出了第二个问题:MSP-EXP430FR 系列上的 TI 仿真应用 COM 端口是否支持通过 UART 中断?

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

    布莱斯

    从我的角度来看、代码看起来不错。

    虚拟 COM 端口将支持该功能、但您需要 PC 上相应的软件工具、因为我知道 HTERM 不支持该功能、但 Tera Term 至少实现了我过去使用的功能。

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

    上面的中断检测代码起作用(但会生成有关内联函数的各种编译器优化警告)。

    在 Windows 10上、我无法从 Terra Term 传递到 launchpad 板。我发现 launchpad 应用串行端口的可靠性高达115、200波特、但没有中断容量。 250、000波特太大了。

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

    您好、Bryce、

    下面的文档在第19页中提到了一些波特率限制

    这里还有一个屏幕截图、介绍了如何使用 Tera Term VT 发送中断



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

    对于 MCLK =24MHz、MSP430 Launchpad 中是什么?

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

    这是已存在的规范、我认为它也适用于 launchpad 反向通道 UART。

    因此、要么降低目标频率、要么选择具有更高性能的 UART 接口、以实现支持中断的可靠高速连接。

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

    您好、Bryce、

    请告诉我该主题上是否有任何打开的内容? 如果不是、我想在一周中结束(2020年9月31日)。