Thread 中讨论的其他器件:EK-TM4C1294XL、 TM4C123
您好!
我尝试使用 LFIO 和 RTCOSC 作为 UART0的备用时钟源、但当我打开终端时、它不显示任何内容。 这是 UART 限制、或者我做了些什么错误?
此外、如果我为 UART 使用系统时钟、我可以实现的最小时钟为5MHz、低于该 UART 似乎不再工作。
我使用 PuTTY 和 CCS V7终端、通常为9600波特率、但有时我尝试使用其他选项。 此外、UART 处于缓冲模式。
谢谢!
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.
您好!
我尝试使用 LFIO 和 RTCOSC 作为 UART0的备用时钟源、但当我打开终端时、它不显示任何内容。 这是 UART 限制、或者我做了些什么错误?
此外、如果我为 UART 使用系统时钟、我可以实现的最小时钟为5MHz、低于该 UART 似乎不再工作。
我使用 PuTTY 和 CCS V7终端、通常为9600波特率、但有时我尝试使用其他选项。 此外、UART 处于缓冲模式。
谢谢!
以节省能源。 我正在尝试使用我可以获得的最小时钟在 Tiva EK-TM4C1294XL 上实现命令行。 现在、我不需要任何特定的东西、只需让时钟工作即可。 并了解为什么 UART 在某些时钟速度或波特率上似乎不起作用。
更新了:我还发现 UART 仅在启用了 PLL 或将 PIOSC 用作备用源的情况下工作。 由于 PLL、我实现了最低5MHz、但遗憾的是、使用 PLL 时钟不会进一步下降。。。
[报价用户="Helder Sales"]只是为了节省能源。[/quot]
之前的海报指出了他(不寻常)希望将 RTC 时钟源用作 UART 的时钟。 我们(现在)被告知原因。 (考虑在未来"预先"提供此类详细信息。)
供应商的 MCU 手册应详细介绍 UART 架构以及系统和(其他)时钟的路由。 我相信、这个供应商和其他供应商不会在全频谱时钟和 UART 波特率上提供支持。 (正如您的经验所揭示的那样)
该怎么办? 您无法"位 bang "以这种方式实现 UART 功能并绕过限制供应商限制? 我记得9600波特的单独位时间为~104µS μ s、2400波特的位时间乘以4 -您的系统时钟速度较慢应该能够适应这种情况。 (通过 MCU 的计时器-由相同的系统时钟计时)
我确实认为 MCU 手册的规格部分中显示了可接受的系统时钟范围。 (背面-应显示系统时钟的最小频率。)
[报价用户="Helder Sales"]我正在尝试 使用我可以获得的最小时钟在 Tiva EK-TM4C1294XL 上实现命令行。
最小时钟可以指 MCU 循环"尽可能慢"或"尽可能少的时钟数量"。 似乎没有一个合理的点、就是 MCU 的时钟速度比设计运行速度慢... 目标应该是"尽快完成您必须做的事情、然后回到睡眠状态"。 您使用的是32位120MHz MCU、请勿尝试发现它是否可用作1980器件。
我的建议:回到思考过程的几个步骤! 将 TM4C 配置为以"正常"120MHz 运行。 设置一个中断、以便在接收到新字符时为 UART 传输提供服务。 运行命令行解析器、执行命令所需的任何操作、然后返回到睡眠状态。
提醒一下、您可以使用 TI 在 Tivaware 的 utils 包中提供的命令行解释器 API。
您好 Helder
[报价用户="Helder Sales"]使用 PLL 时,我实现了至少5MHz[/报价]
我不同意这一说法。 TM4C129x 示例上的 UART 以115.2Kbps 工作、以120MHz 作为系统时钟。
那么、如何将 UART 配置为9600bps、从而使 PLL 无法工作。
为了将 RTCOSC 或 LFIOSC 用作 UART 的时钟、是否配置了 ALTCLKCFG 寄存器? 然而、这里的一个注意事项是、当使用 ALTCLKCFG 来改变时钟时、使用替代时钟的其他外设也将受到影响。
LFIOSC 不是一个好选择、因为它具有广泛的变化范围、这会对波特率产生重大影响。
[引用用户="Amit Ashara"]
为了将 RTCOSC 或 LFIOSC 用作 UART 的时钟、是否配置了 ALTCLKCFG 寄存器? 然而、这里的一个注意事项是、当使用 ALTCLKCFG 来改变时钟时、使用替代时钟的其他外设也将受到影响。
[/报价]您好、
是的,我确实使用 SysCtlAltClkConfig()配置了 ALTCLKCFG 寄存器,并且看到了对我使用的计时器模块的影响。 是否有方法可以计算出 UART 的最佳波特率? 我怀疑问题是波特率、我不确定如何确定哪个波特率对于给定的时钟速度更好。
[报价用户="Helder Sales"]是否有方法可以计算出 UART 的最佳波特率? i[/报价]
Helder、
再说一次:不要走那条路... 您不"选择"波特率、而是将您的系统配置为与已以特定速率工作的现有器件进行通信。 如果您负责确定两端器件的速度、那么我想您应该选择硬件可以处理的最快的"标准"速率(包括收发器速度、电缆长度和其他详细信息)。 经验法则:在115200时、您通常可以安全地与 PC 通信(大多数适配器和 UART 驱动程序都是这样)、如果您在自己的两个板之间进行通信、则可能会达到921600。
所有这些都只需通过使用 TivaWare API 的一个配置行即可实现。 无需影响系统中其他所有内容的疯狂计算和奇怪的时钟设置!
UARTConfigSetExpClk (serial_base、system_clock、115200、(UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE |UART_CONFIG_PAR_NONE));
不过、如果您坚持使用较慢的时钟、则可靠速度的范围将会较小(此处解释这是浪费时间、但如果您想了解分频参数的影响、请参阅较慢的 MSP430时钟和波特率设置)。 正如 Amit 所说的、LFIOSC 波动很大、因此无法基于它执行任何异步通信。
此致、
布鲁诺
[报价用户="Helder Sales"]我也是巴西人[/quot]
我有点了解...
[报价用户="Helder Sales"]我尝试了一些不同的方法来初始化 UART,但没有成功
不确定是什么让你感到困惑、但它不会比这容易太多... 下面是一个"免费代码片段":
// Congigurações da PORta 串行 UART0 MAP_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOA);// Pinos UART0 TX e RX MAP_GPIOPinConfigure (GPIO_PA0_U0RX); MAP_GPIOPinConfigure (GPIO_PA1_U0TX); MAP_GPIOPINT_UART0 ( GPIO_system0);GPIO_TRIP_INTRIP_INTRU0_INTRIP_INTRIP_200;GPIO0_INTRIP_TRIP_INTRIP_INTRIP_TRIP_INTRIP_INTRIP_TRIP_TRIP_TRIP_
在马斯莫拉 Cervejaria、Alto da XV 享受一杯优质的酒、祝您学习愉快。
[引用 USER="Helder Sales"]、也许我会使用 Eclipse 切换代码::块以进行 C++学习。 [/报价]
正如一条注释、Code::blocks 与 Eclipse 无关、也不使用 Eclipse。 它是使用另一个独立于平台的 GUI 工具包"wxwidget"构建的。 将其视为 QT 的"竞争对手"。
我对基于 PC 的项目使用 CodeBlocks (以及默认安装的 GCC 编译器)、并首先在 PC 上验证某些 MCU 例程/算法。 此外、它在 M$-Windows 和 Linux 上可用(我正在使用后者)。
[引用用户="Amit Ashara"] UARTInt_InitUART 不是 TivaWare API ...
哎呀... 它应该!
很抱歉、我已被用于我自己的快捷方式库、因此我将其视为理所当然。
FWiw、这里是其中的相关部分、该部分调用:
MAP_SysCtlPeripheralDisable (UART0_BASE); MAP_SysCtlPeripheralReset (UART0_BASE); MAP_SysCtlPeripheralEnable (UART0_BASE); while (!SysCtlPeripheralReady (UART0_BASE)); MAP_UARTConfigSetExpClk (UART0_BASE、 sysclock、波特率(UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE |UART_CONFIG_PAR_NONE)); MAP_UARTFIFOLevelSet (UART0_BASE、UART_FIFO_TX6_8、UART_FIFO_RX2_8);//配置 FIFO 电平* MAP_UART_UART_RX_INT_INT_INT_TRS; 启用 UART0和 UART_TXT_INT_INT_INT_INT_INT_INT_INT_INT_INT_INT_INT_INT_INT_INT_TRUT/中断
UART 基址硬编码为0、便于理解...