工具/软件:Code Composer Studio
您好!
我正在 PRU 上实施以太网协议。 我已经能够发送数据包。 我使用 CSS7中的 C 编译器。 我将 TI IDK 与 AM5728搭配使用。
为了发送数据包、我将数据和 CRC 推入 TX FIFO、然后从相应的 MII 中将 TX_ENABLE 置为有效。 我不使用„32位数据推送模式”。
现在我的问题是:
当我读取 TX-FIFO 水平时、每次我使用来自 R31的16位推送命令(如果我使用8位推送、则为2)、我看到它增加了4。
该寄存器(PRUSS_MII_RT_TXFLV1)始终显示我加载到其中的字节的双倍数量。
作为接收器、我使用 Linux 笔记本电脑和 Wireshark。 数据包被完整接收。
那么、TX-FIFO 级别是如何解释的? 是半字节? 我知道 TRM 会显示其字节。 或者是否有其他误差来源?
另外、在 C 语言中使用„32位数据推送模式"会很有意思。这里的问题是如何保证在一个周期内将4字节或2字节或1字节写入 R30。
我的初始化序列是:
MII_RT.GET_PRU_REG_BIT (TXCFG).TX_CLK_DELAY = 0x6;
MII_RT.GET_PRU_REG_BIT (TXCFG).TX_START_DELAY = 0x40;
MII_RT.GET_PRU_REG_BIT (TXCFG).TX_32_MODE_EN = 0x0;
MII_RT.GET_PRU_REG_BIT (TXCFG).TX_AUTO_SEQUENCE = 0x0;
MII_RT.GET_PRU_REG_BIT (TXCFG).TX_MUX_SEL = 0x1;
MII_RT.GET_PRU_REG_BIT (TXCFG).TX_BYTE_SWAP = 0x0;
MII_RT.GET_PRU_REG_BIT (TXCFG).TX_EN_MODE = 0x0;
MII_RT.GET_PRU_REG_BIT (TXCFG).TX_AUTO_PREAMBLE = 0x1;
要推送数据、请执行以下操作:
_R30 = DATA_16 | TXMASK;
_R31 = MII_TX_PUSH16;
R31处于 MII 模式。
我使用 CSS 和 XDS100检查了硬件寄存器。
此致
赫尔曼
