位置:51电子网 » 技术资料 » 接口电路

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

发布时间:2008/11/25 0:00:00 访问次数:555

  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)



  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)



相关IC型号

热门点击

 

推荐技术资料

耳机放大器
    为了在听音乐时不影响家人,我萌生了做一台耳机放大器的想... [详细]
版权所有:51dzw.COM
深圳服务热线:13692101218  13751165337
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!