Other Parts Discussed in Thread: TMS320F28388S, C2000WARE
器件型号: TMS320F28388S
主题: C2000WARE 中讨论的其他器件
您好:
我正在使用 TMS320F28388S 微控制器模块上的 SCI-A 模块开发一个通信层。 我们处理一个数据帧可达的自定义串行协议 70 字节 。 由于高中断频率和上下文切换、我们看到了显著的 CPU 开销。
当前实施和问题:
-
RX 设置: SCI-A RX FIFO 配置为以 A 的频率触发中断 单字电平 (Rx FIFO = 1)。
-
RX 逻辑: RX ISR 使用
SCI_readCharNonBlocking()并对其进行处理来读取单个字符。 -
TX 逻辑: TX ISR 轮询 TX FIFO 状态、并使用一次写入一个字节
SCI_writeCharNonBlocking()。 -
问题: 对于 70 字节帧、恒定中断服务会显著影响系统的实时控制环路。
所需目标:使用 DMA 消除 CPU 开销
我想将整个 70 字节传输过程卸载到 DMA 控制器。
我的假设和验证请求:
-
Rx DMA 触发条件约束: 根据我器件的 TRM、我假设是 SCI-A RX FIFO 级别 是 不可用作直接硬件外设触发源 DMA 模块相同。 这意味着标准的 DMA 块传输(仅在一个完整帧后触发一次)不可行。 此假设是否适用于我的器件、或者是否有无文档记载的方法将 SCI RX 状态(例如电平阈值或空闲线)配置为 DMA 触发器?
-
TX DMA 解决方案: 我认为 SCI TX 空状态是一种可行的 DMA 触发器。 将 DMA 从 RAM 发送 70 字节到 SCI TX 寄存器并使用 TX FIFO 作为触发器、建议的最低开销方法是什么?
-
替代 RX 解决方案(如果 DMA 不可行): 鉴于这些限制、RX 侧是否有任何低开销方法?
-
增加 RX FIFO 中断级别(例如,增加到 RX FIFO = 16)是否可以显著减少开销?
-
是否有推荐的外设到外设触发机制来模拟 SCI RX 的 DMA 触发?
-
如果能就尽可能提高高频、多字节 SCI 通信的传输效率提供任何指导、将不胜感激。
谢谢您、
Ninad Lomte