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.

AM4376的网口数据接收问题

Other Parts Discussed in Thread: AM4376

各位大大好:

        我有个项目需要用到AM4376 GEMAC_CPSW的两个网口,电路板是自己做的,系统平台ucos,代码参考了AM43xx_StarterWare,但有修改,计划移植lwip协议栈,硬件接口上是按照GMII方式接的,目前遇到的问题是网口初始化完成后,数据可以正常发送(通过WireShark可以抓到),并能正常进入3PGSWTXINT0中断,但是数据接收有问题了......

        目前的现象是,每次使用电脑ping电路板时能看到CPSW_STATS下的Good Rx Frames和Broadcast Rx Frames的数据递增,但是不能进入3PGSWRXINT0中断,3PGSWTXIHR0和3GPSWMISC0的中断使能没开,检查了相关寄存器也没发现问题啊,同时没有找到其他资料,所以不知道问题可能出在哪里,各位路过的大神不知道能不能给点建议呢?

  • 可以参考TI 提供的AM4376 RTOS系统中的相关内容
  • 请看一下下面的寄存器有没有使能?Cn_RX_STAT状态寄存器是多少?

    The following steps will enable the receive packet completion interrupt.
    • Enable the required channel interrupts of the DMA engine by setting 1 to the appropriate bit in the RX_INTMASK_SET register.
    • The receive completion interrupt(s) to be routed to RX_PULSE is selected by setting one or more bits in the receive interrupt enable register Cn_RX_EN. The masked interrupt status can be read in the Receive Interrupt Masked Interrupt Status (Cn_RX_STAT) register.
  • 你好,非常感谢你给的建议!
    我之前有下载了官网提供的RTOS部分代码,只发现uia下的com_ti_uia_example_37.rpojectspec的工程名字是stairstepEthernet,但是很遗憾这个工程用CCS V9打不开,提示是“Device cannot be 'null' and must be a vaild and supported device”,不知道是我操作不对还是其他原因;
    我尝试找到了对应的cfg文件,发现这个应该是EVM6472的工程,并且并没有相关内容,所以我怀疑官方的RTOS中将这部分内容编译成了库文件,这边并不能看到代码,而我们目前使用的是IAR,所以用不了现成的库文件......
    不知道还有没有其他建议?
  • 你好,非常感谢您的回复!
    我检查了一下,C0_RX_EN已经设置,目前只用了C0,C1和C2没有配置,RX_INTMASK_SET也已经设置了,但是C0_RX_STAT读出来的位貌似不对,不知道我那个寄存器设置的有问题,以下是我读出来的部分寄存器的值,麻烦你能帮我看看那个没有设置好么?
    谢谢~

    Register ------------------------------------------------Value
    CPSW_ALE_CTRL ---------------------------0x80000000
    CPSW_ALE_PRESCALE -------------------0x0001E848
    CPSW_ALE_PORTCTL_0 -----------------0x00000003
    CPSW_ALE_PORTCTL_1 -----------------0x00000003
    CPSW_TX_CTRL---------------------------- 0x00000001
    CPSW_TX_TEARDOWN ------------------0x00000000
    CPSW_RX_IDVER-------------------------- 0x00180109
    CPSW_RX_CTRL--------------------------- 0x00000001
    CPSW_RX_TEARDOWN -----------------0x00000000
    CPSW_DMACTRL-------------------------- 0x00000000
    CPSW_DMASTS ----------------------------0x80000000
    CPSW_EMCTRL ----------------------------0x00000000
    CPSW_TX_INTSTAT_RAW --------------0x00000000
    CPSW_TX_INTSTAT_MASKED --------0x00000000
    CPSW_TX_INTMASK_SET --------------0x00000003
    CPSW_TX_INTMASK_CLR --------------0x00000003
    CPSW_CPDMA_IN_VECTOR -----------0x00000000
    CPSW_CPDMA_EOI_VECTOR --------0x00000002
    CPSW_RX_INTSTAT_RAW-------------- 0x00000000
    CPSW_RX_INTSTAT_MASKED --------0x00000000
    CPSW_RX_INTMASK_SET --------------0x000000FF
    CPSW_RX_INTMASK_CLR --------------0x000000FF
    CPSW_SL_IDVER --------------------------0x00170113
    CPSW_SL_MACCTRL --------------------0x00000020
    CPSW_SL_MACSTS -----------------------0x80000000
    CPSW_STATERAM_RX0_HDP --------0x8805DD80
    CPSW_STATERAM_RX1_HDP --------0x8805DF60
    CPSW_STATERAM_RX0_CP ----------0x00000000
    CPSW_STATERAM_RX1_CP ----------0x00000000
    CPSW_WR_CTRL -------------------------0x0000000A
    CPSW_WR_INT_CTRL------------------- 0x00000000
    CPSW_WR_C0_RX_THRESH_EN ---0x00000000
    CPSW_WR_C0_RX_EN ------------------0x000000FF
    CPSW_WR_C0_TX_EN ------------------0x000000FF
    CPSW_WR_C0_MISC_EN---------------- 0x00000000
    CPSW_WR_C0_RX_THRESH_STAT---0x00000000
    CPSW_WR_C0_RX_STAT ---------------0x00000000
    CPSW_WR_C0_TX_STAT ---------------0x00000000
    CPSW_WR_C0_MISC_STAT -----------0x00000000
    CPSW_WR_RGMII_CTL -----------------0x00000000

  • RTOS这部分底层代码没研究,但是RTOS大部分代码都是有源码的,建议详细看看