以太网控制器接□模块的程序设计

时间:2008-11-25

  1.软件开发流程

  由于以太网数据帧为1518字节,而单片机PIC 16F877的内存容量只有368字节,因此就要利用以太网接 口控制器RTL8019AS内置的16KB的SRAM,用作接收缓收区,并且单片机PlC16F877仅传输和处理数据报的有用 部分。在接收处理时,不使用中断方式,而采用轮询(Polling)方式,其帧接收流程为图1所示。


图1 帧接收流程图

  (1)流程说明。

  帧接收流程完成NIC初始化后,主程序始终等待是否有数据帧到达,当收到数据帧后,判别接收帧的类型 字段,如果是0806h,转入ARP接收处理;如果是0800h就转入IP接收处理。

  如果是发给自己的ARP请求,则生成ARP应答交链路层装帧后发送,否则丢弃;若经判断数据帧为发给自己 的P数据报,则将IP数据报交IP协议处理。

  在IP协议处理中要对ICMP和rap报文进行区分,交各自的协议处理。当rap或ICMP协议有数据需要发送时, 则通知P层,IP协议将待发数据进行封装,然后交给链路层装帧发送。对其他数据报没有必要应答,仍然继 续轮询。

  以太网接口控制器RTL8019AS的接收缓冲区大约有14KB,但实际上,数据是以256字节为上限(作为一帧) 写入的,假设1页中写入1帧(256字节),的缓冲容量为58个帧。一旦发生缓冲区溢出,程序将对以太 网接口控制器RTL8019AS重置,这期间接收的数据帧将全部废弃扔掉。一旦发生溢出,使用上层协议的超时等来保证其可靠性。

  (2)初始化过程。

  ①从内置E2PROM中将必要的数据拷贝至RAM中。在Remote LO画面中,即使改变IP Address或Port号,如果不进行重置,其变更值不会生效。

  ②如果液晶显示器的端口号不是0的话,将对液晶显示器进行初始化。该过程大概需要数十毫秒的时间。

  ③对RTL8019AS的RSTDRV端进行RESET,大概需要数毫秒完成该动作。这期间,

  RTL8019AS读取93C46的CONFIG1ˉCONFIG4。

  ④PIC经8019AS从93C46中读MAC地址。

  ⑤将MAC地址写入8019AS内的寄存器中,8019AS的初始化完毕。

  ⑥检查JP2,转入普通模式或辅助程序模式。

  ⑦在普通模式的初,判别是否有取P地址(IP=0.0.0.0)的必要,如果必要,在DHCP服务器中,使用广播通信方式将DHCP协议中的DISCOVER信息送出。

  上述处理完后,进入帧接收处理状态。

  初始化过程如图2~图7所示。

                                    
        图2 将必要的数据拷贝到RAM                    图3 将8019重置,读CONFIG寄存器                          图4 取MAC地址                  

                                          
           图5 将MAC地址写入PAR寄存器                              图6 检查动作方式                                 图7 如果是DHCP的话,发出DISCOVER

  (3)协议处理程序。

  ①ARP协议处理。







  欢迎转载,信息来源维库电子市场网(www.dzsc.com


  
上一篇:PIC单片机中断模块
下一篇:典型的命令执行时间

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料