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.

[参考译文] MSPM0L1306:UART0 数据不正确

Guru**** 2514445 points
Other Parts Discussed in Thread: MSPM0L1306, SYSCONFIG

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1541985/mspm0l1306-uart0-incorrect-data

器件型号:MSPM0L1306
主题: SysConfig 中讨论的其他器件

工具/软件:

团队、

代表我的客户发帖。

 ‘:在最大处理器电压 (3.3V) 下、以下序列会导致从我的 MSPM0L1306 处理器的 UART0 发出不正确的数据(在“\n"中“中插入两个额外的 1 位)。  我已经通过使用示波器解码数据来验证这一点。

下面是代码片段、任何可能导致这种情况的想法?

       //设置 ADC 转换存储器…。然后…

   DL_ADC12_enableConversions (ADC12_0_INST);

   while (!DL_UART_isTXFIFOEmpty (UART_0_INST))

   {

       ;

   }

   delay_cycles (1800);  //在 115200 波特下具有 1 个以上的字符时间

   DL_UART_Main_transmitData (UART_0_INST、‘\n');

   NVIC_EnableIRQ (ADC12_0_INST_INT_IRQN);

 

   gCheckADC = false;

   DL_ADC12_startConversion (ADC12_0_INST);

   while (gCheckADC == false){

       __ WFE ();

   }

       //… 发送有关 ADC 结果的更多字符。

ADC 中断代码:

Void ADC12_0_INST_IRQHandler ( Void )

   数量 (DL_ADC12_getPendingInterrupt (ADC12_0_INST)){

       外壳 DL_ADC12_IIDX_MEM3_RESULT_LOADED

           gCheckADC = true;

           休息 ;

       默认值

           休息 ;

   }

}

 

UART0 中断代码:

Void UART_0_INST_IRQHandler ( Void )

   无符号 字符 gEchoData;

   数量 (DL_UART_Main_getPendingInterrupt (UART_0_INST)){

       外壳 DL_UART_MAIN_IIDX_RX:

           gEchoData = DL_UART_Main_receiveData (UART_0_INST);

           IF (rxNewest++>= UInt8_MAX)

           {  rxNewest = 0;

           }

           IF (rxNewest!= rxOldest)

               rxBuffer[rxNewest]= gEchoData;

           暴露    //溢出;删除字符

               IF (rxNewest -==0)

                   rxNewest = Uint8_MAX;

           休息 ;

       默认值

           休息 ;

   }

}

 

谢谢、

Tom

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    (在‘\n'
    中插入两个额外的 1 位

    不是很明白的味道。

    您能否分享您要发送的数据以及数字分析仪编入的波形?

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

    可以、UART 正在发送“\n"(“(十(十进制 10、十六进制 0A)。  我们应该(发送 8n2)看看

    ------------------------------------

    在示波器上、我们确实可以看到

    --------------------------------

    其中 — 为 3.3V 左右、_为 0.0V 左右、均以 115200 波特持续一位时间。

    (我是这个问题的客户:-))

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

    您能否共享可重新创建问题的受限代码。 我想我需要在我这边检查一下。

    根据您的描述、发送的位从 8 位变为 9 位。

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

    上述代码应该足以重新创建问题。  务必在 SysConfig 的 SYSCTL 部分中将“低功耗策略“设置为“standby0"。“。

    今天上午、我做了更多的重现操作、如果我直接调试和运行工程、代码似乎可以正常工作、但如果我在 XDS110 调试器中“运行“代码、然后在没有首先放弃调试会话的情况下循环通电、则会得到不正确的数据。  WFE () 似乎也很关键。

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

    好的。 如果您只在调试模式下遇到问题、可以尝试进行系统复位。