Board logo

标题: 单片机与TCP/IP网络 [打印本页]

作者: yuchengze    时间: 2016-10-23 10:01     标题: 单片机与TCP/IP网络

(一)绪言——单片机如何控制以太网网卡进行传输数据,如何加载TCP/IP协议连接到互联网,这些都是一些令人感兴趣的问题。
——可以说以太网和TCP/IP协议已经成为使用最广泛的协议,而其它总线协议如RS485、RS232,CAN,LANWORKS,都只是一些局部系统的总线。
——围绕以太网而制造的集线器,交换机已进入大小公司,企业,家庭。我现在在众达天网公司,由于公司是搞电脑防火墙的,所以对网络的接触也越来越多,我研究的主要是网络的底层,并掌握了很多网络分析工具如(SNIFFER),对以太网和TCP/IP协议的研究就更加深入了。
——我比较熟悉的网卡是10M的网卡,100M的以太网卡还在研究之中。曾经用单片机(89C52)控制和驱动10M的NE2000兼容型以太网卡与电脑主机传输数据。
——现在将我的一些研究成果写成一系列的文单,提供给大家。也许有一天研究了100M的网卡之后,可以让单片机驱动它,那是可能的事,只不过接口可能会复杂一些。
——我所写的驱动程序并不是标准的,因为我没有学过UNIX,无法使用UNIX提供的原代码。如果能使用UNIX的原代码,那将是很好的事。我也正在接触UNIX和VC++,DDK等方面的内容,希望有一天能够重写我现在所写的驱动程序。
——我知道有很多人在了解单片机与以太网方面的东西,在BBS上也发现了很多这方面的内容,有些人的研究甚至比我还深入,我也希望能跟这些人交流交流,如果对我的文章感兴趣 ,当然可以给我发电子邮件啦。
——在接下来的文章将介绍以太网协议,网卡驱动,IP协议,ICMP协议,ARP协议,TCP协议等 。

(二)以太网协议
  ——--以太网协议(用于10MBPS的以太网,作者以下所说的以太网均指10M以太网,而不是100M,1000M的以太网)
——以太网协议有两种,一种是IEEE802.2/IEEE802.3,还有一种是以太网的封装格式。
——现代的操作系统均能同时支持这两种类型的协议格式。因此对我们来说只需要了解其中的一种就够了,特别是对单片机来说,不可能支持太多的协议格式。
——以太网的物理传输帧:(仅介绍第二种格式)


PRSDDASATYPEDATAPADFCS
56位8位48位48位16位不超过1500字节可选32位

——PR:同步位,用于收发双方的时钟同步,同时也指明了传输的速率(10M和100M的时钟频率不一样,所以100M网卡可以兼容10M网卡),是56位的二进制数101010101010.....
——SD: 分隔位,表示下面跟着的是真正的数据,而不是同步时钟,为8位的10101011,跟同步位不同的是最后2位是11而不是10.
——DA:目的地址,以太网的地址为48位(6个字节)二进制地址,表明该帧传输给哪个网卡.如果为FFFFFFFFFFFF,则是广播地址,广播地址的数据可以被任何网卡接收到.
——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字节.
----以太网卡可以接收三种地址的数据,一个是广播地位,一个是多播地址(我们用不上),一个是它自已的地址.但网卡也可以设置为接收任何数据包(用于网络分析和监控).
----任何两个网卡的物理地址都是不一样的,是世界上唯一的,网卡地址由专门机构分配.不同厂家使用不同地址段,同一厂家的任何两个网卡的地址也是唯一的.根据网卡的地址段(网卡地址的前三个字节),可以知道网卡的生产厂家.有些网卡的地址也可以由用户去设定,但一般不需要.

(三)ISA总线接口定义
ISA ISA=Industry Standard Architecture (isa总线)
0 && image.height<0){if(image.width<=700){this.width=700;this.height=image.height*700/image.width;}}"<
Pin Name Description
引脚 名称 含义

A1 /I/O CH CK I/O channel check; active low=parity error
A2 D7 Data bit 7
A3 D6 Data bit 6
A4 D5 Data bit 5
A5 D4 Data bit 4
A6 D3 Data bit 3
A7 D2 Data bit 2
A8 D1 Data bit 1
A9 D0 Data bit 0
A10 I/O CH RDY I/O Channel ready, pulled low to lengthen memory cycles
A11 AEN Address enable; active high when DMA controls bus
A12 A19 Address bit 19
A13 A18 Address bit 18
A14 A17 Address bit 17
A15 A16 Address bit 16
A16 A15 Address bit 15
A17 A14 Address bit 14
A18 A13 Address bit 13
A19 A12 Address bit 12
A20 A11 Address bit 11
A21 A10 Address bit 10
A22 A9 Address bit 9
A23 A8 Address bit 8
A24 A7 Address bit 7
A25 A6 Address bit 6
A26 A5 Address bit 5
A27 A4 Address bit 4
A28 A3 Address bit 3
A29 A2 Address bit 2
A30 A1 Address bit 1
A31 A0 Address bit 0
B1 GND Ground
B2 RESET Active high to reset or initialize system logic
B3 +5V +5 VDC
B4 IRQ2 Interrupt Request 2
B5 -5VDC -5 VDC
B6 DRQ2 DMA Request 2
B7 -12VDC -12 VDC
B8 /NOWS No WaitState
B9 +12VDC +12 VDC
B10 GND Ground
B11 /SMEMW System Memory Write
B12 /SMEMR System Memory Read
B13 /IOW I/O Write
B14 /IOR I/O Read
B15 /DACK3 DMA Acknowledge 3
B16 DRQ3 DMA Request 3
B17 /DACK1 DMA Acknowledge 1
B18 DRQ1 DMA Request 1
B19 /REFRESH Refresh
B20 CLOCK System Clock (67 ns, 8-8.33 MHz, 50% duty cycle)
B21 IRQ7 Interrupt Request 7
B22 IRQ6 Interrupt Request 6
B23 IRQ5 Interrupt Request 5
B24 IRQ4 Interrupt Request 4
B25 IRQ3 Interrupt Request 3
B26 /DACK2 DMA Acknowledge 2
B27 T/C Terminal count; pulses high when DMA term. count reached
B28 ALE Address Latch Enable
B29 +5V +5 VDC
B30 OSC High-speed Clock (70 ns, 14.31818 MHz, 50% duty cycle)
B31 GND Ground
C1 SBHE System bus high enable (data available on SD8-15)
C2 LA23 Address bit 23
C3 LA22 Address bit 22
C4 LA21 Address bit 21
C5 LA20 Address bit 20
C6 LA18 Address bit 19
C7 LA17 Address bit 18
C8 LA16 Address bit 17
C9 /MEMR Memory Read (Active on all memory read cycles)
C10 /MEMW Memory Write (Active on all memory write cycles)
C11 SD08 Data bit 8
C12 SD09 Data bit 9
C13 SD10 Data bit 10
C14 SD11 Data bit 11
C15 SD12 Data bit 12
C16 SD13 Data bit 13
C17 SD14 Data bit 14
C18 SD15 Data bit 15
D1 /MEMCS16 Memory 16-bit chip select (1 wait, 16-bit memory cycle)
D2 /IOCS16 I/O 16-bit chip select (1 wait, 16-bit I/O cycle)
D3 IRQ10 Interrupt Request 10
D4 IRQ11 Interrupt Request 11
D5 IRQ12 Interrupt Request 12
D6 IRQ15 Interrupt Request 15
D7 IRQ14 Interrupt Request 14
D8 /DACK0 DMA Acknowledge 0
D9 DRQ0 DMA Request 0
D10 /DACK5 DMA Acknowledge 5
D11 DRQ5 DMA Request 5
D12 /DACK6 DMA Acknowledge 6
D13 DRQ6 DMA Request 6
D14 /DACK7 DMA Acknowledge 7
D15 DRQ7 DMA Request 7
D16 +5 V
D17 /MASTER Used with DRQ to gain control of system
D18 GND Ground Note: Direction is Motherboard relative ISA-Cards.

(四)89C52单片机与网卡接口电路图




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0