工具与软件:
尝试使用 MSPM0G1507处理器的 UART0模块的 IrDA 模式进行中断驱动的半双工 IrDA 链路
禁用 RX 时会遇到问题、当重新启用 RX 时、我们捕获最后几个移出的字符。
我们使用的波特率为115200。
我们为 UART0模块使用40 MHz ULPCK 源。
我们正在使用 CLKDIV2寄存器、我们已按照手册将其设置为1。
我们的目标是:
1.开始传输后、我们使用 DMA 来发送所有数据。 在传输开始之前、使用禁用 RX
以下步骤如 MSPM0手册中所述:
2.一旦 DMA 完成(等待 DMA_DONE_TX 中断)、我们还等待 UART 忙是清除 STAT 寄存器、然后重新启用 UART0外设上的 RX。
3.我们已经尝试等待 EOT 中断、但是该中断在未禁用 UART 模块的情况下似乎无法触发(是否缺少某些内容?) 是否有 IrDA 的勘误表?
4.我们观察到 RX 确实起作用,我们能够接收到软件的命令。
5.但 TX 不起作用。
6.我们的 IrDA 设置如下:
- IRRXPL 寄存器设置为1h
- IRTXPL 寄存器设置为9h 以设置脉冲长度
- IRTXCLK 寄存器设置为1 (使用波特率时钟)
-启用 IR / EN。
有关我们正在使用的 IrDA 部分、请访问: https://www.vishay.com/docs/82633/tfbs4711.pdf
在我们的 IO_MUX 中、我们不会按照 Vishay 器件将 UART_RX 线路反相。 它对 TX 数据进行反转和镜像。 我们的理解是、将 IRRXPL 寄存器设置为1h 即可实现。 从我们可以看到的结果来看、结果确实如此。 (如果我错了、请更正我)。
我们认为我们从 IrDA 部件的 TX 收到了伪读 RX 线路。
UART 中的 FIFO 级别配置为 UART_RXIFLSEL 为7h >=1 1个可用条目。 这会触发 UART RX 中断、该中断将字节从 UART_RX 读入应用程序的存储器空间。
TX FIFO 7h、TX FIFO >= 1个空闲条目、用于触发我们的 DMA 将数据移出到 UART_TX 寄存器中。
我们找到了该处理器使用 IrDA 的示例项目、但它们不适用于我们的半双工操作。