本文使用通用型单片机C8051F020、以太网控制CP2200和经过自行裁剪的TCP/IP协议栈,构成了嵌入式系统的以太网接口。
1. 微控制器C8051F020
C8051F020[2]是美国Silabs公司推出的C8051F系列单片机中的通用型单片机。C8051系列是片上系统(SOC)单片机。片上系统(SOC)是把计算机常用的一些数字和模拟外设等全部都做在一块芯片上,使它成为一个完整的模拟数据采集与控制系统,这使得以8051为内核的单片机上了一个新的台阶。
C8051F020是完全集成的混合信号系统级MCU芯片,100脚TQFP(Thin Quad Flat Packeage)封装,MCU可在工业温度范围(-45℃到+85℃)内工作,具有高速、流水线结构,与8051的微控制器内核CIP-51兼容。
2. 以太网控制器CP2200【1】
CP2200是Silabs(Silicon Laboratories)公司于近期推出的一款针对工业控制领域的以太网控制器,集成了IEEE 802.3以太网媒体访问控制器(MAC)、10Base-T物理层(PHY)和8KB非易失性FLASH存储器的单芯片以太网控制[1]器。8位并行总线接口支持Intel和Motorola总线方式,可以使用复用或非复用方式寻址。
CP2200有28脚QFN和48脚TQFP两种封装。28脚QFN封装只支持复用方式寻址。有方式选择引脚,用于选择总线接口方式。
CP2200有8KB片内FLASH存储器,可用于存储用户常数、Web服务器内容或作为通用非易失性存储器。FLASH存储器的最后6个存储单元是工厂预编程的唯一48位MAC地址,这样可以从大多数嵌入式系统的生产过程中消除必不可少的序列化步骤。
CP2200完全兼容100/1000 BASE-T网络,可以工作在全双工或半双工模式,自适应,能进行自动极性检测和纠正,具有碰撞自动重发功能,能自动填充和生成CRC,支持广播和多播MAC寻址。工作的温度范围在-40°C到+85°C 之间。
CP2200的系统结构图如图1所示。
图1 CP2200的系统结构图
3. 以太网接口硬件设计
在嵌入式系统中,扩展以太网接口,通常有下面两种方法【3】:
1.以太网接口由不带网络接口控制器的嵌入式处理器和以太网接口芯片组成。以太网接口芯片和嵌入式处理器通过总线相连。此方法通用性强,不受处理器的限制,但由于处理器和网络通过外部总线交换数据,速度慢。
2.选择带有以太网接口的嵌入式处理器。这种方法要求嵌入式处理器有通用的网络接口控制器。处理器和网络数据交换通过内部总线,速度快。
这里选用前一种方法来实现嵌入式系统的以太网接口,其主要由C8051F020单片机和单芯片以太网控制器CP2200构成,如图2所示,单片机控制数据采集和传输,以太网控制器CP2200负责将数据发送到因特网或从网络上接收数据包。
本以太网接口单元是中国民航总局科技基金项目“机场噪声自动监测与数据传输的研究与实现”中Internet接入设备的重要组成部分。Internet接入设备的主要功能是将噪声数据传送到Internet局域网上。单片机将从现场采集的数据,通过以太网控制器芯片发送到Internet上,以太网服务器端接收该数据包.服务器发送数据的流向与之相反,来自服务器的以太网帧数据,通过RJ45接口送到以太网控制器,处理后的数据包再送入单片机协议栈。
图2 以太网接口结构框图
这里使用的是48引脚的CP2200,这样可以不用工作在复用模式。单片机C8051F020与以太网控制器CP2200采用并口相连接,CP2200有一个8位的并行主机接口用于访问该设备上的直接寄存器。串行口代表数据采集,CP2200通过RJ45接口接入Internet网。
4. 以太网接口软件设计
4.1 CP2200驱动程序
以太网中,网络接口就是一个以太网控制芯片及其驱动程序。以太网接口驱动程序包含管理控制器芯片与网络协议栈中上一层之间通信的程序代码,为了在以太网上传送IP数据报,IP层将数据报传递给以太网控制器的驱动程序,驱动程序指示以太网控制器传送以太网帧。在接收来自网络的IP数据报时,以太网控制器检查目标地址是否与接口硬件地址或控制器可接收的组播或广播地址一致,如果一致,则控制器检查错误,驱动程序把数据报或出错指示传递给IP层。
这里以太网接口驱动程序主要是CP2200的初始化配置和收发配置。
(1) CP2200复位初始化
CP2200复位初始化过程可以确保设备正常工作。复位开始时,首先要等待复位引脚升高,然后等待振荡器初始化完成,振荡器初始化完成后会发送一个中断信号。之后是CP2200自身初始化,可以通过检测INT0中断状态寄存器确定自身初始化的完成。由于系统默认的是允许所有的中断,通过设置INT0EN和INT1EN关闭哪些不被主处理器处理的中断事件。初始化过程还包括物理层(PHY)的初始化,以及媒体访问层(MAC)的初始化。最后配置接收过滤器,系统复位后,过滤器允许广播包和组播包,通过设置RXFILT寄存器可以决定是接收还是忽略诸如广播、组播、短帧(帧长度小于64字节)或者CRC错误的帧等。初始化完成后,接收缓冲区为空,CP2200开始准备发送或接收数据.
图3 CP2200发送流程图
(2) 数据的接收和发送
单片机C8051F020通过使用CP2200的直接和间接寄存器来控制CP2200,直接寄存器可
以访问RAM缓冲区,FLASH存储区,间接的MAC配置寄存器及其它的状态和控制寄存器。CP2200具有2K(0x0000–0x07FF)字节的发送缓冲区和4K(0x0000–0x0FFF)字节的接收缓冲区,它们共享相同的地址空间,都使用RAMADDRH:RAMADDRL指针访问,每个缓冲区都有一个专门的数据寄存器。其中CP2200发送数据的流程图如图3所示:
使用随机储存器访问方法将该包装入发送缓冲区:
a.将RAMADDRH:RAMADDRL设为0x0000。
b.将第一个字节写入 RAMTXDATA。
c.将RAMADDRH:RAMADDRL加1。
d.将另一个数据字节写入 RAMTXDATA.
e.重复步骤c和d直到整个包全部装入发送缓存区。
f.长度小于64字节的帧需要填充为至少64字节。
g.将TXENDH:TXENDL设置为最后一个字节的地址。该地址值必须大于等于0x0040。
4.2 TCP/IP协议栈的设计
图4本系统使用的TCP/IP协议栈
我们结合项目的实际需要,自行开发了简化的TCP/IP协议[4],实现的协议包括UDP协议、IP协议、ARP协议、ICMP协议、TCP协议以及一个简单的HTTP协议。各协议自成一个模块,可以根据实际需要,选择使用全部的协议或部分协议,由于本应用主要使用UDP协议传输数据,因此,TCP部分和HTTP部分可以不使用,去掉这两个模块不会影响系统的正常工作。
在实现时,每种协议的格式都定义为一个结构体,发送数据时,只需将应用数据由高层传递到下一层,每层协议会自动添加本层协议所需的报首内容,如,发送UDP数据时,将数据传给UDP层,UDP层会在数据之前加入源目的端口号和目的端口号以及数据报长度和校验和等8个字节的UDP报首信息,然后交给IP层处理,IP同样地在UDP报文前加入IP报首信息,然后发送给下一层。IP层发送时先从ARP Cache中查询目的IP地址对应的MAC地址,如果有,则将该MAC地址放入相应位置,然后发送;如果找不到目的MAC地址则需要发送ARP请求包,广播请求拥有该IP地址的MAC地址,收到ARP回复包后,再将该IP数据发送到下一层,在IP报之前再封装上源MAC和目的MAC地址以及帧类型后,就可以由CP2200进行数据的发送,CP2200会自动添加帧首用于帧同步的8字节前导符和最后的帧校验序列,真正将数据发送到网络上。
5 结论
本论文的创新点:本文设计的以太网接口采用新型的单芯片以太网控制器CP2200,可以实现不同数据的网络实时传输,具有稳定的工作性能、抗干扰抗震性能和较低的系统开发成本。简化的TCP/IP协议栈,既避免了通用嵌入式TCP/IP的移植工作,也避免了资源的浪费,同时便于修改和扩充。
CP2200是一款新型的单芯片以太网控制器,具有高性能的并行外部内存界面,高达30 Mbps的操作速度可大幅缩短通讯时间,可使搭配的微控制器能以更高效率执行通讯协议或其它程序。基于CP2200开发的以太网接口现以广泛应用于远程检测和监视、嵌入式Web服务器、POS设备、远程以太网-UART桥等领域,产生了良好的经济效益,具有广阔的发展前景。
上一篇:基于Lonworks总线的嵌入式智能节点的设计
下一篇:CF卡的IDE总线适配器设计
推荐阅读最新更新时间:2024-05-02 21:49