Part Number:AM6442
硬件环境:
CPSW MAC ENT PORT1 连接 83826E,方式为RMII SLAVE MODE,外部晶振50M连接 AM6442的AA5引脚(即RMII_MHZ_50_CLK) 以及 83826的引脚9.
基本测试情况:
通过读取PHY寄存器0x468,可以确定PHY运行与RMII SLAVE MODE, 读取寄存器0x10,确定PHY处于100M 全双工 链接状态。
遇到的问题:
通过CPSW CPPI 转发数据到 ENT PORT1进行以太网帧数据传输,使用示波器抓取 PHY芯片引脚 23(TXEN) PHY芯片引脚 24(TXD0) PHY芯片引脚 25(TXD1) ,可以看到以太网帧 前导码、目的地址、源地址、随意写的数据、CRC (共82字节),TXEN脉宽为65.6us ,即速度是10Mbps。
我猜测是ENT PORT1 发送速度仅有10M。 但是我却找不到合适的配置,令其修改为100M。
目前CPSW与速度相关的配置如下:(是否还存在其余配置 可以设置端口速度?)
令 寄存器(0x08022330) bit7 为 0:10/100 mode ; bit17 为 0:不强制进入千兆
Shine:
请问运行的是哪个demo? 是哪个版本的SDK?
,
s s:
你好,我是基于C:\ti\mcu_plus_sdk_am64x_09_00_00_31\examples\networking\enet_layer2_cpsw\am64x-evm 该工程进行借鉴的,目前RGMII模式已经基于评估板EVM 调通。 但是项目和硬件板子中,需要的是RMII模式,于是我修改部分配置,用于适配RMII模式。
以下是我做的修改:
①
SOC_controlModuleUnlockMMR(SOC_DOMAIN_ID_MAIN, 1); //偏移量为4044,因此它落在分区1 *(vuint32_t*)(0x43004044) = 1; //cpsw0-port1 2选择RGMII 1选择RMII
*(vuint32_t*)(0x43004048) = 1; //cpsw0-port2 2选择RGMII 1选择RMII
SOC_controlModuleLockMMR(SOC_DOMAIN_ID_MAIN, 1);
②令 寄存器(0x08022330) bit7 为 0:10/100 mode ; bit17 为 0:不强制进入千兆
③配置RMII引脚:
,
Shine:
感谢您对TI产品的关注!由于问题比较复杂,已将您的问题发布在E2E英文技术论坛上,由资深的英文论坛工程师为您提供帮助。 您也可以点击下帖链接了解进展:https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1329336/am6442-configure-ent1-port-to-100mbps
,
Shine:
能否把编译的log分享一下?请看下面e2e工程师的回复。
Can you ask customer to build example in debug mode and share UART logs ?
,
s s:
你好,我这边并无日志能够提供,原因如下:我是基于C:\ti\mcu_plus_sdk_am64x_09_00_00_31\examples\networking\enet_layer2_cpsw\am64x-evm 该工程,摘抄了里边所有相关的寄存器配置 以及 DMA配置,结合手册,完成一份不使用 syscfg生成 的 CPSW驱动代码, 该驱动代码在 EVM板子上,已验证了RGMII 千兆 收发的验证; 目前是想将 驱动代码配置成RMII模式,结果发现速度为10Mbps,无法设置为100Mbps的问题。 由于是自己写的驱动代码,并无日志提供。
但是我可以提供出现问题(只有10M)时,CPSW 相关统计计数 的寄存器值:
/*CPPI 收到的正常帧数*/ *(int*)0x0803a000 = 958
/*CPPI 收到的广播帧数*/ *(int*)0x0803a004 = 958
/*CPPI 接收和发送65-127帧的数*/ *(int*)0x0803a06c = 958
/*CPPI 接收和传输的总字节数*/ *(int*)(0x0803a080) = 70892
/*port 1 收到的分片帧帧数*/ *(int*)0x0803a224 = 741
/*port 1 发送的好帧数*/ *(int*)0x0803a234 = 958
/*port 1 发送的好帧广播数*/ *(int*)0x0803a238 = 958
/*port 1 发送所有好帧的字节数*/ *(int*)0x0803a264 = 70892
/*ENET TX优先级0包计数*/ *(int*)0x0803a380 = 958
/*ENET TX优先级0 字节总数*/ *(int*)0x0803a3a0 = 70892
填写的以太网帧数据如下:(除去CRC 和 前导码,为70字节)
tx_buff[0][0] = 0xff; tx_buff[0][1] = 0xff; tx_buff[0][2] = 0xff; tx_buff[0][3] = 0xff; tx_buff[0][4] = 0xff; tx_buff[0][5] = 0xff; memcpy(&tx_buff[0][6],macAddr,6);
memset(&tx_buff[0][12],1,70-12);
…
,
s s:
,
s s:
你好,非常感谢您的回答。 但是为避免 沟通存在遗漏,我重述一下最主要的问题:如何令RMII工作在 100M模式。
以下是TRM截图:我找不到合适操作令RMII工作于100M模式。
,
s s:
我将PHY配置成10M后, PC端电脑可以抓取到发送的帧了:确实是我在MCU发送的以太网帧,这里应该可以表名PHY的配置应该没问题,问题仅在于CPSW 的RMII为什么工作在 10M模式。