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.

[参考译文] MSP430FR59721:eUSCIA0接收中断不起作用

Guru**** 2539740 points
Other Parts Discussed in Thread: MSP430F249, MSP430FR59721, MSP430FR5739, SN74LVC1G125

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/753518/msp430fr59721-euscia0-receive-interrupt-not-working

器件型号:MSP430FR59721
主题中讨论的其他器件:MSP430F249MSP430FR5739SN74LVC1G125

我已经设置了这些寄存器、并认为它们是正确的。 波特率为115200。 我将发送一条包含5个字节的小消息。 我可以观察到在 CRO 上传输的数据、数据是正确的。 我还可以连接到 PC 并观察它是否正常。 当我从 PC 发送 时(使用 Tera Term)、我不接收中断。 我可以在 MCU 的引脚1上看到 CRO 上的波形。 我已将 GIE 置1、并且接收中断已启用。 我 没有设置奇偶校验。  

请提出任何建议。

谢谢

Peter

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我还应该说、我将引脚1和64用于 RXD0和 TXD0。 我注意到引脚32和33上还有另一种选择。 我是否应该设置某项来选择其中一项?

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

    是的、应该有一个寄存器允许您重新映射引脚、但我在文档中看不到这一点。 我将对此进行研究、并将让您知道我发现的内容。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Eddie

    我也看过了用户指南、数据表和勘误表、但没有提到这一点。 我还浏览了所有寄存器名称.addresses、看不到类似的内容。 我期待收到您的回复、因为这看起来就像我的问题。  

    谢谢

    Peter

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

    我毫不犹豫地不同意 Eddie、但我认为 FR59系列没有像端口映射器(F5)或重映射位(FR2/FR4)这样的东西。 我相信、在 PxSEL 位中选择的任何一个都是这样。 (我认为甚至可以同时使用这两组、但我无法告诉您、如果您为 RXD 侧执行此操作会发生什么情况。)

    您是否有可以向我们展示的任何代码? 有时、它所做的只是一个拼写错误。

    [编辑:更正了我自己的拼写错误。]

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

    让我提供更多详细信息。 我的 MCU 正在与4G 模块通信。 我向模块发送了 AT 命令、但在模块的发送引脚、我的 Rx 引脚上没有任何活动。 4G 模块具有1.8V 电平的 UART、因此我在它们之间使用电平转换器。 为了找出故障、我从电平转换器上断开了 MCU Tx/Rx 线路。 在他们的位置、我替换了一个连接到 PC 的 RS232板。 我设置了一个115200波特的终端程序、8N1。 我能够向4G 模块发送 AT 命令并接收响应。 对我来说、这意味着4g 模块没有故障。 然后、我执行了相反操作、将 MCU 连接到 RS232板、并重复相同的测试。 PC 接收到我发送的命令。 然后、我尝试向 MCU 发送字节。 我完全没有看到中断、但我可以查看 MCU 的引脚1 (USCAA0RXD)并使用 CRO 查看数据。 数据正确。  

    我的设置是  

    SetupUART0 bis.b #UCSWRST、&UCA0CTL1;配置 UART 0
    BIS.b #BIT2+BIT3、和 P4SEL0
    BIC.b #BIT2+BIT3、和 P4SEL1

    BIS.b #UCSSEL_2、&UCA0CTL1;设置 CLK = SMCLK
    ;为波特率设置 uart0
    MOV.b #4、&UCA0BR0;4表示115200波特;52表示9600
    MOV.w #0x05551、UCA0MCTLW;0x05551用于115200;0x04911用于9600
    CLR.b 和 UCA0BR1
    BIC.b #UCSWRST、和 UCA0CTL1;从复位中释放

    我在发送数据之前启用接收中断   

    BIS.w #UCRXIE、&UCA0IE;启用接收 int
    BIC.w #UCRXIFG、UCA0IFG;清除标志

    我看不出我还能做些什么,并对任何建议持开放态度。 我只想解决这个问题、无论是我的问题还是其他人的问题。

    感谢您的关注。

      

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

    您如何知道您没有收到中断? 断点? LED?

    您的 ISR 是什么样子的?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我在这里有一个断点。 我明天将尝试使用 LED、看看这是否有用。
    代码是
    eUSCI_A0_INT ;0xFFEE调制解调器接收
    BIC.w #UCRXIFG、和 UCA0IFG
    MOV.w &UCA0RXBUF、R10
    MOV.b R10、0 (R6)
    公司 R6.
    Dec.bbyte_counter
    jnzUSARTb;不是结尾

    之二 #RX_IN、FLAGC
    BIC.w #UCRXIE、UCA0IE;禁用接收内部
    USARTb TI

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

    在字节到达时、您的程序在做什么(最好猜测)? LPM? 旋转环路?

    您的矢量是否有误放的机会?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我的程序处于等待 RX_IN 置位的循环中。 我的断点位于 ISR 的第一条指令处。
    下面是向量位置
    org) 0FFC6h
    dw虚拟;oxffc6.
    DW虚拟;0xc8.
    DW虚拟;0xFFCA
    DW Port4_INT;0xcc
    DW PORT3_INT ; 0xcce
    DW 虚拟;0xcd0
    DW 虚拟;0xcd2.
    DW PORT2_INT;0xcd4.
    DW 虚拟;0xcd6.
    DW 虚拟 ;0XFFD8
    DW Port1_INT;0xffda
    DW TA1_CCR0_INT;0xxdc
    DW 虚拟;0xffffff
    DW DMA_INT;0xxe0
    DW 虚拟;eUSCI_B1_INT;0xFFE2.
    DW 虚拟;eUSCI_A1_INT ;0xFFE4
    DW TA0_CCR_INT;0xFFE6 eUSCI_A1_TX_RX
    DW TA0_CCR_INT;0xxe8
    DW 虚拟;0xcea.
    DW eUSCI_B0_INT ;0x0x0xEC
    DW eUSCI_A0_INT ;0xxee
    DW 虚拟 ;0xFFF0保留
    DW WDT_INT ;0xFFF2
    DW TB0_CCR_INT;F4
    DW TB0_CCR0_INT;F6
    DW COMP_INT;F8
    DW USER_NMI_INT;fA
    DW System_NMI_INT;FC
    DW 复位 ; FE
    结束

    感谢你的帮助

    Peter
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我假设这是 IAR 汇编语法、我没有 IAR。 (CCS 为每个矢量使用单独的.section、因此链接器会放置它们。)

    我看不到您所展示的内容有任何明显的错误、因此下一个猜测是它在其他地方。 此时、我将使用调试器(a)查看矢量字以确保其匹配(b)检查寄存器(SR、UCA0IE、UCA0IFG、UCA0CTL0W) 为了确保它们符合我的预期(c)在入口点设置一个断点、以确保程序不会执行"意外"复位。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Bruce、

    你是对的。  该器件不使用端口映射、而是仅使用 PxSEL 位。  

    Peter、

    Bruce 说过、您共享的代码看起来不错、因此问题可能出在其他地方。  您是否与 UART 代码示例进行了比较、以确保不会丢失任何内容?

    http://www.ti.com/lit/zip/slac686

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

    我发现了其中一个问题。 当我发送/接收到 PC 时、我没有在正确的位置设置启用、现在我可以向 PC 发送 OK。 但是、我似乎无法与我的4G 调制解调器与 MCU 进行通信。 我可以使用 PC 和电平转换器与4G 调制解调器进行通信。 今天、我使用了另一个外部 MCU (MSP430F249)、我可以成功地与4G 模块通信。 对我来说、这意味着4G 模块正常、电平转换器正常。 我目前正在查看每个选项下的波形。

    谢谢

    Peter

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

    Peter、

    如果您仍然遇到此问题、您能否分享您拥有的波形捕获?  谢谢!

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

    Eddie

    感谢您的持续关注。 让我尝试并充分解释我所做的工作。 我随附了2个 PDF 文件、其中显示了我的原理图。 您可以看到、我将 MSP430FR59721用作主 MCU、并且正在使用引脚1和64上的 ACA0TXD/RXD。 使用的电平转换器是4个 NPN 晶体管。 在本例中、我当前使用的是 BC337。 电阻器值如图所示。 我使用的波特率为115200波特、带 N81。 我还有一 个外部 RS232板、可改变适用于 PC 的级别。 我还有一个外部 MSP430PM64电路板、插座中有一个 MSP430F249 MCU。  

    由于我无法与4G 模块(SIM7000E)通信、我需要找出问题所在。  

    我对其进行了设置、以便将 MSPFR59721与电路断开、并通过 RS232板将其替换为 PC。 RS232板的连接连接连接到 TXD/RXD 点。 这在两个方向的通信方面都很有效。 这向我证明了4G 调制解调器没有任何问题。 它还证明了电平转换器的工作方式、因此问题似乎出在电平转换器之前。 。

    2.然后我设置 MSP430FR59721、使其通过 RS232板连接到 PC。 电平转换器未连接。 这在两个方向的通信方面都很有效。 这证明软件正常、UART 设置正常。 我不知道在这个阶段应该转向什么。

    3、按照所附的原理图、我又回到了原来的位置。 我可以在 U1 (4G 模块)的引脚10处的 CRO 上看到传输的数据、在端口符号上标记为 TXD 或在实际芯片上标记为 RXD。 但是、4G 模块的输出引脚9没有任何变化。  

    4、然后我设置 MSP430PM64板、使其与 PC 连接的方式与2类似。 以上内容。 这很好。 然后、我将其设置为通过电平转换器到达4G 调制解调器、如上面的3所示。  我在引脚10上获得了相同的数据结果、但没有来自4G 模块的数据。  

    在设置工作的情况下、涉及 RS232板。 我认为4G 模块可能需要更多的驱动器容量、但我在 MSP430FR5739上使用了相同的4G 模块、没有问题。 我将再次进行设置并发送一些波形、以便您查看。

    谢谢

    Peter e2e.ti.com/.../LTE-Schematic.pdfe2e.ti.com/.../MCUl-Schematic.pdf

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

      您好 Eddie

    在我的测试中、我插入了一个 TI 线路驱动器来代替晶体管电平转换器。 它是 SN74LVC1G125。 我使用 MSP430PM64、MSP430F249作为 MCU。 它工作正常。 我可以从4G 模块获取输出。 然后、我将 MSP430F249替换为电路板上的 MSP430FR59721。 它没有提供来自4G 模块的输出。 我已附上两个波形(F240和 FR59721)的文件。

    我在 F249上做了几个测试、我发现、一旦我没有从4 G 模块获得响应。 使用 MSP430FR59721时从未收到响应。  

    请告诉我您的想法

    谢谢

    Peter