如何使用W7100A模拟I2C总线?

博客
1.简介 I2C(Inter-Integrated Circuit)总线是由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备,是微电子通信控制领域广泛采用的一种总线标准。这篇文档主要介绍如何使用iMCU7100EVB模拟I2C总线。在本文档中还用到了EEPROM 24C02。 注意:本文是基于100引脚封装的W7100A芯片,由于W7100A 64引脚封装的GPIO口的数目有限,所以这篇应用手册可能不会正确地用于64引脚封装的W7100A芯片。详细信息,请查阅W7100A 64引脚封装的GPIO引脚介绍。   2.I2C I2C总线的特点如下: -两路总线线路:串行数据线(SDA)和串行时钟线(SCL) -可使用标准模式(100kbit/s),低速模式(10kbit/s)和高速模式   3.硬件配置 这一章将介绍EVB和EEPRORM(24C02)之间的电路。 (更多关于MCU封装信息:32引脚(8pin*4) 2.54mm间距,请参考附录) <注意> 由于本文使用24C02 EEPROM,如果用户使用的是不同的芯片,需要修改相关电路。 在本例中,EEPROM地址(A0~A2)被设置为‘000’,同时WP处于无效状态。iMCU7100EVB的P3_0和P3_1口分别设置为SDA和SCL。这些端口内部已经具有上拉寄存器,因此不需要外部上拉。 4.软件 4.1 初始化 4.2 读字节(Byte READ) 如图2所示为I2C总线的读(READ)时序。设备地址一共有8位,高4位为0x0A。在低4位中,其中3位用于地址线,余下的一位为写(WRITE)(0)/读(READ)(1)标志位。 I2C总线的读(READ)函数如下程序3所示。第一个eep_writedata是虚拟的(DUMY)。因为EEPROM的地址为‘000’,所以第二个eep_wirtedata的设备地址也为‘0000’。关于此单元函数的详细信息,请参考I2C相关代码。 4.3 写字节(Byte Write) 如图3所示为I2C总线的写(WRITE)时序。为了能够写入设备地址,将W位置为0,程序4给出了如何在I2C-bus使用写(WRITE)程序的代码。   5.模拟I2C总线读/写(READ/WRITE)演示   终端机设置 设置超级终端机(Hyper terminal)来演示和执行I2C总线的读/写功能,具体过程如下: 6.附录  iMCU7100开发板布局   这就是本文的全部内容,谢谢大家的访问浏览,如果想更深刻的了解WIZnet的产品和技术,请随时与我们联系。
Read More

WIZnet员工Rachel 2012培训笔记

博客
WIZnet核心技术和产品对比 大家好,我是来自中国地质大学研二的学生,有幸加入WIZnet公司最一段时间的实习生。经过上午短暂的培训,让我对WIZnet有了全新的认识。以前没有从来没有接触过硬件协议栈,都是在用软件在做协议栈。因为网络是一个很复杂的设备,尤其是面向连接的TCP/IP协议,很多情况都得考虑。但WIZnet只用硬件就实现了协议栈的功能,以自己目前的知识还不能理解具体硬件逻辑如何实现网络各个层的报文封装,希望在后期的培训中能理解其中的原理。 今天的培训Jerry主要介绍了公司的历史,主要产品,未来前景。WIZnet是一个很有特点的公司,WIZnet的核心技术就是全硬件的TCP/IP协议栈,它能独立于MCU工作,负载所有TCP/IP协议栈的处理过程,与嵌入式操作系统相兼容更适合于无操作系统装置。常见的以太网解决方案有很多弊端:1.需要OS 或者软件栈;2.研发OS ,更换MCU和増加内存都会导致成本增加;3.使用公开源代码时, 其稳定性和安全性都是必须考虑的。硬件方面,与传统的以太网解决方案相比,WIZnet将MAC和PYH集成到一块芯片里并加入了各种标准的网络协议。因此,WIZnet芯片可以减少MCU的负载,给用户留出更多的可占用资源。Lookback回路测试表示,WIZnet W5300的传输速度比一般的软件协议栈多一倍多,而且当网络负载增大时也速度也很稳定,而这时单纯的软件协议栈永远达不到的。总结WIZnet硬件协议栈的好处有以下几点:易于使用,开发者无需专业的网络知识,如同控制外部存储器一样简单,真正实现网络的透明传输;高吞吐率,有效地卸载主芯片TCP/IP处理负载,释放更多的CPU资源;高稳定性,保证高速稳定的通信速率;高安全性,由于TCP/IP在主系统外独立运行,因此能有效地防止外部恶意网络攻击;开发方便,由于网络部分相对独立于主系统,无需移植繁琐的TCP/IP协议栈。 WIZnet有两种主要产品: 全硬件TCP/IP协议芯片和模块和串口转无线模块。全硬件TCP/IP协议芯片有W7200、W7100A、W5200、W5300、W5100和W3150A+。具体的各个型号的主要特点和功能将在以后的培训笔记中介绍。基于这些芯片,WIZnet也开发了很多相应的模块,通过SPI或总线接口将MCU与WIZnet芯片连接,方便开发人员的使用。WIZnet还开发了很多串口转以太网的模块,如WIZ100SR、WIZ105SR、WIZ110SR、WIZ107SR和WIZ108SR。其中前三种都是内嵌MCU,用的芯片是W5100,后面两种用的是W7100芯片。具体的模块功能还有一些多接口的串口转以太网模块读者可以去官方中文网站下载用户手册查阅。应用模块包括:WIZ200WEB,可嵌入式网页服务器模块;WIZ220IO,用于远程监察和控制;WIZ-SM10,应用于智能电表。当然,使用WIZnet模块将给你带来很多好处,这些模块都是经过长期的测试,稳定而且可靠,价格方面也很有竞争性,为用户提供demo和配置工具。WIZnet WiFi 模块也有很多具有竞争力的产品,如WIZ610wi、WIZ630wi等。WIZnet还提供开发板来方便开发人员的开发、测试。 WIZnet主要应用于智能能源、消费电子、安全和工业等方面。WIZnet的客户很多都是世界知名企业,其中很多都是行业的领跑者如Honeywell、SIEMENS、SHARP和LG等。WIZnet在智能电表、医疗设备方面有很多的成功的案例。WIZnet合作伙伴Arduino(主要的开源硬件(OSHW)平台, 有数千万工程师和爱好者跟随)的官方以太网扩展板是使用WZnet W5100芯片,硬件开源平台与Linux软件开源平台一样,为开发者提供便捷的开发平台。 如今,在物联网发展的热潮下,以太网接口无处不在,更多的电子设备必将加入网络,WIZnet是目前唯一一个发展硬件协议栈的公司,将网络真正当作一个设备来做,传输速度和稳定性等方面都是软件协议栈无法比拟的。使用硬件协议栈不仅降低了开发成本,将开发周期也大大缩短,日后的维护也更加方便。因此,我相信在以太网解决方案方面WIZnet将会有更广阔的市场前景。 往后我将会陆续写一些有关WIZnet主要产品和核心技术的培训笔记,并与大家分享我的博文,还请各位大侠给我指点一二,当然,期间的任何问题也可以与我共同交流探讨。 欢迎阅读评论~
Read More

如何使用W7100A实现网络字符LCD?

博客
本用户手册将为大家介绍如何使用W7100A实现网络字符LCD。   1.字符LCD(Character LCD) iMCU7100EVB提供了字符LCD(Character LCD)连接接口,并且能够使用W7100A来控制和测试字符LCD(Character LCD)。如图1所示,iMCU7100EVB能够使用嵌入的硬件化TCP/IP协议栈通过网络来控制字符LCD(Character LCD),这在普通的MCU中是很难实现的。这篇文档将会帮助你使用网络单片机W7100A实现远程控制字符LCD(Character LCD)。 2. 网络字符LCD(Network Character LCD) 图片1是利用iMCU7100EVB实现网络字符LCD(Network Character LCD)的图片。需要将字符LCD、电源线、用于以太网通信的UPT线,以及用于调试和编程的串口线连接到iMCU7100EVB。 2.1 连接网络字符LCD(Network Character LCD) 用户能够在Windows中通过超级终端机(Hyper Terminal)连接到网络字符。当如图2显示“连接到(Connect To)”窗口出现时,输入主机地址(例如192.168.1.165) 和端口地址(例如5000)。然后,按照图3来设置超级终端机(Hyper Terminal)的属性。 图2连接网络字符LCD 图3设置超级终端机(Hyper terminal)属性 2.2 向网络字符LCD(Network Character LCD)发送信息 2.3 显示信息 像公交车到达时间的信息等都可以显示在网络字符LCD(Network Character LCD)上。下面的图表和图片是用网络字符LCD(Network Character LCD)显示公交车到达时间的演示。图6显示了从远程PC机接收到的网络字符LCD的数据。图片2为网络字符LCD(Network Character LCD)向上滚动显示从远程PC机接收到的字符串。 3. 硬件配置 3.1 配置 3.2 字符LCD(Character LCD)连接器和引脚描述 图6显示了字符LCD(Character LCD)接口(JP1)电路。表1列出了字符LCD(Character LCD)各引脚的描述。 4. 固件程序说明 网络字符LCD(Character LCD)工作于TCP服务器模式下。在该模式下,W7100A等待客户端连接请求,并且当与客户端连接之后,与客户端进行数据通信。(更多的详细信息,请参阅‘因特网嵌入式MCU W7100A用户手册9.2.1.1和文档‘如何在W7100A中实现TCP’)。 扩展TCP回路测试(Loopback)的实例代码,这些代码都包含在‘如何在W7100A实现TCP’文档中,它们可用于实现网络字符LCD(Character LCD)。网络字符LCD(Character LCD)的程序流程如图7所示。 4.1 初始化 Socket状态寄存器(Sn_SR)的值是SOCK_ESTABLISHED(0x01),这个值也是软件初始化之后Socket的值。Socket中断寄存器的值是Sn_IR_CON(=0x01),该值表示客户端成功连接到服务器。 -向客户端发送信息: 代码第51-53行和59-61行 -初始化保存data_buf值的tmp_data_buf :代码第44行 -清除字符LCD(character LCD) : 代码第47-48行 -避免初始化进程的重复,清除Sn_IR的值:代码第56行 4.2 接收数据 ‘接收读取缓存大小寄存器(Receive Read Buffer Size Register)’ 用来接收字符串,并且字符串的长度必须为16字节,如果接收读取缓存的长度大于16,使用recv()来接收数据(代码65-68)。根据buf_idx(buffer_index)函数,在data_buf中接收到的数据将被复制到tmp_data_buf中。 Tmp_data_buf的大小为17 x32。也就是说它可以保存32个字符串,每个字符串有16个字符和一个Null字符。如果接收成功并且数据保存到tmp_data_buf中,则向客户端(代码84-86)发送一个表示成功的信息。 4.3 显示 滚动tmp_data_buf的源代码如下:使用在字符LCD(Character LCD)驱动源代码lcd.c中定义的evb_set_lcd_text()函数。evb_set_lcd_text()函数的参数是1位(0或者1)和16个字符串。同时,如上面所提到的,tmp_data_buf最多能够保存32列,lcd_scroll()函数用来在2行字符串LCD(Character LCD)中滚动实现所有的字符串。Dis_idx(display_index)用来在2行字符LCD(Character LCD)中滚动实现32个字符串(代码127-128)。   这就是如何使用W7100A实现网络字符LCD的全部内容,希望对大家有所帮助。
Read More

HK员工培训笔记——如何将Wizfi210/220的固件升级

博客
请参考上图的指示使用SMARTSCRIPT进行wizfi2x0的固件升级到:最新版本。 这个组别中有以下剧本可以使用: Flash write (WLAN, APP) –只会将新的固件放在模块上。 Flash write (WLAN, APP, Clear) –将之前所有资料洗去再加上新的固件。 Write MAC –放进新的的MAC地址。 发动剧本前的正常程序 当完成以上程序才可以发动“START STRIPT”的页面安装新的固件到模块。 当模块已完成所有安装程序,请记得转回跑动模式下才可以正常使用模块。
Read More

如何实现W7100A程序烧录?

博客
1.简介 W7100A的代码存储器内部具有启动ROM(Boot ROM)和闪存(Flash Memory)。启动ROM通过ISP函数自动驱动W7100A,因此用户不能修改启动ROM中的代码。但是,闪存仍然可以作为代码存储器使用。 当系统复位时,W7100A自动执行启动ROM的启动代码。这之后的过程根据BOOTEN引脚的不同而有所差异。这篇手册将会介绍如何将代码烧录到闪存。 下面为详细的执行过程: 如上图1所示,在复位后,根据W7100A的BOOTEN引脚设置,会有两种不同的执行方法。第一种方法是通过将BOOTEN引脚置为1来使用启动ROM中的ISP功能。另外一种方法是通过将BOOTEN引脚置为0,不需要使用启动ROM直接跳转到闪存。 用户可以用ISP模式烧录闪存或者修改APP模式下的ISP进程。更多关于APP模式(BOOTEN引脚=‘1’)执行的详细信息,请参考W7100A用户手册的‘2.1代码存储器’。   2. ISP模式 当BOOTEN引脚被置为1时,W7100A的状态为ISP模式,用户可以使用WIZnet的ISP程序。在这种模式下,通过ISP程序对代码闪存和数据闪存进行写入(write)和读取(read)操作。更多的详细信息,请参阅‘WizISP程序用户指南’。   3. APP模式的ISP进程 通常用ISP程序来写入和擦除代码/数据闪存是通用的方法。但是启动ROM内含有ISP函数,用户可以直接调用该函数,但是需要注意此时W7100A必须执行于APP模式下。如果打开的是ISP模式,用户需要重启将ISP模式改为APP模式。当调用ISP函数时,请注意调用ISP函数的路径必须不能发生在重叠区域。如图中的‘初始化声明’,重叠区域是启动ROM和闪存区重叠的部分。因此,用户必须在重叠区域(0x0000~0x07FF)上烧录代码。如果ISP函数调用路径发生在重叠区域(0x00000~0x07FF),因为启动ROM和闪存之间的转换过程没有返回地址将会产生错误。为了使程序正确地执行,用户必须在‘Keil uVision3’编译器中键入下面的代码来防止重叠。 按照路径‘Options for Target ‘project name’’ => ‘LX51 Locate’ => ‘User classes’在工程才中键入段落符号‘CODE_ISP(C:0x0800)’。然后将下面的代码插入function()函数中,function()函数内包括调用ISP函数。用户可以根据编译器的不同改变该过程。 如果W7100A通过闪存代码执行,W7100A将会完成存储器映射转换,如图3‘代码闪存状态’,同时启动ROM会被禁止。因此,要使用启动ROM内的ISP函数,必须将存储器图转换回来以重新激活启动ROM(Boot ROM)。用户还必须将WCONF(0xFF)寄存器的ISPEN位置设为‘0’,这样启动ROM(Boot ROM)才能被激活。然后,用户可以调用已定义的ISP函数,与ISPID一样,在闪存中擦除或者写入数据。 如下是使用ISP函数的基本示例。 注意: 在这一章,所有的示例代码都是基于‘Keil uVision3’编译器。 ‘do_isp’函数利用isp_id、isp_addr和isp_data来执行ISP函数。 用户必须确保上面的ISP函数执行过程中没有其它中断发生。首先,将ISPEN设置为‘0’激活启动ROM(Boot ROM)和ISP ENTRY。其次,将相应的ISPADDR和ISPDATA写入已定义的ISPID中。然后,通过调用ISP ENTRY来执行启动ROM(Boot ROM)中的ISP函数。如果ISP ENTRY被调用,ISP函数将会相应于用户已经设定的ISPID来执行。当ISPID执行完成后,ISP ENTRY将会自动返回到ISP函数被调用的路径。在返回之后,如果用户将ISPEN位置设为‘1’,处于激活状态的启动ROM和ISP ENTRY将会失效。然后,闪存可以完全再次作为代码存储器使用。最后,返回所有的中断设置为初始状态,完成整个过程。 如下是根据每一个命令定义的ISPID。 因为‘ISP_chip_erase()命令’能擦除整个闪存数据,并且也可以擦除执行代码,执行代码在返回到闪存后将执行,所以除了ISP程序外不要使用‘ISP_chip_erase()命令’。 使用上面的命令,擦除从0x00到1区(sector)的值、写入0xAA的值并且在0x00中读,代码示例如下: 用于数据闪存(Data Flash)的示例代码如下所示,描述了用户可以擦除1区(sector)并且在1区写入0x00~0xFF的值。因为W7100A的数据闪存(Data Flash)具有256字节(1区),不需要RAM结束地址用于ISP_data_sector_prog 或者ISP_data_sector_read。 以上就是本文的全部内容,有什么不解或是需求,可以随时留言联系我们或者去我们的官网咨询。
Read More

什么?谷歌的未来不是Android?

博客
Ben Bajarin是行业分析公司Creative Strategies的首席分析师。他最近在科技博客网站TechPinions上发表一篇文章指出:谷歌的未来不是Android,而是Chrome OS。他的理由是,未来互联网是日常电脑使用体验的一个重要组成部分,如果所有的软件都移植到了Web上,Chrome就可以取代传统的操作系统。 不过他也承认就算这个替代会发生,也需要一段时间。 以下为原文,由腾讯科技翻译 : 谷歌最近推出了几款新的Chromebook,正在打广告宣传它们。249美元(折合人民币约1555元)的价格非常诱人,但Chromebook的关键要 素是“web应用”形态的软件。虽然在我们目前所处的世界中,主要应用还不是完全基于HTML或浏览器的,但我相信未来的某一天,那将很有可能成为现实。 在我设想的未来中,跟Android相比,Chrome和Chrome OS对谷歌更加重要。 在未来,一切运算是发生在浏览器中呢,还是发生在本机或安装好的软件中?人们对此各执一词。 现在,我们下载并安装软件或应用到个人电脑、智能手机、平板电脑和联网电视上。将来,情况也许不会是这样。很可能在未来,我们所有的软件都将在浏览器中运行。我们称这些应用程序为“Web应用”。我认为,未来我们不会再在设备上安装应用程序,而是通过互联网访问它们。 Web应用通过Web浏览器使用,不需要下载并安装到电脑或其他设备上。Web应用的功能跟安装在本机上的应用程序相同,主要区别只有一个:你需要连接到互联网上才能使用Web应用。 你可能觉得这个想法非常疯狂。我们并不是每时每刻都在线上,那么你为什么要使用一个不联网就使用不了的软件呢?问得好。但是只要回想一下你使用计算机时常做 的事情,你就会发现,这些事情需要先接入互联网才能进行:电子邮件、Facebook、Twitter、网上冲浪,在互联网上搜索、网页浏览、下载、流媒体,以及很多其他事情。我可以打赌,绝大多数人在使用电脑时,做的90%以上的事情都需用到互联网。 可能我们大多数人在使用电脑都采用了一种“混合方式”:在有条件的时候利用基于互联网的功能,而当设备无法联网时,我们就依赖本机应用。 最近我遇到了这样一件事,我居住的那片区域停电了,蜂窝服务提供商数据塔的主电源也受到影响,所以虽然我的手机可以打电话,但却无法传输数据。既然移动设备和桌面设备都上不了网,我算是彻底被断网了。 这时我意识到,如果没有互联网,我的笔记本电脑几乎没有什么用处。当然这么说有点夸张,但在那个时候,我需要需要做的所有事情都需要有互联网才行。这次经历让我思考,我通常在电脑上做的哪些事情需要有互联网才行。 在列出一张清单之后,我发现自己使用电脑时不需要互联网的事情只有写作、编辑照片和制作视频。但没有了互联网,我就不能发送或分享这些文字、照片或视频。 所以,如果有人说我们使用电脑时不需要互联网,我会认为那种说法站不住脚。对于我们大多数人而言,互联网都是日常电脑使用体验的一个重要组成部分。 这就是Chrome OS的用武之地 谷歌最近跟三星和宏碁携手推出了几款Chromebook。Chromebook本质上就是个人电脑,但它跟一般电脑的主要区别在于:Chromebook上只安装了一个软件,即Chrome浏览器。 谷歌对Chromebook的设想跟我前面描述的很相似:我们使用电脑时做的一切事情都发生在浏览器中。 从很大程度上说,这个未来取决于业界对HTML和Javascript未来版本的态度。随着HTML和Javascript的发展,我们将可以在浏览器中运 行更复杂的软件。HTML和Javascript是基本编程语言,目前人们现在用它们来创建网站和Web应用。在谷歌的设想中,HTML和 Javascript 基本上会成为未来最重要的编程语言中的两种。 MugTug提供了一个利用HTML5的有趣例子:你可以用MugTug.com网站上的Web应用编辑照片,整个过程都在浏览器中完成。这个服务说明,在浏览器中运行的程序可以跟本机应用的一样强大。 谷歌则推进得更远。该公司最近宣布,它正在测试Chrome浏览器的C /C+ +编程语言支持功能。C和C + +是最常见的编程语言,用于创建本机桌面和操作系统应用程序。 谷歌在一篇博客中表示,用于增强Chrome浏览器处理性能的Native Client项目“能让C和C + +代码在浏览器中无缝执行,安全限制类似于JavaScript。开发人员可以现在利用本机代码库和专业知识来提供便携的、高性能的Web应用。” 这再次说明Chrome OS可能会成为本机操作系统的一个出色替代品。 这个设想还有一些重要元素,人们对它们谈论不多。很多开发者都同时在开发iOS、Android和HTML 5 Web应用,他们认为,一开始就制作好所有这些应用,然后再维护它们会更加经济。这意味着,在某个时间点上,Web应用的数量会跟应用商店里的本机应用数量持平。我们当然还需要一些方法来搜索发现这些Web应用,但随着时间的推移,会有人找到出色的解决方案。 Android的位置在哪里呢? Android适合的是本机OS和需要下载安装的本机应用模式。而且Android更加侧重于移动设备,而不是传统电脑。不过在我的设想中,Chrome手机和Chrome平板电脑可以替代Android手机和Android平板电脑。 我之所以有这些设想,部分原因是谷歌Android最近遭受了专利侵权索赔起诉,很多人都非常关注这一事件,因为如果谷歌在这些专利诉讼中败 诉,Android的未来就令人担忧。但是在我设想的未来中,Android只是一个暂时性的产品,这意味着即使谷歌败诉,Android失去了合作伙 伴,谷歌也不会一蹶不振。 我觉得,就算Android会消失,也不会在短期内消失。Android硬件、软件和服务增长迅猛,即便需要加收额外的授权费用,相关供应商也会乖乖交钱。我主要的观点是,如果未来的运算是基于浏览器的,Chrome OS会为谷歌及其硬件合作伙伴提供长期机会。 Chrome浏览器及其潜力令我感兴趣的地方,是Chrome利用电脑上所有硬件的方式。具体来说,就是Chrome浏览器可以利用GPU和麦克风端口、媒体卡读卡器和USB端口等硬件,而这通常只有操作系统才能办到。 正因为如此,我认为,在未来,如果我们所有的软件都移植到了Web上,Chrome就可以取代传统的操作系统。 Android是谷歌的现在,Chrome OS是谷歌的未来。 目前谷歌正在用翻盖式笔记本电脑开展这项工作,但在不久的将来,就有可能会出现Chrome平板电脑。 说实话,虽然我相信我们正在朝着这个方向前进,但我不知道什么时候这个设想才能成为现实。它需要很多不同的因素一起发挥作用,其中包括可以持久、可靠、实惠地接入互联网的设备。 技术发展有时候快得惊人,但有时候又非常缓慢。我认为这个设想属于后者,至少需要5年才有望实现,很可能时间还会拖得更长。 (转自和讯网)
Read More

TCP/IP Offload Engine技术的嵌入式以太网接口设计

博客
今天给大家介绍一篇来自杭州电子科技大学的一篇论文,原文标题为“基于TOE技术的嵌入式以太网接口设计”。该文提出了一种新的嵌入式以太网解决方案,在无需引入操作系统的条件下,实现了嵌入式系统的以太网接入。 为减轻主机CPU对TCP/IP协议栈处理的负担,提高嵌入式系统的性能,该文提出一种基于TOE(TCP/IP Offload Engine)技术的嵌入式以太网接口设计,该设计介绍了一种通过硬件来实现协议栈处理的方法,利用具备协议处理能力的WIZnet以太网解决方案供应商的网络控制芯片W5300,在TCP/IP协议的基础上实现了嵌入式系统的以太网接入。 W5300 图片:  W5300 TCP/IP是一组广泛应用的协议,几乎已经成为网络通信的标准语言。传统的TCP/IP通信数据的处理,都是由主机CPU通过软件实现。随着高速以太网的发展,网络带宽的增长速度远远高于CPU处理能力的增长速度,这需要占用大量CPU资源对协议栈进行处理,给CPU带来了沉重的负担。对于接入以太网环境的嵌入式系统,如何利用有限资源,减轻CPU对协议栈处理的负担,成为一个值得关注的问题。为了解决这个问题,一种称为TCP/IP减负引擎(TCP/IP Offload Engine,TOE)的技术应运而生。该文基于TOE技术,提出了一种新的嵌入式系统以太网解决方案,给出了详细的硬件接口设计和软件框架设计。 该论文分为4大板块,分别介绍TOE技术、网络控制芯片W5300、嵌入式系统硬件设计、软件设计等。论文地址在这里:http://wenku.baidu.com/view/e5dcda0402020740bf1e9b01.html   更多相关博文可参考: 1. 基于以太网的电力智能监控终端的研究 2. 芯片W3150A怎样应用于光纤以太网CCD相机系统设计
Read More

如何使用网络单片机W7100A实现TCP通信?

博客
今天给大家介绍的是以太网控制网络单片机W7100A的应用笔记之如何实现TCP通信。 TCP(传输控制协议)是用于控制网络间数据通信的协议。作为组成互联网的主要协议之一,更多的详细内容已经写入IETF(互联网工程任务组)的RFC 793中。TCP是运行于IP层上的协议,它保证了数据的有效传输并且可以按照数据的发送顺序依次进行接收。 因为W7100A单片机支持传输层的TCP协议,所以用户不需要做任何整合就可以直接使用TCP/IP协议。 下面一一给大家做阐述。 1     TCP SOCKET 用户可以在W7100A提供的所有8个SOCKET中使用TCP协议,但是必须首先创建要使用的SOCKET。在创建SOCKET时,需要用到SOCKET号、协议、端口号以及标志位。这篇文档将会介绍什么是TCP协议,以及在使用TCP协议时如何将Sn_MR(TCPIP核心中的SOCKET n模式寄存器)设置为Sn_MR_TCP(0x01)。SOCKET号表示用户可以选择从0到7这8个SOCKET中的任意一个使用。端口号表示TCP协议下用户指定使用的端口。如果上面需要的这些都已经设定好,那么socket()函数就可以自行分配创建一个SOCKET。   由于W7100A单片机的TCP协议支持服务器模式和客户端模式,用户可以任意选择一个模式实现此应用。服务器模式和客户端模式的不同见下图: <图1.1>    TCP 服务器和TCP 客户端 如图1.1所示,TCP服务器模式和客户端模式的过程大致相同。唯一的区别在于打开SOCKET之后,SOCKET状态是监听还是连接。当TCP协议在服务器模式下运行时,服务器处于监听状态等待来自客户端的连接请求。如果TCP协议运行于客户端模式下,客户端将会在连接状态下请求连接服务器。一旦成功建立连接,SOCKET的状态将会变成建立(SOCK_ESTABLISHED,0x17)。SOCKET在点对点建立连接之后仍然可以保持连接状态,从而进行数据交换直到SOCKET关闭。 服务器模式下的SOCKET循环周期是由打开、监听、发送、接收、断开和关闭组成。客户端模式的SOCKET循环周期则是由打开、连接、发送、接收、断开和关闭组成。   1.1         打开(OPEN)   无论是在服务器模式或是客户端模式下,在创建SOCKET时第一步都是打开SOCKET。利用SOCKET()函数设置SOCKET号、协议、端口号以及标志位来创建一个SOCKETn(取第n-1个SOCKET值)。由于使用的是TCP协议,需要将协议设置为Sn_MR_TCP(0x01)。而端口号的设置则取决于是在服务器模式还是客户端模式下。如果是在服务器模式下,服务器会根据当前用户所使用的端口来设置源端口号。但是如果是在客户端模式下,因为目的端口号正在被使用,最好随机选择一个端口号,并每次增加一个数字,直到SOCKET被连接为止。TCP协议的标志位表示‘无延时确认标志位’,一般来说,将该位设置为0。更多关于协议类型、标志位等信息,将会在‘TCPIPCore.h’文件下的‘Sn_MR value’中介绍。 在所有的设置完成之后,通过检查Sn_SR(n)寄存器来查看SOCKETn的状态是否变成SOCK_INIT(0x13)。用户可以通过getSn_SR(SOCKETn)函数来完成Sn_SR(N)寄存器的检查过程。如果SOCKET的状态为SOCK_INIT(0x13),表示SOCKET创建成功;如果没有成功,用户需要重新创建SOCKET。 例1.1 打开SOCKET   1.2         监听(LISTEN)   监听过程只能在服务器模式下使用。在SOCKETn创建完成后,为了能与客户端连接,需要将SOCKET的状态从SOCK_INIT(0x13)变成监听。用户可以直接将Sn_CR(n)寄存器设置为Sn_CR_LISTEN(0x02)或者可以直接使用’SOCKET.c’文件中的LISTEN()函数。在变成监听状态之后,SOCKET将会改变为SOCK_LISTEN(0x14)。然后,SOCKET等待客户端发出连接请求。一旦与客户端建立连接,SOCKET的状态将会重新变成SOCK_ESTABLISHED(0x17)。此时,便可以与客户端之间进行数据传输。 例 1.2 设置监听状态 1.3         连接(CONNECT)   连接过程发生在客户端模式连接到服务器时。在连接SOCKET时需要用到SOCKET号、目的IP以及目的端口号这些参数。用户可以通过CONNECT()函数进行设置;一旦成功建立连接,SOCKET的状态将会变成SOCK_ESTABLISHED(0x17)。 例 1.3 设置连接状态 1.4         发送(SEND)   在使用TCP协议时,与对端的连接在发送数据前就已经完成。用户可以通过SEND()函数查看设置的SOCKET号、将要发送数据的地址、数据的大小等参数。将要发送的数据的地址通常由选择的区域确定,输入数据,并且通过指针设定区域。 例1.4 发送数据 1.5         接收(RECEIVE)   接收过程和发送过程基本相同,唯一不同的是接收(RECEIVE)过程需要检查的是Sn_RX_RSR(n)。接收过程是指将来自接收缓存器的数据移动到用户数据存储区。因此,用户必须在接收之前检查Sn_RX_RSR(n)的值是否大于0。如果大于0,表示数据已经保存在接收缓存器中。用户必须通过getSn_RX_RSR(n)函数在此过程之前确认数据是否被接收。 例1.5 接收数据 1.6        断开(DISCONNECT)   关闭SOCKET的方法通常有两种:第一种方法是通过DISCONNECT(n)函数。DISCONNECT(n)函数不能用来直接关闭SOCKET。它先向对端发送断开连接请求(FIN数据包),然后等待回复信息(FIN/ACK数据包),之后才能将SOCKET的状态变成SOCK_CLOSED(0x00),最后关闭SOCKET。当收到断开连接请求时,W7100A发送一个FIN/ACK数据包表示允许对端关闭SOCKET。如果在发送断开连接请求之后没有收到对端的回复,将会发生TCP超时,SOCKET的状态将会变成SOCKET_CLOSED(0x00)。当用户需要断开连接时,通过DISCONNECT()函数,选择合适的SOCKET号,然后发送断开连接请求。 例1.6 设置断开连接 1.7         关闭(CLOSE) 和断开的过程不同,关闭过程可以直接将SOCKET变成SOCK_CLOSED(0x00)。用户通过 CLOSE(n)函数选择合适的端口号,然后无论对端有没有做出响应都将关闭SOCKET。如果RST数据包来自对端,SOCKET将会无条件变成SOCK_CLOSED(0x00)。一旦SOCKET变成为SOCK_CLOSED(0X00), SOCKET将不再可用除非重新打开它。 例1.7 设置关闭   2     TCP回路测试(LOOPBACK) 2.1         服务器模式   TCP回路测试可以通过回送来自于对端的数据从而检测TCP协议的性能。这一章节将会介绍服务器模式下回路测试的例子。程序范例如下: 例2.1 设置回路测试(LOOPBACK)服务器 如上面的例子所示,在SOCKET循环周期内除了connect()函数,其他所有函数都可以使用。首先利用getSn_SR(s)函数检测SOCKET状态,在W7100A复位后,所有的SOCKET全都变成SOCK_CLOSED(0x00)状态。然后利用close()函数完全关闭SOCKET,再通过socket(s,Sn_MR_TCP,port,0x00)函数来创建一个新的SOCKET。如果SOCKET创建成功,状态将会变成SOCK_INIT,再通过listen(s)函数将SOCKET的状态变成监听。一旦与对端建立连接,SOCKET的状态将变成SOCK_ESTABLISHED,并且等待数据。所有接收到的数据都保存在接收缓存器中,recv(s,data_buf,len)函数中的data_buf变量定义为接收到的数据的长度。最后再通过send(s,data,len)函数将数据回送到客户端。客户端会比较数据交换前后的差异来检测数据通信是否正常。   2.2         客户端模式   本章节将会介绍客户端模式下回路测试的例子。程序范例如下: 例2.2 设置回路测试(LOOPBACK)客户端 TCP客户端的程序例子和TCP服务器的例子基本相同。唯一的区别在于SOCK_INIT状态下,是通过connect()函数而不是listen()函数与服务器连接。 3     回路测试服务器演示 这一章将会介绍TCP回路测试程序运行的例子。在下载完成TCP回路测试应用的二进制文件后,运行iMCUW7100单片机内的数据包实现回路测试的演示过程。更多的详细信息,请参阅文档‘如何在W7100A中创建工程’,‘WizISP程序指南’以及‘W7100A Debugger指南’。 对TCP串行回路,用户按照下面的步骤进行设定: ●  确认测试环境。请参考‘iMCU7100EVB用户指南’ 直接利用UTP线连接PC机与iMCU7100EVB 直接利用串口线连接PC机与iMCU7100EVB 使能iMCU7100EVB的5V电源适配器 ●  添加下面测试PC机的网络信息 -…
Read More

如何测试WizFi210的”串口转无线”功能?

博客
该文章给大家介绍串口模块WizFi210的快速启动指导,如何测试WizFi210的"串口转无线"功能。   首先要给大家说明的是,本文描述的是在下列环境中配置串口模块WizFi210时所需要的步骤: 1.  AP:使用WPA Personal或临时密钥完整性协议(TKIP)安全模式 2.  WizFi210:使用静态IP地址模式 3.  连接: 自动连接模式(TCP服务器)  系统配置 下图描述了WizFi210通过无线网络将从<PC 2>中接收到的数据发送给<PC 1>的TCP客户端程序。 <AP> 兼容IEEE 802.11b/g/n <WizFi210> 串口转无线模块 <PC 1> 通过无线或有线网络连接到AP,在<PC 1>中,需要安装TCP客户端程序。 <PC 2> 通过串口连接到WizFi210,在<PC 2>中,需要安装串口程序。   本测试中,该AP支持802.11b/g并使用WPA Personal或临时密钥完整性协议(TKIP)安全模式。 WizFi210需要配置静态IP地址和TCP服务器模式。 PC 1可以通过TCP客户端程序与WizFi210通信,PC2则通过串口终端连接到WizFi210。   下面一一给大家做阐述。 1.AP配置 无线AP(如Linksys WRT54G2)配置如下: ©  服务集标识符(SSID):WizFiDemoAP ©  频道:6 ©  安全性:WPA Personal或临时密钥完整性协议(TKIP) ©  WPA共享密匙:12345678 2. 连接<PC 1>和AP  检查<PC 1>的IP地址。 如果<PC 1>是通过无线网络连接到AP,检查无线适配器的IP地址。如果<PC 1>是通过有线网络连接,检查有线网络适配器的IP地址。 以下显示了电脑的IP已配置成‘192.168.3.199’。 3. 连接<PC 2>和WizFi210 通过串口线连接<PC 2>和WizFi210,并提供电源。可以在串口终端程序看到以下内容。由于版本的不同,以下内容可能会有所不同。 配置<PC 2>的串行接口,例如:115200bps, 8 bit, none parity, 1 stop bit。 在串口终端程序中,如果输入“AT”和回车(<ENTER>),会看到“OK”的提示信息。 当显示“OK”的提示信息后,WizFi210已经进入AT命令模式,在该模式下,可以使用AT命令。如果没有显示“OK” 的提示信息,检查电源或串口线是否有问题,并重试。 4. 在AT命令模式下使用WizFi210 (1)       AT+WWPA=12345678 该命令设置WPA密码为“12345678”。 (2)       AT+NDHCP=0 该命令设置WizFi210使用静态IP地址(而非动态)。当IP地址被动态主机 配置协议(DHCP)接受时,“ AT+NDHCP=1”命令就会被执行。 (3)       AT+NSET=192.168.3.123,255.255.255.0,192.168.3.1 该命令设置模块的IP地址为“192.168.3.123”,子网掩码为“255.255.255.0”, 默认网关为“192.168.3.1”。 (4)       AT+WAUTO=0,WizFiDemoAP,6 该命令设置连接AP的模式(0:基础(AP)),SSID(”WizFiDemoAP”),BBSID(默认)以及频道(6)。 (5)       AT+NAUTO=1,1,8011 该命令设置WizFi210为服务器(1),TCP协议(1),端口(8011),因为在 这情况下WizFi210被配置为TCP服务器,故此并不需要配置目的主机的IP地址。 (<类型>,<协议>,<目的主机IP>,<目的主机端口>) (6)       ATA 该命令初始化自动连接。如果输入该命令,WizFi210会根据“AT+WAUTO” 和“AT+NAUTO”所配置的参数来初始化自动连接。 如果连接建立成功,WizFi210会返回“OK”信息、IP地址、子网掩码和默 认网关;如果连接建立失败,WizFi210会返回“ERROR” 信息。在建立连 接后,WizFi210会进入数据通讯模式。 如果WizFi210已连接到无线网络,可以使用 “ATA2”命令,ATA命令是用于 一开始连接AP,但是ATA2命令则是用于已经连接AP的情况下启动自动连 接。 5. 数据通讯测试 (1)<ATA>命令返回“OK”。 (2)将<WizFi210>连接到<PC 1>的TCP客户端程序。 (3)在<PC 1>的TCP客户端程序中输入字符并发送给网络。 (4)在<PC 2>的串口终端机中输入字符并发送给串行接口。 (5)通过关闭<PC 1>的TCP客户端程序来关闭WizFi210的连接。   更多参考资料请访问官网,有任何问题请随时联系我们。谢谢阅读!
Read More

Paul Graham: 硬件复兴时代来临了!

博客
本文作者为Y Combinator创始人Paul Graham,美国最知名的创业导师之一。 因为Y Combinator的孵化器优势,我们有幸能通过投资者的投资风向一窥未来的趋势,在上一轮投资潮中,最显著的趋势是对硬件创业公司的倾斜,投资的84家创业公司中有7家是硬件公司,而且比那些非硬件公司获得的青睐度更高。 这些敢于尝试的投资者当然面临了大多数同行的阻挠,因为软件(搜索、社交、应用)的异军突起,使得很长一段时间内投资者对硬件行业执有偏见,但是最好的创始人比投资者更清楚未来的趋势在哪里,因为他们已经在路上。 引发这种趋势的并非某个特别的力量,因为平板的流行要求市场建立许多相关周边产品或者创作新的产品、催生新的合作。电动汽车已经出现,各种类型的无线连接被认为理所当然,Arduinos, 3D 打印, 激光切割机随即而来……此外数控铣床使得这些东西成为产品的可能性大大提高,在线销售也让大型硬件的地域限制得以缓解。  为什么硬件公司突然受青睐? 纯物质的东西存在感很强,但却不能跟软件一样一夜之间布满世界,不过这条准则不会永远适用。 追溯到1990年,软件的优势是从那时候开始的,但暗处的黑客也一直热爱生产硬件,而且如果硬件跟软件一样易于运输的话,硬件一样会全球畅销,而现在正有这个苗头。   转载自:雷锋网 济慈
Read More