工具/软件:Code Composer Studio
大家好,这是 Harikrishna
目前、我正在创建软件 UART、我通过使用 GPIO 引脚和 MSP430FR5969/5994中的位延迟成功创建了软件 UART。(我们可以使用计时器来实现延迟、但在这里、我检查的是是否从控制器 Tx 发送单个字符)
但是、在计算要传输的位间延迟(位拆裂方法)时、我确实有点困惑。
我按照(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。
因此、请有人帮助我使用不同频率(1MHz、2MHz、4Mhz、8MHz、16MHz、 24MHz、48Mhz)和不同的波特率(9600、38400、115200)。 控制器的设计。
谢谢。