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.

[参考译文] MSP430F5342:USCI 自动波特检测、IrDA?

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/768655/msp430f5342-usci-auto-baud-detection-with-irda

器件型号:MSP430F5342

此项目使用带有 IrDA 的 USCI、我们想知道在这种模式下是否可以使用自动波特检测。  我不一致地看到波特率寄存器分频器(UCAxBR0)被更新、但是寄存器被更新为我们所期望的值的1/2。  在大多数情况下、波特率不会改变。  在我们的实现中、1位在整个位周期内为高电平、但0位在1/2位周期内为低电平、因此它执行我将调用的返回值为1的操作。  我想知道这是否会导致自动波特检测问题。  此外、我从未看到中断位(UCBR)被置位。  如果自动波特率检测工作正常、我们是否应该看到该位被置位?

问题1:自动波特率检测是否适用于 IrDA?

问题2:如果上面问题1的答案是肯定的、我们的实施是否有迹象表明自动波特率检测对我们无效?

谢谢你

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

    嗨、Chris、

    我不确定、但我认为传统的 IrDA 模式会导致问题。   听起来您的信号结构略有不同、您能否提供一个图?  

    《MSP430F5342 系列用户指南》的第36.3.4节介绍了自动波特率检测。  我在下面捕获了它。   

    假设您可以生成中断和分隔符序列来触发自动波特率检测、则实际波特率是从同步中测量的。 它是从第一个和最后一个下降沿测得的、然后我假设除以 8位。  

    由于 IrDA 信号非常不同、我认为这将导致问题。  它也未指定是否由于第5个边沿或它相对于停止位的位置而检测到"最后一个边沿"。  无论采用哪种方法、我都可以在这里看到 IrDA 会导致一些问题。     

    此致、

    JD

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

    JD、

    感谢您的回复和解释。  很抱歉、我没有提前回复。

    我们的波形使得1在整个位周期内为高电平。  在位周期的前半部分(多于一半)、一个零为低电平、然后在周期的剩余部分转换为高电平。  UART 正确处理该位时序。  我看到我从未设置 UCBR 位、可能是因为零位并非始终处于低电平、但我确实看到波特率寄存器得到了正确更新。  我们能够正确驱动同步字段中的位、因此波形如图所示。  我们看到的问题是、自动波特率检测功能设置的波特率将波特率设置为预期值的2倍、我们可以解决该问题。

    您是否建议在我们的案例中、我们再也没有什么可以做的了?  我们是否可能或很可能会看到不同器件之间的工作方式的变化?  鉴于您在上面所说的内容、我担心的是、即使我们在一个器件上看到了积极的结果(不包括2倍波特率)、但我们可能并不会在所有器件上看到良好的结果。  您对此有何看法?

    此致、

    Chris

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

    您好 Chris、

    [引用 user="Chris Gilbert51"]我发现我从未设置 UCBR 位、可能是因为零位并非始终处于低电平、但我确实看到波特率寄存器得到了正确更新。

    我仍然不明白您的完整信号是什么样子的。   同步之前是否收到正确的中断和定界符?   您能否提供图示或图示?   

    我觉得如果你的 UCBR 位没有被置位、那么你的中断序列就不会被识别。  如果不能识别这种情况、那么我不会期望自动波特率发生器工作。   

    [引述 user="Chris Gilbert51)]您是否建议在我们的案例中,我们再也没有什么可以做的了?  我们是否可能或很可能会看到不同器件之间的工作方式的变化?  鉴于您在上面所说的内容、我担心的是、即使我们在一个器件上看到了积极的结果(不包括2倍波特率)、但我们可能并不会在所有器件上看到良好的结果。  您对此有何看法?[/引述]

    器件之间始终存在微小的差异、但我认为这一点并不重要。  我担心的是、我们不明白为什么未设置 UCBR、以及波特率 是预期的2倍。  我们没有将原因隔离开来、因此无法预测未来的行为。   

    您的输入信号似乎可能会导致一些问题。  如果是这种情况、我建议不要使用自动波特率检测。   

    手动设置波特率是否是可能的解决方案?  

    我们能否按预期生成输入信号以测试您的固件和自动波特率检测?  我们也许可以使用 MSP430 Launchpad 来实现这一点。    

    谢谢、

    JD