微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 一种嵌入式网络接口设计

一种嵌入式网络接口设计

时间:03-22 来源:互联网 点击:

之前先关闭单片机的中断输入, 对RESET 引脚给定一个持续的低电平复位信号, 然后对相应的寄存器进行设置。设置完成所有需要的寄存器后, 判断以太网状态中的时钟启动标志位是否置位, 然后开中断。

系统初始化后进入主程序循环, 包括单片机的控制作用和网络数据传输。对于以太网传输部分来说。主要有两个作用:一是对要发送的数据按照以太网数据帧格式进行封装并发送; 二是对接收的以太网数据帧进行解包, 供应用程序使用。

3.3 ENC28J60 发送数据包

在进行数据包发送或接收时, 要先对写缓冲存储器(WriteBuffer Memory, WBM)命令掌握。WBM允许主控制器将字节写入8KB 发送和接收缓冲存储器。如果ECON2 寄存器中的AUTOINC 位置1, 那么在写完每个字节的最后一位之后,EWRPT 指针将会自动地递增指向下一个地址(当前地址加1)。

如果写入地址1FFF 且AUTOINC 置1, 则写指针加1 指向0000h.将CS 引脚拉为低电平启动WBM命令。然后将WBM操作码及随后的5 位常量1Ah 送入ENC28J60.在发送WBM命令和常量之后, 由EWRPT 指向的存储器中的数据将移入ENC28J60, 首先移入最高位。在接收到8 个数据位后, 如果AUTOINC 置1, 写指针将自动递增。主控制器可以继续在SCK引脚提供时种信号、在SI 引脚发送数据同时保持/CS 为低电平, 从而可以连续写入存储器。当AUTOINC 被使能时, 以该方式就可以连续地向缓冲存储器写入字节而无需多余的SPI命令。拉高CS 引脚电平可结束WBM命令。在WBM操作期间,SO 引脚一直为高阻态, WBM操作时序, 请参见图3.

ENC28J60 内的MAC 在发送时会自动生成前导符和帧起始定界符。此外, MAC 可根据配置生成填充(如果需要)和CRC字段。主控制器必须生成所有其他帧字段, 并将它们写入缓冲存储器, 以待发送。此外, ENC28J60 还要求在待发送的数据包前添加一个包控制字节。主控制器应:1.正确编程ETXST 指针,使之指向存储器中未用的单元。它将指向包控制字节, 在本设计方案中, 指针应编程为0120h; 2.使用WBM SPI 命令写入包控制字节、目标地址、源MAC 地址、类型/ 长度和数据有效负载; 3.正确编程ETXND 指针。它应指向数据有效负载的最后一个字节, 在本设计方案中, 指针应编程为0156h; 4.将EIR.TXIF位清零、将EIE.TXIE 位和EIE.INTIE 位置1 允许在发送完成后产生中断(如果需要); 5.将ECON1.TXRTS 位置1 开始发送。如果在TXRTS 位置1 时正在进行DMA 操作, ENC28J60 会等待DMA 操作完成再发送。这种等待是必需的, 因为DMA 和发送引擎共享同一个存储器访问端口。同样如果在TXRTS 已置1后, ECON1 中DMAST 位才置1, DMA 在TXRTS 位清零前不会采取任何动作。如果正在进行发送, 不应通过SPI 读取或写入任何待发送的字节。主控制器将TXRTS 位清零可取消发送。如果数据包发送完成或因错误取消而中止发送, ECON1.TXRTS位会被清零, 一个7 字节的发送状态向量将被写入由ETXND +1 指向的单元, EIR.TXIF 会被置1 并产生中断(如果允许)。要验证数据包是否成功发送, 应读取ESTAT.TXABRT 位。如果该位置1, 主控制器在查询发送状态向量的各个字段外, 还应查询ESTAT.LATECOL 位, 以确定失败的原因。下面给出写数据包的源代码:

3.3 ENC28J60 接收数据包

假设接收缓冲器已完成初始化, MAC 已正确配置而且接收过滤器已配置为接收以太网数据包, 主控制器应该:1.如果需要在接收到数据包时产生一个中断, 就要将EIE.PKTIE 位和EIE.INTIE位置1; 2. 如果需要在由于缓冲空间不足导致数据包丢失时产生一个中断, 就要将EIR.RXERIF 位清零, 并将EIE.RXERIE位和EIE.INTIE 位置1; 3. 通过将ECON1.RXEN 位置1使能接收。在将RXEN 置1 后, 将不能修改双工模式和接收缓冲器起始和结束指针。此外, 要阻止不期望接收的数据包, 在更改接收过滤器配置寄存器(ERXFCON) 和MAC 地址前建议将RXEN 清零。在使能接收后, 没有过滤掉的数据包将写入循环接收缓冲器。任何不符合过滤条件的数据包将被丢弃, 但主控制器无法识别一个数据包已被丢弃。当接收到一个数据包并将其完整写入缓冲器时, EPKTCNT 寄存器将递增, EIR.PKTIF 位将置1, 并产生一个中断(如果允许), 同时硬件写指针ERXWRPT 自动递增。

4 结束语

本文作者的创新点: 通过ENC28J60 芯片所设计的嵌入式网络接口可以在多种环境中应用, 能按需要进行配置来完成系统功能,并且在成本、体积、功耗、灵活性等方面具有明显的优势,能为智能化仪器与设备、信息家电等开拓新的应用前景。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top