//发送数据包 //参数:datas为要发送的数据缓冲区(以字节为单位),length为要发送的数据长度(两个字节)。 void DM9000_sendPcket(uint8 *datas, uint32 length) { uint32 len,i; uint8 tmp; Printf("发送数据\r\n"); 开始 初始化 包长不小于60字节。
设置源端物理地 将数据依次写入MWCMD寄存器 将封包长度写入TXPLL和TXPLH中 启动发送 等待发送结束 发送成功。 返回 设定长度为60字节 查错重发 N Y N 最多发重发5次。
dm9000_reg_write(DM9000_IMR,0x80); //先禁止网卡中断,防止在发送数据时被中断干扰 len = length; //把发送长度写入
/*这两句是将要发送数据的长度告诉DM9000的寄存器*/ dm9000_reg_write(DM9000_TXPLH, (len>>8) & 0x0ff); dm9000_reg_write(DM9000_TXPLL, len & 0x0ff);
DM_ADD = DM9000_MWCMD;
//将要发送的数据写到DM9000的内部SRAM中的写FIFO中 for(i=0; i<len; i+=2)
//16 bit mode { udelay(2);
DM_CMD = datas[i] | (datas[i+1]<<8); } dm9000_reg_write(DM9000_TCR, 0x01); //发送数据到以太网上。
while(1)//等待数据发送完成
追答这是开发性技术问题 回答完了 你会了 别人也会了 回答的人饭碗没了
本文如未解决您的问题请添加抖音号:51dongshi(抖音搜索懂视),直接咨询即可。