发 帖  

单片机的以太网开发 TCP/IP网络技术

[复制链接]

实习生

发表于 2010-8-31 11:41:50   2991 查看 3 回复 只看该作者 倒序浏览

如今社会以太网已经发展的相当成熟了,做为我们电子工程师,了解一下以太网是有相当的必要了,我以我在仪器仪表接入以太网方面的工作的一点经验与大家交流。

我比较熟悉的网卡是10M的网卡,主芯片是51单片机和网卡芯片RTL8019AS。老实说,我做的网卡速度并不快,但用于一些简单仪表,智能设备(在速度要求并不是很高的情况下)中,却是很管用的。速度快不起来,原因有几点:

1,            用的是51单片机,

2,            网卡芯片也只有10M。

3,            由以太网协议本身的要求所决定的(TCP传的慢,UDP传相对要快)。

    现在我将自己的一点经验和来自网上大侠的资料给大家参考。 
   一,以太网数据包的结构     。
 
PR      SD     DA        SA       TYPE     DATA       PAD      FCS
 
56BIT   8 BIT  48 BIT   48 BIT   16 BIT  46~1500BYTE  不定    32 BIT
 


——PR:用于同步位,是收发双方的时钟同步,也指明了传输的速率(10M和100M的时钟频率不一样,所以100M网卡可以兼容10M网卡),是56位的二进制数101010101010.....
——SD:分隔位,表示下面跟着的是真正的数据,为8位的10101011,跟同步位不同的是最后2位是11而不是10.
——DA:目的地址,以太网的地址为48位(6个字节)二进制地址,表明该帧传输给哪个网卡.
——SA:源地址,48位,表明该帧的数据是哪个网卡发的,即发送端的网卡地址,同样是6个字节.
----TYPE:类型字段,表明该帧的数据是什么类型的数据,不同的协议的类型字段不同。如:0800H 表示数据为IP包,0806H 表示数据为ARP包,814CH是SNMP包,8137H为IPX/SPX包,(小于0600H的值是用于IEEE802的,表示数据包的长度。)
----DATA:数据段 ,该段数据不能超过1500字节。因为以太网规定整个传输包的最大长度不能超过1514字节。(14字节为DA,SA,TYPE)
----PAD:填充位。由于以太网帧传输的数据包最小不能小于60字节, 除去(DA,SA,TYPE 14字节),还必须传输46字节的数据,当数据段的数据不足46字节时,后面补000000.....(当然也可以补其它值)
----FCS:32位数据校验位.为32位的CRC校验,该校验由网卡自动计算,自动生成,自动校验,自动在数据段后面填入.对于数据的校验算法,我们无需了解.
----事实上,PR,SD,PAD,FCS这几个数据段我们不用理它 ,它是由网卡自动产生的,我们要理的是DA,SA,TYPE,DATA四个段的内容.
----所有数据位的传输由低位开始(但传输的位流是用曼彻斯特编码的)
----以太网的冲突退避算法就不介绍了,它是由硬件自动执行的.
DA+SA+TYPE+DATA+PAD最小为60字节,最大为1514字节.

二,网卡芯片RTL8019AS的介绍

由***Realtek公司生产的RTL8019AS以太网控制器,由于其优良的性能、低兼的价格,使其在市场上10Mbps网卡中占有相当的比例。主要性能:

1、符号Ethernet II与IEEE802.3(10Base5、10Base2、10BaseT)标准;

2、全双工,收发可同时达到10Mbps的速率;

3、内置16KB的SRAM,用于收发缓冲,降低对主处理器的速度要求;

4、支持8/16位数据总线,8个中断申请线以及16个I/O基地址选择;

5、支持UTP、AUI、BNC自动检测,还支持对10BaseT拓扑结构的自动极性修正;

6、允许4个诊断LED引脚可编程输出;

7、100脚的PQFP封装。

网卡芯片RTL8019AS内部结构为:

RTL8019AS内部可分为远程DMA接口、本地DMA接口、MAC(介质访问控制)逻辑、数据编码解码逻辑和其他端口。、

远程DMA接口是指单片机对RTL8019AS内部RAM进行读写的总线。单片机收发数据只需对远程DMA操作。本地DMA接口是把RTL8019AS与网线的连接通道,完成控制器与网线的数据交换。

MAC(介质访问控制)逻辑完成以下功能:当单片机向网上发送数据时,先将一帧数据通过远程DMA通道送到RTL8019AS中的发送缓存区,然后发出传送命令;当RTL8019AS完成了上一帧的发送后,再开始此帧的发送。而RTL8019接收到数据时通过MAC比较、CRC校验后,由FIFO存到接收缓冲区;收满一帧后,以中断或寄存器标志的方式通知单片机。

RTL8019AS内部有两块RAM区。一块16K字节,地址为0x4000~0x7fff;一块小区32字节单元(即输入输出地址),地址为0x0000~0x001f。:(对应于240H--25FH,240H的地址偏移量为0,241H的地址偏移量为1,。。。25FH的地址偏移量为1FH)。

其中00H--0FH共16个地址单元,为寄存器地址。
10H--17H共8个单元,为DMA地址。
18H--1FH共8个单元,为复位端口。
对于8位的操作方式,上面的地址中只有18个是有用的:
00H--0FH共16个寄存器地址。
10H DMA地址 (10H--17H的8个地址是一样的,都可以用来做DMA端口,只用其中之一)
1FH 复位地址。(18H到1FH共8个地址都是复位地址,每个地址的功能都是一样的,只用其中之一就OK了,但实际上只有18H,1AH,1CH,1EH这几个复位端口是有效的,其他不要使用,有些兼容卡不支持19H,1BH,1DH等奇数地址的复位)

寄存器介绍:

a, 命令寄存器CR的各位介绍:

——PS1和PS0这两个位用来选择寄存器页,PS1 PS0=00时选择寄存器页0,=01时选择寄存器页1, =10时选择寄存器页2,=11时选择寄存器页3.

--RD2,RD1,RD0这3个位代表要执行的功能。
=001 读网卡内存
=010 写网卡内存
=011 发送网卡数据包
=1** 完成或结束DMA的读写操作

--TXP这个位写入1时发送数据包,发完自动清零

--STA,STP这两个位用来启动命令或停止命令

=10 启动命令
=01 停止命令

b,PSTART 指定开始接收页

c,PSTOP指定结束页。(该页不用于接收)

d,BNRY 指向最后一个已经读取的页(读指针)

e,TPSR为发送页的起始页地址。

f,ISR,中断寄存器,为FF则清除所有标志位

g,      RCR 接收配置寄存器,设置为使用接收缓冲区,仅接收自己的地址的数据包   (以及广播地址数据包)和多点播送地址包,小于64字节的包丢弃(这是协议的   规定,设置成接收是用于网络分析),校验错的数据包不接收

h,TCR 发送配置寄存器,启用crc自动生成和自动校验,工作在正常模式

i,DCR 数据配置寄存器,设置为使用FIFO缓存,普通模式,8位数据传输模式,

j,IMR 中断屏蔽寄存器,设置成0x00,屏蔽所有的中断

k,CURR 当前的接收结束页地址

其中b,c,d,k,用于接收的设置

三,对网卡初始操作步骤:

1,            先要对网卡进行复位,对网卡复位有两种,

a,            是泠启动,对RTL8019的33脚RSTDRV进行发送一个高电平,网卡是高电平复位的。

b,            是热启动,对RTL8019内部寄存器操作,对复位端口进行任意读写。

2,            对寄存器进行设置,主要有以下操作

a,            先停止网卡工作,设置发送和接收的单元。设置是否要屏蔽中断,设置网卡工作在8位总线还是16位总线工作方式等。

b,            然后设置网卡的MAC地址到MAR寄存器。等,然后让网卡开始工作

c,            初始化完成。

四,补充几点

1,  以太网卡可以接收三种地址的数据,一个是广播地址,一个是多播地址(我们用不上),一个是它自已的地址.但网卡也可以设置为接收任何数据包(用于网络分析和监控).
   任何网卡的物理地址都应该是不一样的,是世界上唯一的,网卡地址由IEEE专门机构分配.(申请购买网卡地址的网址)https://standards.ieee.org/regauth/oui/forms/OUI-form.shtml)

不同厂家使用不同地址段,同一厂家的任何两个网卡的地址也是唯一的. 所以你需要向他们购买。

2,            IP协议采用统一的校验算法:

初始校验和为0,然后对数据每16位求异或,结果取反,便得到校验和。校验时将数据(含校验和)按同样的算法求和,结果为0,则数据正确。不为零则出错。

3,       网卡LED脚

网卡有四个LED脚,分别为60、61、62、63脚,默认状态下其中60脚在连接网络是为低电平,没有连网线是为高电平;61脚连线时为高电平,没有连线是为低电平;62脚没有数据通讯是为为低电平输出,有数据传输时为脉冲电平,我做的网卡用了60、62脚。

4,        我的程序没有用到93C46,如果要掉电存储MAC地址等。可以用别的

EEPROM代替。

实习生

发表于 2010-9-3 16:02:32    楼主|

    以太网开发+单片机读写U盘开发套件

 

以太网开发+单片机读写U盘开发套件实现了Web Server服务器功能,文件上传,通过工具方便配置出各种网络协议(TCP/IP协议,HTTP协议),以适应各种应用。对于数据采集的用户,原来都需要去现场采集各种类型的数据,如温度、湿度、压力等等,现在只要通过英特网便可以将这些数据从远程处自动采集发回。

      开发板集成的单片机读写U盘(SD卡),用带USB总线接口的单片机实现对SD卡的文件系统管理,直接读写SD卡文件,拷贝数据等等管理。SD卡的FAT32文件系统编程复杂,难度极大,我们提供源代码,详细的注释很容易上手。

硬件资源:


* C8051F340芯片是完全集成的混合信号系统级MCU芯片

* 高速流水线结构的8051兼容的CIP-51内核(最大48MIPS);

* USB总线接口,全速12Mbps,1KB FIFO;

* 高速AD转换能力达10位200ksps;

* 4个通用的16位定时器,40个I/O端口;

* 具有在线编程和调试接口;

* CP2200以太网控制器集成以太网媒体访问控制器(MAC) 和10 BASE-T PHY;

* 芯片内置8K 非易失性FLASH存储器 ,方便存储用户配置信息和放置Web 页面;

以太网功能资源:

 

* MCU:C8051F340,片内64K FLASH,5376Byte SRAM

* 内置网络变压器的RJ45网络接口

* 2路RS232接口,实现双串口数据传输功能

* 串口ISP(bootloader)下载功能,JTGA调试接口(方便大家用仿真器调试)

* 支持通过串口下载应用软件

* 提供ARP,IP,ICMP,TCP协议的源代码,ARP中实现了缓存的学习、更新、老化、轮转替换。程序结构模块化,各种子程序分列在不同头文件和C文件中,TCP/IP实现了SOCKET层接口(Keil C51工程)

* 支持ping 命令的响应,可以用TCP进行数据传送

* 提供相应的TCP/IP协议栈,Web Server服务器程序,方便您通过以太网实现远程控制继电器

* 提供简单易用的SILABS IDE开发环境软件,支持在系统编程,方便二次开发

* 提供WEB服务器全部源代码,包括提交

* 提供完整原理图和源程序

 

上位机ping下位机结果:

 

设置PC的IP为192.168.4.*,使单片机跟电脑的IP在同一子网内,然后通过IE输入192.168.4.150可以看到如图

 

单片机读写U盘(SD卡)资源:

 

* MMC/SD(MCI)接口

* 采用SPI模式按扇区读写SD卡数据

* 支持FAT16和FAT32分区格式,支持现有的大容量SD卡

* 引出的管脚,可以调试SPI,I2C,CAN,EMIF功能试验测试

* 高速USB 2.0 接口与计算机通信,全速12Mbps实现数据的高速传输

* 用单片机直接读写U盘(SD卡)文件:实时检测U盘(SD卡)的插入与拔出;文件的打开、读写、创建、册除;目录的创建、册除,支持多级目录;支持长文件名、长目录名;查询容量和剩余空间

* 程序代码实现了USB设备枚举、海量存储协议、USB批量传输协议、FAT16,FAT32文件系统

* 协议实现的所有源代码都采用C语言编写,可以很方便的移植到MSP430,PIC,AVR,ARM等系统中

* 通俗扼要的FAT理解说明,让你在短时间内能够对FAT系统进行基本的处理。掌握此基础后再去渗透FAT白皮书上的细节,这样能为你节省很多宝贵的时间

 

无须安装驱动便可以看到生成一个“可移动磁盘”如图

 

 

  

例程简介:

·USB总线通信例程,批量传输实验,HID通信实验

·串行通信例程

·CP2200以太网通信例程(提供ARP,IP,ICMP,TCP协议的源代码)

·USB接口的读写U盘(SD卡)例程

 

  C8051F340芯片的所有IO都引出来,这样便于用户开发自己的应用系统,同时免费提供如下C源码:

 

·UART和标准流控RS232连接测试

·USB通讯测试

·铁电存储器读写(SMBUS)测试

·16位PWM输出测试

·2X2键盘测试

·SPI接口驱动1602A LCD测试
·I2C接口测试     
·ADC测试      

·10位AD转换测试 

·uC/OS-II实验

 

 

实验内容:

*  C8051F340芯片的所有管脚全部引出,并提供详尽的测试程序,缩短客户的开发时间

*  双串口,可以与PC或其它外设通讯,也可以做相互通讯实验

*  USBHID, USB BUILK实验

*  单片机驱动以太网控制, 实现串口转以太网功能

*  串口与网口通信实验,本板带两个串口可做双串口网络服务器实验.

*  可外接MMC/SD卡,可以自由DIY读卡器,海量U盘设计 ( 采用FAT,FAT32文件系统 )

*  网络TCP/IP实验,WEB、FTP、TCP、UDP等实验,(附带Web Server实例)

 

应用事例

--远程检测和监视,应用于智能小区,网络仪器,远程抄表,嵌入式网络,监控系统,数据传输等领域

--库存管理

--VOIP电话适配器

--网络时钟

--潜入式Web服务器

--远程以太网-UART桥

--远程数据传输

--超小型大容量可移动硬盘(支持大容量 SD卡)

标准配置
A.以太网开发+单片机读写U盘开发套件一块
B.一条交叉串口线
C.一条A-B USB线
D.一条交叉网线(如要连接网络交换机请自行购买非交叉网线)
E.一个5V直流电源
F.配套光盘一张 (开发教程,常用开发工具软件、学习板电路图纸、全部示例程序、相关芯片资料、入门资料)

        可分为单片机读写U盘开发板与以太网开发板供选购

    如果你还没有C8051FXX调试器,没关系,我们为你预先烧写BOOT程序,支持串口在线下载.给单片机增加BOOT功能,让你开发的产品具有灵活的远程升级能力,为产品的售后服务及产品增值提供技术保障.

 

 

注:所有代码全部采用C语言编写,并有注释,保证初学者快速入门。

以太网开发+单片机读写U盘开发套件由本公司自主研发凡在本公司网站(http://www.lcemb.cn/index.html)上购买提供相关的技术支持。

                                                                               在线QQ咨询:  493743672
                                                                               在线技术支持:   562643211
                                                                                MSN: lechengdz@126.com
                                                                                电话: 020-88378279

 

回复

点赞 举报

技术员

发表于 2010-11-13 19:45:36  

楼主的宝贵经验给我了大力的帮助。我通过eepeople网站上的职位信息找到了工作,有许多职位,比如质量系统科科长技术市场工程师PHP开发工程师等等,来自世界知名电子企业,也很适合大家,各位前辈可以登录浏览一下。

回复

点赞 举报

技术员

发表于 2012-12-10 16:30:39  
回复

点赞 举报

高级模式
您需要登录后才可以回帖 登录 | 注册

快速回复 返回顶部 返回列表
关注微信公众号

电子发烧友网

电子发烧友论坛

社区合作
刘勇
联系电话:15994832713
邮箱地址:liuyong@huaqiu.com
社区管理
elecfans短短
微信:elecfans_666
邮箱:users@huaqiu.com
关闭

站长推荐 上一条 /6 下一条

快速回复 返回顶部 返回列表