Other Parts Discussed in Thread: C2000WARE
器件型号: TMS320F28388D
主题: C2000WARE 中讨论的其他器件
与 FSI 菊花链应用手册类似、我使用 F28388D 作为 FSI 引线、使用 F280039C 作为菊花链配置中的 FSI 节点。
我在两个 F28388D CPU1/CPU2 内核上平均分配了 8 个 FSI RX 通道(每个内核管理 4 个 FSI RX)。 我成功完成了 FSI RX DMA c2000ware 示例、该示例使用 2 个 DMA 通道用于 FSI RX、1 个通道用于 TAGUDATA、1 个通道用于数据。 每个 FSI RX 通道使用 2 个 DMA 通道、我遇到了每个 F28388D CPU 的 DMA 通道数量(每个 CPU 6 个通道)的限制、只能处理 3 个 FSI RX 通道、而不是 4 个通道。
是否可以使用单一 DMA 通道通过 FSI RX 触发器的单次突发来移动传入的 FSI RX 数据包 TAGUDATA(1 个字)和数据(16 个字)?
我的基本问题是 FSIRX_TAGUDATA 寄存器与存储器中的 FSIRX_DATA 不相邻。 C2000ware 示例通过使用两个 DMA 通道解决了这一问题、一个用于 TAGUDATA、一个用于数据。 但因为只有 6 个 DMA 通道、所以这将您限制为 3 个 FSI RX。
看看 FSI RX 存储器映射、表 32-40。 F28388D TRM 的 FSI_RX_REGS 寄存器、
RX_FRAME_TAG_UDATA @ 7h 偏移
RX_BUF_BASE_y @ 40h +公式偏移
要尝试将一切从 RX_FRAME_TAG_UDATA 一直移动到 RX_BUF_BASE_y 的末尾、需要移动 72 个 uint16 字、这超出了 DMA 功能 — 即使在单个突发中使用 32 位字、突发内的 num 也限制为 32、即 64 个 uint16。 (不确定这是否起作用,因为 28388D TRM 在表 11-2 中仍显示每次突发最多 32 个 16 位字。 BURSTSIZE 和 DATASIZE 行为。
单个 DMA 是否有权变措施来将 RX_FRAME_TAG_UDATA @ 7h(一个字)移动、然后将 SOURCE_addr 跳转到 RX_BUF_BASE_y @ 40h (16 个字、burst_step = 1)、以便从单个 FSI RX 触发器一次突发总共移动 17 个字?
或者、在 FSI RX TAGUDATA 和 DATA 相邻的存储器中设置一个空间、那么 DMA source_addr 可直接递增 1(BURST_STEP 为 1 个地址)?
此致、
Jesse