Other Parts Discussed in Thread: AM6442, AM263P4
器件型号: AM6442
主题: AM263P4 中讨论的其他器件
大家好!
我正在寻找有关如何做出选择的建议 SPI 外设接收更加可靠 亮起 AM6442 打开或关闭 Cortex-R5F(内核 0) 一方 FreeRTOS 。
受影响的平台
-
AM6442 、固件在上运行 R5FSS0 内核 0
-
之前在上观察到的类似行为 AM263P4 、但要触发此问题要困难得多
问题描述
当系统主要处于空闲状态时、SPI 接收工作正常。 不过、一旦系统体验到偶数 轻负载额外 、SPI 接收变得不可靠、并且经常出现故障 FIFO 错误 (Rx 超限/TX 欠运转 — 我需要仔细检查哪个确切是显性的)。
“加载“并不意味着大量 CPU 使用—通常足以:
-
运行一些其他 FreeRTOS 任务(即使非空闲总时间很低)、
-
启用调试日志记录(CCS IDE 打印/日志记录)、
-
或通常增加任务调度活动。
亮起 AM6442 、该问题甚至可能出现在~ 5%非空闲时间 。
亮起 AM263P4 、相同的固件需要明显更高的活动才能显示类似的症状。
SPI 配置/流量特性
-
SPI 时钟: 17MHz
-
传输周期: 每一次 100ms (≈10 FPS)
-
有效载荷大小: 固定的 2012 字节
-
接口: 3 线 SPI(无专用 CS 引脚)
接收效果 中断驱动 。 我想保持这种方式(即没有轮询/前台阻塞)。
观察到的行为
-
SPI 数据已知存在于总线上。
-
在负载条件下、SPI RX 中断看起来是 服务太晚或根本不提供服务 、导致 FIFO 错误。
-
发生这种情况后、通信就会中断。
我尝试过的(没有成功)
1) 提高中断优先级
-
尝试了多个 SPI 中断优先级。
-
已确保优先级仍允许
FromISR使用 FreeRTOS API。 -
没有提高可靠性。
2) FreeRTOS 中断优先级屏蔽
-
使用以下命令在启用优先级屏蔽的情况下重建 FreeRTOS:
EN_MAX_SYSCALL_INTR_PRI_CRIT_SECTION -
测试了不同的中断优先级配置。
-
没有观察到任何改善。
3) FIQ 中断
-
将 SPI 外设中断设置为 FIQ 中断而不是 IRQ。
-
SPI 接收因该中断而完全中断。 驱动程序似乎根本没有收到任何数据。
我在问什么
我很欣赏有关的指导 如何在 AM6442 R5F 上使 SPI 外设接收稳健可靠 、具体来说:
-
在 FreeRTOS 下使用 SPI RX 中断时、这是否是 AM64x R5F 上的已知限制或常见问题?
-
是否有建议的 SPI FIFO 阈值、中断触发电平或驱动器设置 来提高对中断延迟的耐受性?
-
DMA 为了确保可靠运行、即使在这样的中等数据速率下也是如此?
-
CCS 调试打印/日志记录是否已知会引入足够的延迟或关键部分 时间敏感型 SPI RX?
-
是否有特定于 R5F 或特定于 VIM 的中断配置缺陷 这就解释了为什么不及时为 SPI ISR 提供服务?
我的目标是实现 近 100%可靠的 SPI 接收 不占用前台(中断驱动或基于 DMA 的解决方案没问题)。
如果需要、我可以提供:
-
SPI 驱动程序配置详细信息 (FIFO、阈值、驱动程序 API)、
-
中断号和优先级、
-
无论此参考设计是使用 TI MCU+ SDK SPI 驱动程序还是自定义实现。
提前感谢您提供任何见解或最佳实践建议。
