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.

[参考译文] CCS:软件 UART 的位延迟公式。

Guru**** 2587365 points
Other Parts Discussed in Thread: MSP430FR5969

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/940772/ccs-bit-delay-formula-for-software-uart

主题中讨论的其他器件:MSP430FR5969

工具/软件:Code Composer Studio

大家好,这是 Harikrishna

目前、我正在创建软件 UART、我通过使用 MSP430FR5969/5994中的 GPIO 引脚和位延迟成功创建了软件 UART。

但是、在计算要传输的位间延迟(位拆裂方法)时、我确实有点困惑。

我按照(Clock_Frequency/Baud Rate)等公式来保持连续位之间的延迟。

例如:

如果我的时钟频率= 8MHz (80000)。

波特率= 9600。

一位延迟= 8000000/9600 = 833 (正在工作)。

我在 我的代码中使用了相同数量的(_DELAY_CYCLES (800);)延迟(在两个连续位之间)、然后我的软件 UART 传输(TX)正在工作、我能够在串行监视器上查看信息。

一位延迟= 8000000/115200 = 69 (不工作)

但是,我对不同波特率(115200)使用了相同的公式,其值为69不起作用,垃圾值在串行监视器中打印。

然后、通过跟踪和错误方法手动更改该值后、UART-TX 使用115200波特率下的延迟值21 (_DELAY_CYCLES (21);)。

因此、我真的很困惑软件 UART-TX 的工作原理是什么、我应该在位之间保持确切的延迟、因为我想使用我们的控制器支持的所有可能频率来测试软件 UART-Tx。

这些是我现在工作的波特率和频率的一位周期值、但确切地说、我不知道公式

频率           波特率      一位周期值(连续位延迟)

8MHz               9600          833(工作中)

8MHz               115200        69(不工作)、21(工作)

16MHz              9600          1250 (工作)。

因此、请有人帮助我使用不同频率(1MHz、2MHz、4Mhz、8MHz、16MHz、 24MHz、48Mhz)和不同的波特率(9600、38400、115200)。 控制器的设计。

谢谢。

 

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

    建议使用计时器来执行计时控制、而不是延迟_delay_cycles (800)。

    请参阅此演示    

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

    感谢您快速重播 Gary Gao、

    是的、您说的是正确的、我们必须使用计时器来实现更好的通信、但这里的问题是 、对于我要发送的连续位、我应该遵循的确切延迟是多少、是否有任何公式来获取延迟值、 或者不同频率下不同波特率的延迟是多少。 如果您对此有任何文档、请与我们分享。

    谢谢。   

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

    你(们)好

    我恐怕那里没有公式,但也许有人有这样的形式。  

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

    [引用用户="harrikrishna paritala"]

    因此、请有人帮助我使用不同频率(1MHz、2MHz、4Mhz、8MHz、16MHz、 24MHz、48Mhz)和不同的波特率(9600、38400、115200)。 控制器的设计。

    [/报价]

    此处提供了不带计时器的 UART 的源代码...

    https://forum.43oh.com/topic/1284-software-async-serial-txrx-without-timer

    有关链接主题的最后一篇文章是我的、其中包含在1MHz MCLK 上运行的 MSP430器件的115200bps 汇编器代码行。

    但是、这与2xx 闪存系列相关、其中固定了 CPU 周期数和相关汇编器指令。 所有 FRAM 器件都具有 CPUXv2、高速缓存和等待状态、因此在没有示波器和了解一些未记录的 CPUXv2相关内容的情况下、并不是很简单(不要相信 CCS 的周期数)。 例如...

    https://e2e.ti.com/support/microcontrollers/msp430/f/166/t/412625

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

    你(们)好,Zrno

    感谢分享和评论,很棒的演示!