ARM开发板载CS8900的双工问题

使用CS8900 NIC芯片的2410板子在尝试作为下载专用机时遇到速率过低的问题。经过排查发现,该芯片默认处于半双工状态,并且在与100M自协商设备对接时会自动变为半双工,导致速率受限。为了解决此问题,需要将CS8900强制设置为10BASE_T全双工模式,但家用路由器通常不支持这一设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

很多2410的板子都用的cs8900这个nic芯片。想来一来是成本低,另一个恐怕还是原始的SMDK用了这颗芯片。
本来这个芯片好坏其实也没啥关系,只是前两天突发奇想想用开发板做下载专用机。结果不试不知道,一试吓一跳,这速率低的太吓人了,只有20来k,远远低于10M的理论值。赶紧ifconfig看一下,collision多到吓人。collision这玩意只会在半双工时才会有。也就是说这颗芯片一直都工作在半双工状态下。
老大不爽,看了一下手册,强行设置为全双工,一看,还是不行。collision倒是没有了,错包一大堆,感情是对端半双工了。
拍了拍脑袋,老糊涂了!偶们用的小路由器都是10/100M自协商的。而10M这种连接速率本身就是不支持自协商,跟自协商对接,自协商端自动会变成10M半双工。要问为什么是这样?802.3定义的!没办法。。
回顾一下跟自协商端的交互过程: 10MbaseT为了检测链接是定时发送NLP的,那么100MbaseTx收到NLP就会马上变成10M半双工。也就是说,不管你设置CS8900的强制全双工(reg 19,FDX)或者自动,只要是跟100M自协商设备对接,对端就会变成半双工。如果关掉CS8900的NLP(Reg 19,DisableLT)发送,对端如果是100M自协商,那么链路根本UP不起来,流量则会完全不通。
如何才能解决这个问题?设置Cs8900为全双工(完整的说,要强制设置为10 BASE_T,然后设置FDX)。对端也必须设置为10M/FDX。遗憾的是大部分的家用路由器都没这个速率设置的手段,只得放弃。
以太网MSP430开发板硬件特点: 1.使用 MSP430F149主MCU, 2K RAM, 60kflash, 48个I/O pin, 双uart 口, 8路12位A/D转换 2.TCP/IP接口采用 工业级CS8900芯片 全面支持uIP协议栈 3.带有USB通信接口,适合使用笔记本的同学进行调试。 4.主电路板带: uart 口DB9输出座; I2C EEPROM存储器AT24C256一块 也可以选择 搭配擦除寿命1亿次的同接口铁电存储器; 3.3V稳压集成电路采用高稳定度AS1117-3.3 数据口P4和所有多余I/O口引出,便于扩展 配有高频(HF)和低频(LF)两种晶振,可方便选择 各单元电路间有良好去耦合措施,采用大面积接地技术,电磁兼容性能良好 5.具有板硬件实时钟PCF8563,并搭配电池,满足特定应用需要。 如截图所示: CS8900A的说明: CS8900CS8900A芯片是Cirrus Logic公司生产的一种局域网处理芯片,在嵌入式领域中使用非常常见。它的封装是100-pin TQFP,内部集成了在片RAM、10BASE-T收发滤波器,并且提供8位和16位两种接口,一般在单片机中,使用了CS8900的8位接口模式。可选择1:1.414YL18-1064S或1:2.5 YL18-1080S 变压比例的变压器。 CS8900A网卡工作原理: CS8900A与ARM芯片按照16位方式连接,网卡芯片复位后默认工作方式为I/O连接,基址是300H。 最主要的工作寄存器(为16位),CS8900支持8位模式,当读或写16位数据时,低位字节对应偶地址,高位字节对应奇地址。例如,向TXCMD中写入00C0H,则可将00h写入305H,将C0H写入304H。 附件内容截图:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值