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.

[参考译文] 编译器/MSP430F425:MSP430F425 UART 通信

Guru**** 2578945 points
Other Parts Discussed in Thread: MSP430F425

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/602094/compiler-msp430f425-msp430f425-uart-communication

器件型号:MSP430F425

工具/软件:TI C/C++编译器

您好,

我们希望将电路板与 PC 相连。 使用了传染性光学 USB 探针(CP2102)。 问题是:在以 hexa 或字符发送数据时,即使发送 ASCII 地址,我们也会收到与发送的数据不同的另一个数据,但我们没有收到相同的发送值。 为了测试电缆、我们必须连接两根电缆(光学探头)、并且我们收到了在终端中发送的相同值。 UART 的配置如下:
      
   UCTL0 = SWRST;
    P2DIR |=(BIT4);
  P2OUT &=~(BIT4);
    
   P2SEL |= BIT5;// P2.5 UCA0RXD 输入 BIT4 + BIT4 +
 ME1 |= UTXE0 + URXE0;//启用 USART0 TXD/RXD
 UCTL0 |=字符;
 UTCTL0 |= SSEL1;
    UBR00 = 0x6D;// 0x6D;// 0x69;
    UBR10 = 0x00;// 0x00 // 0x3;
 UMCTL0 = 0x03;//
 UCTL0 &=~ SWRST;//初始化 USART 机器状态
 IE1 |= URXIE0 + UTXIE0;//启用 USART0 RX/TX 中断


#if 已定义(_MSP430__)
ISR (USART0TX、serial_TX_interrupt0)

  while (! (UTXE0和 UTXIFG0);// UTXE0

  TXBUF0 ='9'// Rx_msg;(终端显示64、对应于字母 d)
  // U0ME &=~ UTXE0;
     
   
    IFG1 &=~ UTXIFG0;

#endif

我们在这一层面上一直受到很大的阻挠,但我们不理解造成这一问题的原因。 您能帮助我们了解问题的位置吗?

谢谢。

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

    之前是否更改过任何时钟寄存器? 您是否已确认终端期望波特率为9600、并且选择了正确数量的奇偶校验(无)位和停止位(1)? 您能否确认 TXBUF0是否填充了正确的值? 预期值和接收值之间是否始终存在恒定偏移? 您是否有逻辑分析仪或示波器屏幕截图来验证传输的数据?

    此致、
    Ryan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,
    接收到的值和预期值之间没有恒定的偏移。
    是的、波特率为9600奇偶校验无并且停止1


    您有适用于 msp430f425的 UART 配置、工作正常!! 请帮我找不到 proleme
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,Afaoui,

    您的 SMCLK 频率是多少、通过在 P1.4上驱动并使用示波器进行检查来确认? 默认值为~800kHz、但应使用计时器例程将 DCO 校准为更标称值、如2MHz。 然后、您可以相应地设置 UBRx 和 UMCTLx 位。 请查看 MSP430F11x2/12x/12x2示例中的 fet120_UART 示例、以了解有关如何实现此操作的更多信息。

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

    您好,Rayan,

    我尝试使用用户指南中表中的两种类型的 horlhoge

    但同样、我没有收到32kHz 发送的值、我已经接收到1MHz 4的 A0 ->另一个值
    这是问题所在的配置

    UCTL0 |= SWRST;
    P2DIR |=(BIT4);
    P2OUT &=~(BIT4);

    P2SEL |= BIT5;// P2.5 UCA0RXD 输入 BIT4 + BIT4 +
    ME1 |= UTXE0 + URXE0;//启用 USART0 TXD/RXD
    UCTL0 |=字符;
    UTCTL0 |= SSEL1;
    UBR00 = 0x6D;//0x6D;//0x69;
    UBR10 =0x00;//0x00 //0x3;
    UMCTL0 = 0x03;//0x03
    UCTL0 &=~SWRST;//初始化 USART 状态机

     IE1 |= URXIE0 | UTXIE0;  

    char mh[10];
    #if defined (_MSP430__)
    /*接受 IEC1107消息的中断。 *
    ISR (USART0RX、serial_Rx_interrupt0)


    //while (!(IFG1&URXIFG0));

    mH[i++]= RXBUF0;

    // U0ME &=~ URXE0;

    IFG1 &=~URXIFG0;

    #endif


    /*发送 IEC1107消息的中断。 *
    #if defined (_MSP430__)
    ISR (USART0TX、serial_TX_interrupt0)


    // while (!(IFG1&UTXIFG0));//UTXE0

    TXBUF0 = 4;//Rx_msg;
    //U0ME &=~UTXE0;


    IFG1 &=~UTXIFG0;

    #endif

    如果配置有问题、请帮我!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我已经建议您评估提供的代码示例、看看您是否仍然收到意外结果。

    此致、
    Ryan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我在哪里找到这些代码!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    www.ti.com/.../slac013

    此致、
    Ryan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我尝试使用所有示例、但发送的数据没有正确接收到!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这肯定表示波特率不匹配、无论是在主机端还是与 MSP430的 UART 时钟源一起使用。 您需要对此进行进一步调查。

    此致、
    Ryan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    系统时钟配置如下
     BCSCTL1 |=(RSEL0 | RSEL1 | RSEL2);/*选择最高额定频率*/
        BCSCTL2 |= DCOR;/*选择外部时钟控制电阻器引脚*
        DCOCTL = 0xFF;/*选择最高速度。 */
     FLL_CTL0 |= XCAP10PF;/*配置负载电容器*

     SCFI0 = FLLD_1;/*频率= 1.024MHz */
        SCFQCTL = 32-1;
        FLL_CTL0 |= DCOPLUS;

    我使用波特率9600
    用户指南的 UART 配置如下:


    UCTL0 |=字符;
     UTCTL0 |= SSEL1;
        UBR00 = 0x6D;
        UBR10 = 0x00;
     UMCTL0 = 0x03;

    是这样的:"波特率或时钟 UART masp430f425都存在问题!!!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    该器件上没有 BCSCTLx 和 DCOCTL 寄存器。 您的 SMCLK 频率不是您预期的1.048MHz、我已经在之前的帖子中提供了我知道的建议。

    此致、
    Ryan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    频率配置为1MHz,您会看到正确的!!!
    如果时钟有问题,请告诉我在哪里!!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    请将 SMCLK 频率输出到引脚上并提供逻辑分析仪或示波器屏幕截图来证明 SMCLK 频率、然后我们可以查看您的 USART 波特率设置。

    此致、
    Ryan