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.

[参考译文] MSP430F5437A:通过UCBRSx更改波特率

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1083719/msp430f5437a-baud-rate-change-by-ucbrsx

部件号:MSP430F5437A
主题中讨论的其他部件: MSP430FR5992

各位专家,您好!

请让我看看MSP430的USI_UART和eUSI_UART。 波特率为9600,fBRLCK为3.2768万 kHz,因此不使用过采样(OS16 =0)。

对于USCI:请告诉我如何在UCBRSx=3 (或0~7)时找到确切的频率(波特率)?
我无法确认波特率如何根据UCBRSx的值而变化的信息。 以下链接来自Wiki,但如果您能提供它(如果它有帮助),将会很有帮助。
processors.wiki.ti.com/.../USCI_UART_Baud_Rate_Gen_Mode_Selection

对于eUSCI:如果我设置的值未在用户指南“表39-4. N的分数部分的UCBRSx设置= fBRCLK/Baud Rate? 例如,UCBRSx=0x03或0x09。
如果这不是问题,您可以告诉我们波特率如何根据UCBRSx而变化,这将很有帮助。

作为背景,我的客户有F5437A和FR5992通过UART通信,当通信大约269字节时,MSP430F5437A端似乎无法接收。 没有错误,并且确认存在接收中断不出现的情况。 此外,如果通信约为30字节,则可以进行通信而不会出现任何问题。 由于F5437A不能更改,我们尝试调整FR5992。

此致,
还不错

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

    对于5xx UART设置,可使用附加计算器...

    e2e.ti.com/.../3833.MSP430UartCalc.zip

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

    您好,zrno soli,

    感谢您的快速回复。

    我相信下面的计算器中的寄存器设置是正确的,但我们正在尝试对FR5992进行小幅调整。
    https://software-dl.ti.com/msp430/msp430_public_sw/mcu/msp430/MSP430BaudRateConverter/index.html

    [F5437A:USC]
    BRCLK:3.2768万Hz
    UCBRx=0x03
    UCBRSx =0x03

    [FR5992:eUSC]
    BRCLK=3.2768万Hz
    UCBRx=0x03
    UCBRSx=0x92
    UCBRFx=0x00

    此致,
    还不错

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

    当使用从32KHz时钟派生的9600bps通信的两个MSP430的特定组合时,它们必须使用完全相同的调制模式。

    UCBRS确定该模式。 建议值为0x92,因此fr5992正确,而f5437错误。 当然,您可以在fr5992上使用相同的错误设置,这应该使两者能够相互通信。 但是,如果您对其他设备使用相同的设置,则可能会遇到问题。

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

    David Schultz,您好!

    感谢您的回复。 我了解FR5992作为一个假设是正确的。

    但是,在这种情况下,为了方便客户,我们需要更改F992侧的设置(在这种情况下,故意设置错误)。 因此,我有两个问题,一个是从USCI (F5437A)侧的UCBRSx值中查找当前频率,另一个是了解在eUSCI (FR5992)侧调整UCBRSx值时频率的变化。

    此致,
    还不错

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

    本指南详细介绍了调制模式和发生的情况。 请参阅30.3 9

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

    我检查了“指南”。请参阅30.3 9“UART波特率生成”。 如果我的理解不正确,请更正我。

    我认为“30.3 .9.1 低频波特率生成”是适用的,因为没有使用过采样模式。 我了解UCBRSx会增加相应的位("表30-2. 调制模式示例”),并微调波特率。 但是,从“Table 30-4: UCBRSx Settings for Fractional S糠of N = fBRCLK/Baud Rate”中,当UCBRSx = 0x03时,我无法确认调整值。 例如,0.0529 0.1252 ,因此我认为计算与简单加法不匹配。0.1670  (UCBRSx = 0x01 + 0x02-> 0.0529 + 0.0715 = 0.1244 错误)

    总之,我认为这次通过调整MSP430FR5992端的UCBRSx=0x03,理论上波特率是相同的,这种想法是否正确?

    回到我原来的问题,使用“表30-4. N的分数部分的UCBRSx设置= fBRCLK/Baud Rate?


    如果您无法在UCBRSx=0x03时披露信息,如果您能告诉我们原因,这将很有帮助。 此外,我们将在UCBRSx=0x03时实际检查操作,并再次与您联系以获得结果。

    此致,
    还不错

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

    您似乎仍在忽略这一点。 如果UCBRS=3,则最后两位的比特周期将增加参考时钟的一个周期。 (32kHz)。

    当然,您可以使用任何您喜欢的调制模式,但由于从32KHz派生9600bps时出现较大错误,两个MSP430必须使用相同的模式。

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

    感谢您的回复。

    正如您所说的,当使用从3.2768万Hz开始的9600时,错误率很高,这似乎是造成此类通信错误的原因。

    如果我们要将调制模式与F5437A端的UCBRSx=0x03 (0010 1010)匹配,请在FR5992端设置UCBRSx=0x2A (0010 1010)。 如果上述设置不能解决问题,我会尝试将FR5992的BRCK提高到4MHz/8MHz/16MHz并使用9600。

    如果方法不合适,请您指出问题所在。

    此致,
    还不错

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

    您似乎已将fr5992的UCBRS的位顺序颠倒了。

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

    您好,

    我们解决了这个问题。

    我有一个问题是,假设没有使用过采样模式,是否有一个公式可以根据UCBRx和UCBRSx值计算当前的波特率? 换言之,计算从设置值向后的波特率的公式。

    此致,
    还不错