说明 SCI 模块中不同类型的环回。
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.
我们主要可以使用 SCI 模块执行两种不同类型的环回。
1. 使用 SCIGCR1的第16位环回(环回)
2. 使用 IODFTCTR 寄存器(IODFTENA & LPB ENA)环回
主要区别在于使用第16位 SCIGCR1的环回类似于安全环回。 这意味着、即使 SCI 与其他 SCI 器件连接、也可以在不影响实际通信的情况下完成此回送。
1. 使用 SCIGCR1的第16位进行环回(环回):
在此环回中、SCITX 内部通过 SCIRX 连接、但外部 SCITX 引脚将处于逻辑高电平、SCIRX 将处于开路阻抗、直到该环回再次禁用。
因此、在该环回测试完成之前、另一端 SCI 器件接收引脚将只读取逻辑高电平。 其他终端设备无法向该设备发送任何数据、因为其 SCIRX 引脚处于高阻抗模式。
使用 IODFTCTR 寄存器(IODFTENA & LPB ENA)环回:
此环回进一步分为两个子环回:
数字环回和模拟环回。
这两个环回 模式之间的主要区别在于、模拟环回模式下可测试通过 I/O 的完整通信路径、而在数字环回模式下、I/O 缓冲器不包括在此路径中。 这意味着在数字环回中、将禁用 I/O 缓冲器、因此不会向输出或 Tx 线路传输数据。 而在模拟环回中、将测试完整路径、因此也可以在 Tx 线路上看到数据、并且此数据会自动环回到 Rx 线路。
建议仅在连接到其他 SCI 器件之前执行此环回。 我的意思是、在通信过程中不鼓励进行此类回送。 因为尤其是 此测试中的模拟环回模式会受到 另一个 器件的影响或也会影响另一个器件。 我的意思是环回测试数据会传递到另一个 SCI 器件、否则环回数据会受其他终端 SCI 器件的影响。
为了更好地理解、我使用不同的组合进行了一些测试、结果如下:
1.仅启用 IODFTCTRL 模拟环回:
正如您在上面的代码中所看到的、我刚刚禁用了 SCIGCR1环回、并且只启用了 IODFTCTRL 模拟环回。
在此测试中、我可以看到 RD 寄存器中的数据、这意味着数据被回送、而且我还在串行终端上接收到数据、这意味着在此模式下 I/O 缓冲区未被禁用。
2. 仅启用 IODFTCTRL 数字环回:
如上面的代码所示、我刚刚禁用了 SCIGCR1环回、而只启用了 IODFTCTRL 数字环回。
在此测试中、我 可以 看到 RD 寄存器中的数据、这意味着数据被回送 、但 我没有在串行终端上接收到任何数据、这意味着 I/O 缓冲区被禁用、回送仅发生在内部。
3. 仅使用 SCIGCR1的第16位进行环回:
如上面的代码所示、我刚刚 启用了 SCIGCR1环回并 禁用了 IODFTCTRL 环回。
在此测试中、我还 可以 看到 RD 寄存器中的数据、这意味着数据被 回送、但我没有在串行终端上收到任何数据、这意味着此回送也发生在内部。 该环回与数字环回之间的主要区别在于、在该环回中、Tx 引脚输出将变为高电平、Rx 引脚将处于开漏状态、这不会发生在数字环回中、在数字环回中、只有 I/O 缓冲器将被禁用。
4、 使用第16位 SCIGCR1和 IODFTCTRL 模拟环回的环回:
正如您在上面的代码中看到 的、我启用了 SCIGCR1环回以及 IODFTCTRL 模拟环回。
在此测试中、我还 可以 看到 RD 寄存器中的数据、这意味着数据被回送 、但 在串行终端上没有接收到任何数据。 这与 SCIGCR1环回的行为类似、因为该环回将在内部连接 Tx 和 Rx 引脚、Tx 引脚将处于高电平、Rx 引脚将处于高阻抗状态。
我附加用于本次测试的工程: