以太网控制器接□模块的程序设计
发布时间: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)
上一篇:PCB的器件布局
上一篇:以太网控制器接□模块的电路设计