单片机TCP/IP

单片机TCP/IP就是在单片机上运行的TCP/IP协议栈。由于嵌入式联网设备越来越多,需要在嵌入式设备上实现TCP/IP协议栈,但是嵌入式设备不同于PC机,它们一般采用MCU也就是单片机而不是CPU作为核心处理器。这就需要在单片机上实现TCP/IP协议栈。对于高端的32位单片机,由于其性能已经接近于低端PC机CPU(例如奔腾II系列),所以和在PC上实现TCP/IP协议栈没有多大区别;这里主要讲述低端8位(例如51单片机)、16位单片机TCP/IP协议栈。

单片机TCP/IP基本信息

中文名 单片机TCP/IP 外文名 danpianjiTCP/IP
特    点 程序存储空间和外部RAM空间不大 协议栈 eCos单片机TCP/IP协议栈

由于TCP协议栈的程序流程较为复杂,因为程序中需要处理对方发送过来的数据、发起的连接,而我方并不知道对方会何时进行什么样的操作,这就使得协议处理起来较为复杂。另外一个原因是单片机TCP/IP协议栈的稳定性是以非常重要的问题,一个稳定的协议栈需要在实际应用中经过长时间的测试,所以编写一个稳定的单片机TCP/IP协议栈更加困难。为此另外一种选择就是使用现有的TCP/IP协议栈。

1. eCos单片机TCP/IP协议栈:eCos TCP/IP栈是涉及与eCos操作系统/内核一起运行的。eCos(和TCP/IP栈)由大量处理其结构支持。eCos TCP/IP栈当前发布了一个测试版,作为一个单独的模块。

2. ZLIP 51单片机TCP/IP协议栈:ZLIP是专门为51单片机设计的嵌入式TCP/IP协议栈,可以在有操作系统和没有操作系统情况下运行,具有代码量适中、运行速度快、用户接口简单、兼容BSD socket接口的特点。实现了TCP、UDP、ICMP、ARP协议,ZLWeb实现了HTTP协议。支持多TCP连接、多UDP连接同时运行,支持在uc/os-II操作系统下多任务运行数据收发。可以用于51单片机TCP/IP上网解决方案。

3. uc/ip 单片机TCP/IP协议栈:uC/IP(mew-kip)是为为控制其设计的一个TCP/IP协议栈。代码基于BSD(很像所有其它栈)但对非常小的覆盖范围功能有所减少。它当前为Linux和DOS目标而建。

4. BSD 单片机TCP/IP协议栈:BSD栈历史上是其他商业栈的开始点,大多数专业TCP/IP栈(如带Wind-River VxWorks内核的)是BSD栈派生的。这是因为BSD在BSD许可协议下提供了他们的栈,它们的许用证使你能以修改或未修改的形式结合它们的代码而无须向创建者付版税。与GPL许用证相比,如果你结合GPL源代码,后者要求你的GPL中公开你的源代码。

5. lwIP 单片机TCP/IP协议栈:lwIP(轻型)TCP/IP栈是TCP/IP协议栈的一个小型实现。它包括带IP和ICMP的TCP和UDP传输层。还提供一个可选的BSD套接字API。为了性能,还包括一个零拷贝API。LwIP协议栈是为嵌入式系统设计的并能适合40KB的ROM和几百字节的RAM。为了可移植性它用C编写。

6. uIP 单片机TCP/IP协议栈:uIP是专门为8位和16单片机设计的一个非常小的TCP/IP协议栈。uIP完全用C编写,以此可以移植到各种不同的结构和操作系统上。一个编译的栈可以有几KB ROM或几百字节RAM中运行。uIP还包括一个HTTP服务器作为服务内容。

7. TinyTCP 单片机TCP/IP协议栈:TinyTCP栈是TCP/IP的一个非常小的简单的实现,它包括一个FTP客户。TinyTCP是为烧入ROM设计的并且对大端结构似乎是有用的(初始目标是68000芯片)。TinyTCP也包括一个简单的以太网驱动器用于3Com多总线卡。

8. WATTCP 单片机TCP/IP协议栈:WATTCP是为嵌入基于DOS的系统而设计的一个小型TCP/IP栈。它包括一个Real Mode DOS版本和另一个32位扩展环境版本。

单片机TCP/IP造价信息

市场价 信息价 询价
材料名称 规格/型号 市场价
(除税)
工程建议价
(除税)
行情 品牌 单位 税率 供应商 报价日期
PIC单片机编程器 JY-PICKIT2 查看价格 查看价格

JY

13% 成都嘉林源电子有限公司
单片机数据线路避雷器 REP-X04-DATA接线端子 查看价格 查看价格

立信

13% 广州市力升达防雷科技有限公司
单片机数据线路避雷器 REP-X04-DATA接线端子 查看价格 查看价格

13% 海南新科保防雷工程有限公司
单片机数据线路避雷器 REP-X04-DATA接线端子 查看价格 查看价格

宇恬

13% 昆明宇恬科技工程有限公司
单片机数据线路避雷器 REP-X04-DATA接线端子 查看价格 查看价格

13% 海南派德科技有限公司
单片机数据线路避雷器 REP-X04-DATA接线端子 查看价格 查看价格

13% 海南万马高科技有限公司
上卷钢质单片卷帘片 F2型跨度≤9m,配件另计 查看价格 查看价格

中霍

13% 广东霍曼实业有限公司
上卷钢质单片卷帘片 F2型跨度>9m,配件另计 查看价格 查看价格

中霍

13% 广东霍曼实业有限公司
材料名称 规格/型号 除税
信息价
含税
信息价
行情 品牌 单位 税率 地区/时间
夯实(电) 夯击能力20-62Nm 查看价格 查看价格

台班 广州市2006年4季度信息价
夯实(电) 夯击能力20-62Nm 查看价格 查看价格

台班 广州市2006年1季度信息价
夯实(电) 夯击能力20-62Nm 查看价格 查看价格

台班 广州市2005年3季度信息价
夯实(电) 夯击能力20-62Nm 查看价格 查看价格

台班 广州市2006年3季度信息价
夯实(电) 夯击能力20-62Nm 查看价格 查看价格

台班 广州市2006年2季度信息价
夯实(电) 夯击能力20-62Nm 查看价格 查看价格

台班 广州市2005年4季度信息价
夯实(电) 夯击能力20-62Nm 查看价格 查看价格

台班 广州市2005年2季度信息价
夯实(电) 夯击能力20-62Nm 查看价格 查看价格

台班 广州市2005年1季度信息价
材料名称 规格/需求量 报价数 最新报价
(元)
供应商 报价地区 最新报价时间
人脸识别单片机 人脸识别单片机|1个 1 查看价格 惠州市金力工程技术有限公司 广东   2022-11-21
TCP/IP网口 TCP/IP网口|2台 3 查看价格 广州市熹尚科技设备有限公司 广东   2020-04-23
人脸识别单片机 -|1套 1 查看价格 国科城市大脑(北京)科技有限公司 广东   2021-10-20
TCP/IP网络模块 TCP/IP 通过网络方式传输警情|9803个 1 查看价格 深圳市顺安居智能科技有限公司 广东  深圳市 2015-04-27
TCP/IP协议转换器 TCP/IP协议转换器|0个 1 查看价格 奥芯电子科技 广东  深圳市 2010-10-14
TCP/IP协议转换器 TCP/IP协议转换器|1套 1 查看价格 四川海帝科技有限公司 四川  成都市 2022-11-21
TCP/IP消费 C801E|4463台 2 查看价格 四川省德生创新信息系统有限公司 四川  成都市 2015-10-27
TCP/IP考勤 D600E|6908套 2 查看价格 四川省德生创新信息系统有限公司 四川  成都市 2015-09-29

用户在拿到一个单片机TCP/IP协议栈以后该如何处理呢。其中的处理分为两个部分:上层接口和下层接口。

4. 1 上层接口

用户使用单片机TCP/IP的目的实际非常明了,就是要实现数据的传送,即从PC机(或者另一个单片机)上传送过来的数据能够在本地单片机上接收,反之亦然。所以如果屏蔽底层的话,单片机TCP/IP协议栈就是一个传输数据的手段。所以最后归结到了使用send()、recv()函数即可。这就是使用单片机TCP/IP协议栈的核心所在。

但是事实上并没有这么简单,因为对于TCP需要有发起连接、接受连接、发送数据、接收数据、关闭连接等操作以配合数据的传输。TCP/IP协议栈一般为用户提供如下的接口:

1. 初始化协议栈和释放协议栈的函数接口,类似Init(), Release()之类的函数。

2. 提供类似BSD socket的socket, sendto, recvfro, connect, bind, listen, accept, send, recv, closesocket, shutdown, getpeername, getsockname, htonl, htons, ntohl, ntohs, inet_addr,inet_ntoa,ioctlsocket,setsockopt, getsockopt,select等API函数,用户调用此类函数进行发起连接、接受连接、发送数据、接收数据、关闭连接等操作。

3. 接受连接、接收数据、被动关闭的处理:由于此类操作是上位机发起的,所以TCP/IP协议栈必须提供一套机制来处理此类事件的发生。一般来说有两种方法:

a) 主动等待:例如使用BSD的recv()函数等待数据的到来。

b) 回调机制:采用类似MFC的OnReceive()函数的回调机制,也即是说在接收到数据的时候会自动调用OnReceive()函数。

那么用户如何使用以上的接口来实现远程控制、远程数据采集呢?方法很简单。

例如如果需要实现一个对LED灯的亮和灭的远程控制应用。首先PC机使用TCP/IP发送工具例如SocketDlgTest程序发送一个字节的“1”到开发板(根据开发板的IP地址发送)。开发板在OnReceive函数中发现收到的是“1”,那么就通过P1端口将灯打开;反之如果收到的是“0”则将灯熄灭。

如果是实现一个远程数据采集的应用,例如定时进行温度采集。首先PC机使用SocketDlgTest程序等待发来数据。开发板每隔一段时间采集一个数据,然后通过send()函数将数据发送给PC机(根据PC机的IP地址发送),这样PC就接收到了当前的远程温度数据。

4. 1 下层接口

下层接口是一个比较复杂的部分,实际上是TCP/IP协议栈和底层硬件的对接问题。如果用户将TCP/IP协议栈移植到自己的单片机系统上。由于硬件上存在一定的差异,就需要修改底层代码。这里需要包括:

1.网卡驱动:如果TCP/IP协议栈已经提供了网卡驱动,并且驱动和用户使用的网卡芯片一样,那么就相对容易一些。这里只需要修改网卡的基地址即可。否则需要自己动手写驱动程序。如果网卡采用RTL8019AS可以参考老古开发网的单片机与TCP/IP网络。如果网卡采用CS8900,可以参考《嵌入式 TCP/IP 协议单片机技术在网络通信中的应用》

2.TCP/IP底层接口。一般单片机TCP/IP需要底层为其提供定时中断、网卡中断处理的入口。底层需要做相应的处理。

在单片机上实现TCP/IP与在PC机上实现TCP/IP是有所不同的,参考《TCP/IP1单片机上的实现特点和方法》我们可以了解到,它的特点是:

1. 速度慢:根据该文档的介绍12M晶振的51单片机的最快网络传送速度为25KB/s。其中的关键在于TCP/IP需要对传送的每个字节进行校验和计算,以及必要的拷贝。这样51单片机的处理速度就不够了。为了提高单片机TCP/IP的速度一般的方法是要对协议栈进行精简。

2. 程序存储空间和外部RAM空间不大:一般的单片机的最大程序和数据空间为64KB。TCP/IP协议一般需要对发送的数据进行缓存,而一个最大的数据包就有1500B左右,当网络速度很大的时候内存消耗将很大。对于非嵌入式TCP/IP协议栈,64KB的程序和数据空间是不够的。

3. 单片机体系结构:51单片机是8位机,所以对于需要完成同一个数据操作,32位的PC机可能只需要10条指令,而51单片机可能需要几百条指令。

单片机TCP/IP常见问题

  • 合泰单片机

    没用过这款单片机,看门狗复位有可能出现这种情况,你试试led=1; _delay(250000); led=1; _delay(250000);让它一直高电平或者低电平,看会不会出现错误,...

  • 单片机中断程序

    你指的“不对”是什么不对?是产生的脉冲频率不对?还是脉宽不对?还是程序运行不对?常量20与变量Z是有本质差别的,程序运行的效果有差别也就是正常现象。原因是:TH0=(65536-5*20)/256; ...

  • 如何学习单片机

    楼主,单片机的定义:就是相当于电脑CPU的简化版。根据CORE(内核)可分为:如8051内核称为51系列单片机;如arm7内核称为ARM7系列单片机;如arm920T.940T/926内核称为ARM9...

单片机TCP/IP文献

嵌入式TCP_IP协议单片机技术在网络通信中的应用 嵌入式TCP_IP协议单片机技术在网络通信中的应用

格式:pdf

大小:1.0MB

页数: 2页

评分: 4.5

嵌入式TCP_IP协议单片机技术在网络通信中的应用

立即下载
基于STC单片机与GPRS的图文LED屏 基于STC单片机与GPRS的图文LED屏

格式:pdf

大小:1.0MB

页数: 3页

评分: 4.4

本文介绍了利用STC89C58RD+单片机做为主控芯片,GPRS模块SIM300做为短消息接收器的LED条形图文显示屏系统的软硬件设计。其中,单片机相当于整个系统的"神经中枢",既要在AT命令下通过串口读和删除GPRS模块收到的短消息并进行处理,又要控制条形屏显示相应的信息。

立即下载

目前单片机上网技术是一个热门技术,很多高校学生选择与此相关的毕业设计,同时高校也有与此相关的项目。为了快速实现单片机TCP/IP,可以通过使用单片机TCP/IP开发板来实现。一般一个单片机TCP/IP开发板需要包含如下的内容:

1. 单片机TCP/IP协议栈:用户可以根据协议栈提供的用户接口来实现TCP的发起连接、接受连接、发送数据、接收数据、关闭连接等操作。最好是该协议栈能够兼容BSD socket接口。

2. 硬件电路板及其相关连接线:用此硬件可以建立嵌入式TCP/IP实验环境。

3. 硬件原理图:这可以方便用户将相关硬件集成到自己的电路板中。

4. 配套开发工具:在嵌入式TCP/IP实验环境中必须要有PC机端的软件,用以和开发板进行通信。

下面介绍如何使用TCP/IP开发板来进行项目开发。

3. 1 开发板套件

为了建立单片机TCP/IP开发环境,需要一套开发套件,一般包含有:①开发板。②开发板光盘。③USB线。④对连网线。⑤普通网线。⑥串口线。其中TCP/IP协议栈相关资料在②开发板光盘上,③USB线一般用于从PC机USB端口获得电。网线用于和PC机通信,⑥串口线用于和PC机串口通信。

3. 2 开发板部件

一个开发板本身是一个单片机系统,包含有CPU、RAM、电源模块、网络模块。网络模块有很多选择,这里以RTL8019AS为例来说明。对于外部接口,最主要的是:⑨网线接口和⑩串口,它们是开发板和PC连接的接口。

3. 3 建立开发环境

建立单片机TCP/IP开发环境的步骤有如下几步:

1. 连线:连线是将开发板与PC机的串口连接,给开发板上电,然后将开发板连接到和PC在同一个网段中。

2. 安装软件:需要安装开发板的编译环境。对于51单片机,一般选用KeilC51作为编译器。设置IP地址,由于必须要求PC机和开发板处于同一个网段,所以需要将PC机的IP地址设置为开发板IP地址的同一个网段的IP地址(有时候也需要设置为特定的IP地址)。

3. 测试连接:一般可以通过PING命令,例如ping 192.168.0.2 –t来测试开发板和PC机的网络是否处于连通状态。

3. 3 开发基于开发板的新程序

这里介绍如何在不修改开发板硬件的基础上,开发自己的单片机TCP/IP程序。开发新程序就是在开发板提供的TCP/IP协议栈的基础上开发应用层的协议。由于TCP层和IP层都已经提供,所以用户不用考虑其中的运行机制。TCP/IP协议栈一般为用户提供如下的接口:

1. 初始化协议栈和释放协议栈的函数接口,类似Init(), Release()之类的函数。

2. 提供类似BSD socket的socket, sendto, recvfro, connect, bind, listen, accept, send, recv, closesocket, shutdown, getpeername, getsockname, htonl, htons, ntohl, ntohs, inet_addr,inet_ntoa,ioctlsocket,setsockopt, getsockopt,select等API函数,用户调用此类函数进行发起连接、接受连接、发送数据、接收数据、关闭连接等操作。

3. 接受连接、接收数据、被动关闭的处理:由于此类操作是上位机发起的,所以TCP/IP协议栈必须提供一套机制来处理此类事件的发生。一般来说有两种方法:

a) 主动等待:例如使用BSD的recv()函数等待数据的到来。

b) 回调机制:采用类似MFC的OnReceive()函数的回调机制,也即是说在接收到数据的时候会自动调用OnReceive()函数。

那么用户如何使用以上的接口来实现远程控制、远程数据采集呢?方法很简单。

例如现在需要实现一个对LED灯的亮和灭的远程控制应用。首先PC机使用TCP/IP发送工具例如SocketDlgTest程序发送一个字节的“1”到开发板(根据开发板的IP地址发送)。开发板在OnReceive函数中发现收到的是“1”,那么就通过P1端口将灯打开;反之如果收到的是“0”则将灯熄灭。

如果是实现一个远程数据采集的应用,例如定时进行温度采集。首先PC机使用SocketDlgTest程序等待发来数据。开发板每隔一段时间采集一个数据,然后通过send()函数将数据发送给PC机(根据PC机的IP地址发送),这样PC就接收到了当前的远程温度数据。

4. 3 开发基于新硬件的程序

通过“开发基于开发板的新程序”一节的介绍后,开发基于新硬件的程序就相对容易了。这只要根据相应的硬件调整通过单片机的控制端口例如P1进行控制或者数据采集即可。

2. 1 各类开发板

目前单片机TCP/IP一般有面向16位和32位的单片机的LWIP、面向8位单片机的uIP、面向51单片机的ZLIP等。目前51单片机上的TCP/IP协议栈以uIP和ZLIP为主,目前uIP的最高版本为V1.0,ZLIP的最高版本为ZLIP增值版V1.0。

2. 2 选择注意事项

作为单片机上网技术学习者,选择一款合适的开发板对于学习是事半功倍的,选择开发板时应该注意以下问题:

1. 价格考虑。TCP/IP开发板的最主要的东西在于TCP/IP协议栈本身,硬件的成本可以做得很低,所以不要因为低价而忽略了核心软件。对于TCP/IP协议栈可以从如下方面考虑:

a) 稳定性:商家提供的TCP/IP协议栈是否有全面的测试,是否在连续PING的情况下不断线,是否在发送接受大数据量(例如10M以上)时不丢失任何字节?对于使用者来说如果协议栈不稳定,那么对于项目的顺利开发将带来很大麻烦。

b) 易用性:使用单片机TCP/IP开发板的用户一般都对于嵌入式TCP/IP的使用不太了解,这就需要开发板提供更加完善的资料和使用手册。包括函数定义、更多的例子程序等。

c) 厂家的技术:某些厂家只是仿冒他人的开发板,用户在使用中遇到的问题根本无法给于解答。这就需要用户问清楚该协议栈是否是厂家自己设计的。

2. 外包装和质量保证:外包装不好可是使得用户收到时,开发板已经在运输过程中受损而无法使用。

单片机TCP/IP相关推荐
  • 相关百科
  • 相关知识
  • 相关专栏