tag 标签: 硬件tcp/ip

相关博文
  • 热度 27
    2012-8-23 15:26
    1583 次阅读|
    0 个评论
      为了能和客户、合作伙伴和团体进行更直接的交流,WIZNet开通了它的官方中文博客。我们将分享很多有用且有趣的信息,包括产品使用技巧和在嵌入式网络领域的新发现和新想法。 关于嵌入式网络的发展趋势、最新动态和革新技术; 开源硬件平台的讨论; 现实生活中消费者如何运用WIZNet产品的例子; 一些想法和对FAQ的建议性回答; 关于公司和产品的最新消息;   WIZnet中文博客主页 快速进入WIZnet 中文博客   http://blog.iwiznet.cn/     WIZnet与Postscapes的会晤   Postscapes™代表了IOT(网络事务)。他们收集整合创意、人和IOT的公司,他们正在寻找那些拥有即时信息、资源和教育优势的人。 WIZNet的价值链营销总经理Jin-Buhm Kim和Postscapes进行了一次会面。一共有5个问题关于IOT,主要是嵌入式网络、开源硬件等。 我们现在非常热衷于支持开源硬件的发展,我们希望协会将来能够在他的平台上继续运用我们的方法。我们是去年开源硬件峰会的联合赞助商,并且现在是和一些团队直接合作,在开发WIFI盾。Microchip最近介绍的他们的以太网PICtail™主板,用的就是我们的W5200芯片。我们的另一项努力就是和43oh (MSP430 community)的合作项目,目前该项目已经接近完工。 更多信息点击: http://postscapes.com/embedded-networking-6-questions-with-jinbuhm-kim-from-wiznet   WIZNet硬件TCP/IP产品简单,易用,轻松实现主单片机对网络协议的处理负载。   如果您有什么疑问请直接留言也可以登录我们的官网: http://www.iwiznet.cn  或者来信: Tel: 86-10-84539974(转166);QQ: 2377211388; 邮箱: wiznetbj@wiznettechnology.com ,联系人:Jerry ,谢谢!  
  • 热度 15
    2012-5-23 09:08
    1182 次阅读|
    0 个评论
    简介 这篇文档主要介绍了在W7100A中使用UART通信的基本示例程序。所有的这些示例代码都是基于C语言和Keil编译器完成的。详情请参考W7100A数据手册‘第6章UART’中关于 UART、寄存器、中断等等。 图表1为设置UART波特率所用到的各个寄存器。定时器1(Timer1)相关的寄存器是SMOD和TH1,和定时器2(Timer2)相关的寄存器是RLDH和RLDL。 图表1.波特率设置例子   波特率(bps) 定时器 1(Timer1) / 模式 2 定时器 2(Timer2) TH1(0x8D) RLDH(0xCB), RLDL(0xCA) SMOD = ‘0’ SMOD = ‘1’ 2400 160(0xA0) 64(0x40) 64384(0XFB80) 4800 208(0xD0) 160(0xA0) 64960(0xFDC0) 9600 232(0xE8) 208(0xD0) 65248(0xFEE0) 14400 240(0xF0) 224(0xE0) 65344(0XFF40) 19200 244(0xF4) 232(0xE8) 65392(0XFF70) 28800 248(0xF8) 240(0xF0) 65440(0xFFA0) 38400 250(0xFA) 244(0xF4) 65464(0XFFB8) 57600 252(0xFC) 248(0xF8) 65488(0xFFD0) 115200 254(0xFE) 252(0xFC) 65512(0xFFE8) 230400 255(0xFF) 254(0xFE) 65524(0xFFF4) 在一些UART通信的示例中,UART通信有固定的波特率(模式0和模式2)。如果是这种波特率固定的情况,请参考W7100A数据手册第6章UART关于波特率的计算方法。所有的程序都是关于回送(Echo-back)的例子,送回由串行通信中接收到的信息。 W7100A中UART有4个模式,从UART模式0到UART模式3。每个模式下的示例代码的实现将在后面详细介绍。 模式0, 8位UART, 固定波特率 void Init_iMCU(void) { SCON = 0x10;        // 串行模式0, SM00 = 0, SM01 =0, REN=1 }   void PutByte(unsigned char byData) {        SBUF = byData;     //向串行缓存器中写入数据        while(!TI);         //等待直到所有的数据记录完成        TI = 0;             //清除发送中断 }   unsigned char GetByte(void)    {        unsigned char byData;      // 等待直到数据接收完成        while(!RI);        RI = 0;                  //清除RI        byData = SBUF;            //读取数据        return byData; }   void main() {       Init_iMCU();                      //调用Init_iMCU()函数       while(1)  PutByte(GetByte());     //回送(Echo-back)接收到的数据 } 关于UART模式0下的波特率,选择内部时钟12分频(f osc /12)。考虑到W7100A的内部时钟创建了一个非常快的波特率时钟,频率大小为7.3MHz。这种固定波特率、高速的波特率时钟情况下,通常情况下不会选择模式0。这是因为模式0用的是同步传输,没有起始位和停止位。 在所有的这些示例代码中,在Init_iMCU()函数中将SCON寄存器设置为0x10。PutByte()函数可以把串行输入写入串行缓存器中,然后等待直到所有的数据发送完成,最后清除TI。GetByte()函数则可以返回接收到的串行数据,并且等待直到所有的数据接收完成,最后清除RI。Main()函数中,则是通过调用所有的Init_iMCU()、PutByte()、GetByte()函数将所有接收到的数据进行输出。 模式1, 8位UART, 可变波特率 因为模式1使用异步通信,起始位和停止位分别位于数据的开头和结尾。定时器1(Timer1)和定时器2(Timer2)溢出产生波特率。后面将详细介绍各个模式下的示例代码程序。   定时器1(Timer1) 时钟源 void Init_iMCU(void) { SCON = 0x50;      // 串行模式1, SM00 = 0, SM01 =1, REN=1 TMOD |= 0x20;          // 定时器1(Timer1)模式2 PCON |= 0x80;          // SMOD0 = 1 TL1 = 0xFC;            // 波特率设定为115200bps TH1 = 0xFC;            // 参考W7100A数据手册 TR1 = 1;                //启动定时器1(Timer1) }   void PutByte(unsigned char byData) {        SBUF = byData;     // 向串行缓存器中写入数据        while(!TI);         // 等待数据记录完成        TI = 0;             // 清除传输中断 }   unsigned char GetByte(void) {        unsigned char byData;      //等待直到数据接收        while(!RI);        RI = 0;                  //清除RI        byData = SBUF;                  // 读取数据        return byData; }   void main() {       Init_iMCU();                      //调用Init_iMCU函数       while(1)  PutByte(GetByte());     //回送(Echo-back)接收到的数据 }   在UART模式1下可以交换使用定时器1(Timer1)和定时器2(Timer2)来设定波特率。在这一章,我们使用定时器1(Timer1)来设定波特率的值。详细请参考W7100A数据手册查看关于波特率的设置。 示例程序中,将SCON寄存器的值设定为0x50,同时设定Timer1在模式2。如果要设置波特率的值,还要将SMOD位置1,TH1寄存器的值设定为0xFC。此时,波特率的值为 115200bps。其它用来输出的代码程序也如同第2章的接收程序大致相同。 定时器2(Timer2) 时钟源 void Init_iMCU(void) { SCON = 0x50;        // 串行模式1, SM00 = 0, SM01 =1, REN=1 T2CON = 0x30;          // 定时器2(Timer2)波特率发生器模式 TH2 = 0xFF;            // 波特率设置为115200bps TL2 = 0xE8;             // 请参考W7100A数据手册  RLDH = 0xFF;           // 重新重载波特率为115200bps RLDL = 0xE8;            // 重新重载波特率为115200bps TR2 = 1;                // 启动定时器2(Timer2) }   void PutByte(unsigned char byData) {        SBUF = byData;     // 向串行缓存器中写入数据        while(!TI);         // 等待直到所有的数据记录完成        TI = 0;             // 清除传输中断 }   unsigned char GetByte(void)    {        unsigned char byData;      // 等待数据接收        while(!RI);        RI = 0;                  //清除RI        byData = SBUF;           // 读取数据        return byData; }   void main() {       Init_iMCU();                      //调用Init_iMCU函数       while(1)  PutByte(GetByte());     //回送(Echo-back)接收到的数据 } UART在模式1下可以交换使用定时器1(Timer1)和定时器2(Timer2)来设定波特率的值。在这一章节,利用定时器2(Timer2)来设定波特率的值。详细请参考W7100A数据手册。 在示例代码中,将SCON寄存器设置为0x50,选择定时器2(Timer2)为波特率产生器模式。为了能够正确的设定波特率的值,还需要将TH2和TL2分别设为0xFF和0xE8。这样设置完成后,波特率的值就是115200bps。RLDH和RLDL的值可以重新重载,分别定义为0xFF和0xE8。其它用来输出的代码程序也如同第2章的接收程序大致相同。 未完待续~~ 明天我们还会继续给大家献上如何实现W7100A中的UART,敬请期待~~  
  • 热度 22
    2012-5-23 09:08
    1156 次阅读|
    0 个评论
    简介 这篇文档主要介绍了在W7100A中使用UART通信的基本示例程序。所有的这些示例代码都是基于C语言和Keil编译器完成的。详情请参考W7100A数据手册‘第6章UART’中关于 UART、寄存器、中断等等。 图表1为设置UART波特率所用到的各个寄存器。定时器1(Timer1)相关的寄存器是SMOD和TH1,和定时器2(Timer2)相关的寄存器是RLDH和RLDL。 图表1.波特率设置例子   波特率(bps) 定时器 1(Timer1) / 模式 2 定时器 2(Timer2) TH1(0x8D) RLDH(0xCB), RLDL(0xCA) SMOD = ‘0’ SMOD = ‘1’ 2400 160(0xA0) 64(0x40) 64384(0XFB80) 4800 208(0xD0) 160(0xA0) 64960(0xFDC0) 9600 232(0xE8) 208(0xD0) 65248(0xFEE0) 14400 240(0xF0) 224(0xE0) 65344(0XFF40) 19200 244(0xF4) 232(0xE8) 65392(0XFF70) 28800 248(0xF8) 240(0xF0) 65440(0xFFA0) 38400 250(0xFA) 244(0xF4) 65464(0XFFB8) 57600 252(0xFC) 248(0xF8) 65488(0xFFD0) 115200 254(0xFE) 252(0xFC) 65512(0xFFE8) 230400 255(0xFF) 254(0xFE) 65524(0xFFF4) 在一些UART通信的示例中,UART通信有固定的波特率(模式0和模式2)。如果是这种波特率固定的情况,请参考W7100A数据手册第6章UART关于波特率的计算方法。所有的程序都是关于回送(Echo-back)的例子,送回由串行通信中接收到的信息。 W7100A中UART有4个模式,从UART模式0到UART模式3。每个模式下的示例代码的实现将在后面详细介绍。 模式0, 8位UART, 固定波特率 void Init_iMCU(void) { SCON = 0x10;        // 串行模式0, SM00 = 0, SM01 =0, REN=1 }   void PutByte(unsigned char byData) {        SBUF = byData;     //向串行缓存器中写入数据        while(!TI);         //等待直到所有的数据记录完成        TI = 0;             //清除发送中断 }   unsigned char GetByte(void)    {        unsigned char byData;      // 等待直到数据接收完成        while(!RI);        RI = 0;                  //清除RI        byData = SBUF;            //读取数据        return byData; }   void main() {       Init_iMCU();                      //调用Init_iMCU()函数       while(1)  PutByte(GetByte());     //回送(Echo-back)接收到的数据 } 关于UART模式0下的波特率,选择内部时钟12分频(f osc /12)。考虑到W7100A的内部时钟创建了一个非常快的波特率时钟,频率大小为7.3MHz。这种固定波特率、高速的波特率时钟情况下,通常情况下不会选择模式0。这是因为模式0用的是同步传输,没有起始位和停止位。 在所有的这些示例代码中,在Init_iMCU()函数中将SCON寄存器设置为0x10。PutByte()函数可以把串行输入写入串行缓存器 中,然后等待直到所有的数据发送完成,最后清除TI。GetByte()函数则可以返回接收到的串行数据,并且等待直到所有的数据接收完成,最后清除 RI。Main()函数中,则是通过调用所有的Init_iMCU()、PutByte()、GetByte()函数将所有接收到的数据进行输出。 模式1, 8位UART, 可变波特率 因为模式1使用异步通信,起始位和停止位分别位于数据的开头和结尾。定时器1(Timer1)和定时器2(Timer2)溢出产生波特率。后面将详细介绍各个模式下的示例代码程序。   定时器1(Timer1) 时钟源 void Init_iMCU(void) { SCON = 0x50;      // 串行模式1, SM00 = 0, SM01 =1, REN=1 TMOD |= 0x20;          // 定时器1(Timer1)模式2 PCON |= 0x80;          // SMOD0 = 1 TL1 = 0xFC;            // 波特率设定为115200bps TH1 = 0xFC;            // 参考W7100A数据手册 TR1 = 1;                //启动定时器1(Timer1) }   void PutByte(unsigned char byData) {        SBUF = byData;     // 向串行缓存器中写入数据        while(!TI);         // 等待数据记录完成        TI = 0;             // 清除传输中断 }   unsigned char GetByte(void) {        unsigned char byData;      //等待直到数据接收        while(!RI);        RI = 0;                  //清除RI        byData = SBUF;                  // 读取数据        return byData; }   void main() {       Init_iMCU();                      //调用Init_iMCU函数       while(1)  PutByte(GetByte());     //回送(Echo-back)接收到的数据 }   在UART模式1下可以交换使用定时器1(Timer1)和定时器2(Timer2)来设定波特率。在这一章,我们使用定时器1(Timer1)来设定波特率的值。详细请参考W7100A数据手册查看关于波特率的设置。 示例程序中,将SCON寄存器的值设定为0x50,同时设定Timer1在模式2。如果要设置波特率的值,还要将SMOD位置1,TH1寄存器的值设定为0xFC。此时,波特率的值为 115200bps。其它用来输出的代码程序也如同第2章的接收程序大致相同。 定时器2(Timer2) 时钟源 void Init_iMCU(void) { SCON = 0x50;        // 串行模式1, SM00 = 0, SM01 =1, REN=1 T2CON = 0x30;          // 定时器2(Timer2)波特率发生器模式 TH2 = 0xFF;            // 波特率设置为115200bps TL2 = 0xE8;             // 请参考W7100A数据手册  RLDH = 0xFF;           // 重新重载波特率为115200bps RLDL = 0xE8;            // 重新重载波特率为115200bps TR2 = 1;                // 启动定时器2(Timer2) }   void PutByte(unsigned char byData) {        SBUF = byData;     // 向串行缓存器中写入数据        while(!TI);         // 等待直到所有的数据记录完成        TI = 0;             // 清除传输中断 }   unsigned char GetByte(void)    {        unsigned char byData;      // 等待数据接收        while(!RI);        RI = 0;                  //清除RI        byData = SBUF;           // 读取数据        return byData; }   void main() {       Init_iMCU();                      //调用Init_iMCU函数       while(1)  PutByte(GetByte());     //回送(Echo-back)接收到的数据 } UART在模式1下可以交换使用定时器1(Timer1)和定时器2(Timer2)来设定波特率的值。在这一章节,利用定时器2(Timer2)来设定波特率的值。详细请参考W7100A数据手册。 在示例代码中,将SCON寄存器设置为0x50,选择定时器2(Timer2)为波特率产生器模式。为了能够正确的设定波特率的值,还需要将TH2 和TL2分别设为0xFF和0xE8。这样设置完成后,波特率的值就是115200bps。RLDH和RLDL的值可以重新重载,分别定义为0xFF和 0xE8。其它用来输出的代码程序也如同第2章的接收程序大致相同。 未完待续~~ 明天我们还会继续给大家献上如何实现W7100A中的UART,敬请期待~~  
  • 热度 17
    2012-4-10 09:36
    1441 次阅读|
    0 个评论
    串行通信协议是用于工业设备之间数据通信的应用最广泛的通信协议。绝大多数工业设备都有串行接口。并且,目前是互联网的时代,因为许多用户的功能或服务都是通过互联网实现的。比如,诸如电视,DVD和影音系统等消费品需要连接到互联网的功能才能提供许多互联网的服务。此外,绝大多数工业设备也需要将互联网功能作为一个基础实现。互联网具有基于TCP(UDP)/IP的以太网协议服务于互联网设备之间的数据通信。通过互联网的主要功能有: (1)远程设备控制 (2)远程监控及维护 (3)数据集合 (4)远程固件升级 这样,如果工业或消费者的设备只具有串行接口,为了提供互联网功能,串口转以太网网关就变得尤为重要。并且,我们可以猜测,串口转以太网网关的市场应该会比较大,因为仍然有大量的消费产品和工业设备需要这类网关。 在电子消费品中,数字电视和STB需要串口转以太网网关。并且在工业设备中,工业测量系统,远程控制系统,工厂自动化系统,和生产线自动化系统都是适合于串口转以太网网关的好的应用。被称为绿色技术的主要组成部分的智能测光系统是目前一个新的潜在串口转以太网网关的应用。所以,我们可以认为串口转以太网网关在世界上仍然具有很大的市场。    如果你对于串口转以太网网关及其市场有兴趣,你就应当考虑如何完成你自己的串口转以太网网关了。    在工业领域,例如RS232, RS422 和RS485的串行通信是最知名的数据通信的方式。串行协议并不复杂,所以任何人都可以简单地完成所需要的功能。并且, 目前已经有许多擅长串行协议的工程师。也就是说,这些工程师拥有丰富的经验来完成任何关于串行通信的功能。 然而,一般的以太网功能都是作为操作系统核的一部分或者诸如RTOS(Real time OS)的嵌入式操作系统来提供的。当然,内核是通过基于TCP/IP软件协议栈的软件程序实施的,并且安装在操作系统内部。所以,用户很难对已有的功能进行修改或给内核增加新功能。再有,我们也很难找到一个能够修改操作系统内核的工程师,因为这样的工程师应当经过很长时间的锻炼并且具有足够的TCP(UDP)/IP 协议的技术知识。 通常,串行通信甚至能够在像8051, PIC 和AVR series低等终端MCU中完成。串行协议并不复杂并且具有简单地操作流程。但是,在以太网实施的情况下,MCU和存储空间的选择应该深入考虑,因为操作系统或实时操作系统应该安装。我们都知道,操作系统或实时操作系统都需要强大的MCU性能和大的存储空间。 更困难的是,如果用户尝试在操作系统或实时操作系统下完成自己的功能,工程师的技巧和经验是非常重要的。 我们怎么样才能简单地完成串口转以太网网关呢?我们不需要担心串口部分。问题是怎么来完成以太网的部分。如果我们以传统的方式,用操作系统或实时操作系统来具有以太网的功能,我们需要考虑许多问题从而使其变得复杂。 然而,如果我们用芯片的解决法案从内部解决以太网的协议,我们就能够以最简单的方式和最短的时间来完成以太网网关的解决方案。我们可以猜测到一下情景: (1)无操作系统或实时操作系统 (2)无需高MCU:诸如8051, AVR和 PIC的低端MCU足矣 (3)无需大的存储空间 (4)无需TCP/IP的技术知识和长期经验 (5)无需复杂而大段的程序 (6)芯片中的硬件逻辑能够保证高性能和功能上的可靠性 所以,我们可以做出非常简单而且集成的串口转以太网网关的硬件平台。 第一,我们可以利用如8051, AVR 和PIC等具有小存储空间的低端MCU,因为我们并不需要利用操作系统或实时操作系统。大多数工程师已经很熟悉这样的低端MCU,并且处理起来非常简单。 第二,任何人都能够利用芯片完成以太网功能,因为这个芯片已经具有所有的以太网协议。我们并不需要去学习TCP/IP协议,也不需要具有长期的经验。只需要安装这个芯片。这个芯片与一般的以太网控制器完全不同。一般的以太网控制器只有Mac层和物理层,他们仍然需要操作系统。但是,这个芯片拥有Mac层和物理层,并且具有所有以太网的协议,包括TCP(UDP)/IP。 第三,芯片的驱动非常简单,只在20Kbytes之内。这个驱动也可以加入任何操作系统,应为它是有简单的C语言完成的。 我们现在是否已经有这样的芯片呢?是的,幸运的是,WIZnet(www.wiznettechnology.cn) 已经提供了这样的芯片和以太网解决方案。 在我们的网站上,串口转以太网网关的产品名字是W5200, W7100 和 W7200。   W5200芯片示意图     W7100芯片示意图     W7200芯片示意图   更多关于WIZnet串口转以太网的产品,如果您有什么疑问请直接留言也可以登录WIZnet的官网: http://www.wiznettechnology.cn 或者来信:Tel: 86-10-84539974(转166),QQ:2464237212,邮箱:wiznetbj@wiznettechnology.com,联系人:Lily Zhang,谢谢!
  • 热度 20
    2012-3-26 21:33
    2477 次阅读|
    0 个评论
    WIZnet 的W5100硬件TCP/IP嵌入式以太网控制器是一个功能齐全的、单芯片的、因特网驱动的10/100以太网控制器。嵌入式应用需要易于集成、稳定、性能、空间、系统成本控制而W5100就是为嵌入式应用设计的。W5100的设计促进了没有操作系统的网络连通性容易实现。并且它与 IEEE 802.3 10BASE-T 和 802.3u 100BASE-TX 是兼容的。Wiznet 的W5100硬件TCP/IP嵌入式以太网控制器,包括一个全硬件、市场证明的TCP/IP栈和整合的以太网MAC和PHY。这个硬件TCP/IP栈支持TCP, UDP,IPv4, ICMP, ARP, IGMP和PPPoE,并且包括一个传输数据用的内部缓冲区。为了容易整合,在MCU那边提供了3个不同的接口——直接总线、间接总线、和SPI。   特征: - 支持硬件TCP/IP协议: TCP, UDP, ICMP, IGMP, IPv4, ARP, PPPoE, Ethernet - 内嵌10BaseT/100BaseTX以太网物理层 - 支持自动应答(全双工/半双工模式) - 支持自动极性变换(MDI/MDIX) - 支持ADSL连接 (支持PPPOE协议,带PAP/CHAP验证) - 支持4个独立的端口(sockets)同时连接 - 不支持 IP 分段 - 内部16K字节存储器作TX/RX缓存 - 0.18μm CMOS工艺 - 3.3V工作电压,I/O口可承受5V电压 - 小巧的LQFP80无铅封装,符合环保要求 - 支持串行外设接口(SPI Mode 0,3) - 多种指示灯信号输出(Tx,Rx,Full/Duplex,Collision,Link,Speed)   应用: 家庭网络设备:机顶盒,PVRs,数字媒体配适器; 串口转以太网:存取控制,LED显示器,无线AP转播等等; 并行转以太网:POS/微打印机,复印机; USB转以太网:存储设备,网络打印机; GPIO转以太网:家庭网络传感器; 安全系统:DVRs,网络摄像机,终端; 工厂和建筑的自动化; 医疗检测仪器; 嵌入式设备;     W5100结构图   W5100外形尺寸 以上的图标显示了PIN的尺寸,但不是所有80 pins都被显示了。   点击一下连接此处下载W5100数据手册 http://www.wiznettechnology.cn/admin_Root/UpLoad_Files/ReferenceFiles/W5100_Datasheet_v1.2.4_cn.pdf 原文地址连接: http://www.mouser.com/wiznetW5100/   如果您有什么疑问请直接留言也可以登录我们的官网: http://www.wiznettechnology.cn 或者来信:Tel: 86-10-84539974(转166),QQ:2464237212,邮箱:wiznetbj@wiznettechnology.com,联系人:Lily Zhang,谢谢!