主题中讨论的其他器件:SysConfig、 C2000WARE、 LAUNCHXL-F28P65X
您好!
是否有人成功使 F28P65x 的 UART (UART 而不是 SCI)正常工作?
UART 仅为接收到的第一个字符生成 ISR、即使将 PIEACK 寄存器清零也是如此。 因为它是新的芯片和新的外设、所以我开始认为这是 UART 硬件中的一个错误。 因此、我想知道是否有人成功使这个工具发挥作用。
Ari.
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.
您好!
是否有人成功使 F28P65x 的 UART (UART 而不是 SCI)正常工作?
UART 仅为接收到的第一个字符生成 ISR、即使将 PIEACK 寄存器清零也是如此。 因为它是新的芯片和新的外设、所以我开始认为这是 UART 硬件中的一个错误。 因此、我想知道是否有人成功使这个工具发挥作用。
Ari.
尊敬的 Ari:
您能否告诉我何时应该提供带有更多 F28P65x UART 示例的 C2000ware 新版本?
新版本的 C2000Ware 将在下一季度推出。
您是否能够在故障期间读取 UART 错误寄存器(在接收到第一个字节但它停止接收更多字节后)? 这可能是由任意数量的错误引起的、错误寄存器可以帮助解决此问题。
此致、
文斯
我使用以下命令读取 UART 寄存器、因为它们在 CCS 中不可见:
UART_ERROR = UART_getRxError (myUART0_BASE);
uart_FLAG = HWREG (myUART0_BASE + UART_O_FR);
uart_ctl = HWREG (myUART0_BASE + UART_O_CTL);
uart_im = HWREG (myUART0_BASE + UART_O_IM);
UART_RIS = HWREG (myUART0_BASE + UART_O_RIS);
uart_mis = HWREG (myUART0_BASE + UART_O_MIS);
在代码加载并运行后以及接收到第一个字符前立即读取值:
UART_ERROR = 0;
uart_FLAG = 0x197;
uart_ctl = 0x301;
uart_im = 0x20010;
UART_RIS = 0;
UART_MIS = 0;
IER = 0x81;
PIEACK = 0;
PIEIER8 = 0x10;
收到第一个字符后的值。 (产生一个中断)
寄存器之前的值无变化
接收第二个字符后的值。 (它不会产生一个中断)
更改了:
UART_FLAG = 0x1C7
UART_RIS = 0x20
uart_mis = 0x20
使用调试器重新启动 CPU 后、寄存器的值与加载和运行程序后的值相同、但 UART 不再产生中断、即使对于第一个字符也是如此。
我将使用 LAUNCHXL-F28P65X 来测试 UART。
尊敬的 Ari:
看起来发生了以下两件事之一:
1.可能1:接收未清空。
FIFO 已满、没有清空。 你是否能够在 ISR 结束时尝试从 FIFO/缓冲器中读取数据? 可能发生的情况是数据只是放在那里、从而无法接收更多数据。
2.可能情况2:TX 中断没有被清除
看起来也可能发生的情况是 TX (而非 RX)中断被保持在"等待"状态。 具体而言、UART_RIS/MIS 显示了 TX 产生了一个中断而它没有被清除。 您能尝试以下两种方法吗:
a.使用 UARTICR.TXIC 位清除 TX 中断?
b.如果(a)上述操作有效、请使用示波器查看 TX 是否实际正在发送任何数据。 听起来好像有数据在排队、但却没有发送。
此致、
文斯
Vince,
UART 示例不完整、工程没有 syscfg 文件、也不会初始化 GPIO。 然后、我在项目"adc_ex10_multiple_soc_epwm"的 syscfg 文件中添加 UART 配置。
Ari.