iic通信协议总结

2024-05-03

iic通信协议总结(精选3篇)

篇1:iic通信协议总结

单片机的重点知识1

1、IIC协议说明:

I2C总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必须保持稳定,只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化。

AT24C02的芯片地址如下图,1010为固定,A0,A1,A2正好与芯片的1,2,3引角对应,为当前电路中的地址选择线,三根线可选择8个芯片同时连接在电路中,当要与哪个芯片通信时传送相应的地址即可与该芯片建立连接,我所使用的实验板上三根地址线都为0。最后一位R/W为告诉从机下一字节数据是要读还是写,0为写入,1为读出。

AT24C02的芯片地址(0xa0为写,0xa1为读)

任一地址写入格式

任一地址读取数据格式

2、程序详解IO口模拟IIC:

起始和终止信号 :SCL线为高电平期间,SDA线由高电平向低电平的变化表示起始信号;SCL线为高电平期间,SDA线由低电平向高电平的变化表示终止信号。void start()//起始信号 { SDA=1; Delay_us(10);SCL=1; Delay_us(10);SDA=0;Delay_us(10);} Void stop()//终止信号 { SDA=0; Delay_us(10);SCL=1; Delay_us(10);SDA=1;Delay_us(10);}

数据传送格式(1)字节传送与应答

每一个字节必须保证是8位长度。数据传送时,先传送最高位(MSB),每一个被传送的字节后面都必须跟随一位应答位(即一帧共有9位)。如果一段时间内没有收到从机的应答信号,则自动认为从机已正确接收到数据。

Void ack()//应答信号 { uchar i;SCL=1; Delay_us(10);While((SDA==1)&&(i==250))i++;//如果SDA=0则表示已经应答或者等待一会,就默认已经应答 SCL=0; Delay();} Void noack()//非应答信号 { SDA=1; Delay();SCL=1;

Delay();//SCL有变化时,SDA保持不变,即非应答SCL=0; Delay();} void init()//初始化信号 { scl=1;sda=1;}

/////////////////////写一个字节////////////////////// void iicwr_byte(uchar dat){ uchar i;scl=0;//只有在时钟线上的信号为低电平时,数据线上的高电平或低电平才允许变化(补:时钟线为高电平时,才能进行读写)delay();for(i=0;i<8;i++)//每一个字节,必须保持8位的数据长度 { if(dat&0x80)//数据传送时,先传送最高位MSB { sda=1;} else { sda=0;} dat=dat<<1;//左移 delay();scl=1;//时钟线为高电平时,才能进行读写 delay();scl=0;//进行数据读写时,拉低时钟线,以保持数据稳定,有效 delay();} sda=1;//每传送完一位就将数据线释放,以便下一位数据的传送; delay();} //////////////////////读一个字节////////////////////// uchar iicre_byte(){ uchar i,dat;scl=0;delay();sda=1;//数据线释放 delay();for(i=0;i<8;i++){ scl=1;//时钟线为高电平时,才能进行读写 delay();dat=dat<<1;//判断8次,移位7次 if(sda==1){ dat++;//自增,个位加1 } scl=0;//拉低时钟线,以保证数据的稳定,和读出数据的正确性 delay();} return dat;} //////////////////////写操作///////////////////// void write_byte(uchar address,uchar dat)//指定地址写一个字节数据 { init();//初始化 start();iicwr_byte(0xa0);//写器件地址(a是地址固定部分(1010),0的前三位是选择位,第四位0为写;若第四位为1,则是读;)ack();iicwr_byte(address);//写器件内部存储器地址 ack();iicwr_byte(dat);//数据 ack();stop();} //////////////////////读操作//////////////////// uchar read_byte(uchar address)//指定地址读一个字节数据 { uchar dat;start();iicwr_byte(0xa0);ack();iicwr_byte(address);ack();start();iicwr_byte(0xa1);//读 ack();dat=iicre_byte();//读出的给dat stop();return dat;} 写好以下的几个函数:

void start();//起始信号 Void stop();//终止信号 Void ack(); //应答信号 Void noack();//非应答信号 void init(); //初始化信号

void iicwr_byte(uchar dat);//写一个字节 uchar iicre_byte(); //读一个字节 void write_byte(uchar address,uchar dat);//写操作 uchar read_byte(uchar address); //读操作 就距离成功使用IIC协议就行数据传输,只剩一步之遥了。

篇2:iic通信协议总结

1 IIC总线和硬件设计

IIC总线产生于80年代, 是目前最常用的短距离芯片间的通讯方式之一, 最初用于音频和视频设备开发, 如今主要应用于单个组件状态的通信。IIC总线用两根线实现了双全工同步数据传送, 可以方便地构成多机外围器件扩展系统。寻址采用器件地址的硬件设置方法, 通过软件寻址完全避免了器件的片选寻址, 从而使硬件系统的扩展更加简单灵活。采用IIC通信协议能够为该小型温度采集系统提供很好的支撑。

系统硬件采用51单片机作为控制核心, 单片机的P2.0、P2.1口与IIC总线器件相对应的SDA和SCL相连。单片机具有外围晶振电路、复位电路和按键电路, 该按键既可作为外部中断又可作为普通的按键。温度采集部分由LM75A芯片[2]将前段温度采集的数据通过IIC总线送给单片机进行处理和显示。显示部分数码管的位驱动由大功率三极管9012承担, 三位数码管位选由单片机P2.2~P2.4控制三极管9012的导通与截止来完成, 数码管段选由IIC总线扩展I/O口的PCF8574[3,4]来控制。

电源部分采用DC9~12V供电, 选用LM7805, 使用容量大耐压高的电容作为前段的滤波器件以防止输出电源不稳定, 在LM7805后端, 采用两个电容实现稳压和滤波。选用发光二极管作为电源指示信号, 并串联一个限流分压电阻。

2 软件设计

硬件部分完成后, 温度采集系统的功能实现关键是软件的设计, 程序设计主要包括下面三部分:IIC总线通信、温度采集和按键程序。

2.1 IIC总线通信

系统芯片间通信采用IIC协议, 总线分为串行数据线SDA和串行时钟线SCL两条线路, 并且只有在总线空闲时才允许期待数据传输, 具体程序如下:

2.2 温度采集

温度采集采用LM75A芯片, LM75A芯片是一个使用内置带隙温度传感器和模数转换技术的温度-数字转换器[5], 也是一个温度检测器, 可实现过热检测输出。该温度传感器测量精度高, 可达0.125℃, 也可用作具有预定义温度设定点的独立温度控制器。结合芯片引脚特点, 软件设计应实现高低八位数据的轮流采集, 具体程序如下:

2.3 按键

按键接单片机外部中断INT0、INT1引脚, IO设备的中断请求、系统故障的中断请求等都可以作为外部中断源, 从引脚INT0或INT1输入。外部中断请求INT0、INT1有电平触发和跳沿触发[6]两种触发方式, 由TCON的IT0位及IT1位选择, 按键部分具体程序如下:

if (KEY_up) //松开按键

3 温度采集精度测试

为验证设计效果, 采用实验板焊接温度采集硬件电路, 用Keilu Vision3编程, 然后把调试通过程序生成的.hex文件烧写到单片机中。

用温度采集实验电路和韩泰品牌的JT.1-112型温度计采集不同环境下的温度作对比, 如表1所示, 采集数据的相对测量精度都在0.2%以下, 测量精度较高。

4 结论

我们设计的基于IIC协议小型温度采集系统与传统技术设计的温度采集系统相比, 具有测量精度高、实用性强、成本低 (至少降低一半以上) 等优点, 具有潜在的实际应用价值。

摘要:IIC总线具有简化系统复杂性、软件操作一致性、抗干扰等特点。本文对IIC总线及其通信协议进行了介绍, 同时对系统的硬件设计进行了分析, 并重点对温度采集系统的软件进行设计, 编程采用C语言, 主要分为IIC总线通信、温度采集和按键三部分。所设计的温度采集系统具有测量精度高、实用性强、成本低等优点。

关键词:IIC通信协议,温度采集系统,设计

参考文献

[1]郑明惠.温室环境数字化监测仪表的设计与研制[J].计算机测量与控制, 2010:12.

[2]周长吉.现代温室工程[M].北京:化学工业出版社, 2011.

[3]谭静芳, 姜春玲.温室环境智能测控系统的设计[M].农业装备技术, 2010.

[4]徐智如, 王磊.基于单片机的温室智能测控系统的设计[J].传感器与微系统, 2006:25-27.

[5]徐玮.C51单片机高效入门[M].北京:机械工业出版社, 2011.

篇3:浅析计算机网络通信协议

摘要:计算机与计算机之间的通信离不开通信协议,通信协议实际上是一组规定和约定的集合。两台计算机在通信时必须约定好本次通信做什么,是进行文件传输,还是发送电子邮件;怎样通信,什么时间通信等。

关键词:计算机网络通信协议

0引言

本文就计算机网络通信协议、选择网络通信协议的原则、TCP/IP通信协议的安装、设置和测试等,作进一步的研究和探讨。

1网络通信协议

目前,局域网中常用的通信协议主要有:NetBEUI协议、IPX/SPX兼容协议和TCP/IP协议。

1.1NetBEUI协议①NetBEUI是一种体积小、效率高、速度快的通信协议。在微软如今的主流产品,在Windows和WindowsNT中,NetBEUI已成为其固有的缺省协议。NetBEUI是专门为几台到百余台PC所组成的单网段部门级小型局域网而设计的。②NetBEUI中包含一个网络接口标准NetBIOS。NetBIOS是IBM用于实现PC间相互通信的标准,是一种在小型局域网上使用的通信规范。该网络由PC组成,最大用户数不超过30个。

1.2IPX/SPX及其兼容协议①IPX/SPX是Novell公司的通信协议集。与NetBEUI的明显区别是,IPX/SPX显得比较庞大,在复杂环境下具有很强的适应性。因为,IPX/SPX在设计一开始就考虑了多网段的问题,具有强大的路由功能,适合于大型网络使用。②IPX/SPX及其兼容协议不需要任何配置。它可通过“网络地址”来识别自己的身份。Novell网络中的网络地址由两部分组成:标明物理网段的“网络ID”和标明特殊设备的“节点ID”。其中网络ID集中在NetWare服务器或路由器中,节点ID即为每个网卡的ID号。所有的网络ID和节点ID都是一个独一无二的“内部IPX地址”。正是由于网络地址的唯一性,才使IPX/SPX具有较强的路由功能。在IPX/SPX协议中,IPX是NetWare最底层的协议,它只负责数据在网络中的移动,并不保证数据是否传输成功,也不提供纠错服务。IPX在负责数据传送时,如果接收节点在同一网段内,就直接按该节点的ID将数据传给它;如果接收节点是远程的,数据将交给NetWare服务器或路由器中的网络ID,继续数据的下一步传输。SPX在整个协议中负责对所传输的数据进行无差错处理,IPX/SPX也叫做“Novell的协议集”。③NwLink通信协议。Windows NT中提供了两个IPX/SPX的兼容协议:“NWLink SPX/SPX兼容协议”和“NWLink NetBIOS”,两者统称为“NWLink通信协议”。NWLink协议是Novell公司IPX/SPX协议在微软网络中的实现,它在继承IPX/SPX协议优点的同时,更适应了微软的操作系统和网络环境。Windows NT网络和Windows的用户,可以利用NWLink协议获得NetWare服务器的服务。从Novell环境转向微软平台,或两种平台共存时,NWLink通信协议是最好的选择。

1.3TCP/IP协议TCP/IP是目前最常用到的一种通信协议,它是计算机世界里的一个通用协议。在局域网中,TCP/IP最早出现在Unix系统中,现在几乎所有的厂商和操作系统都开始支持它。同时,TCP/IP也是Internet的基础协议。①TCP/IP具有很高的灵活性,支持任意规模的网络,几乎可连接所有的服务器和工作站。但其灵活性也为它的使用带来了许多不便,在使用NetBEUI和IPX/SPX及其兼容协议时都不需要进行配置,而TCP/IP协议在使用时首先要进行复杂的设置。每个节点至少需要一个“IP地址”、一个“子网掩码”、一个“默认网关”和一个“主机名”。在Windows NT中提供了一个称为动态主机配置协议(DHCP)的工具,它可自动为客户机分配连入网络时所需的信息,减轻了联网工作上的负担,并避免了出错。同IPX/SPX及其兼容协议一样,TCP/IP也是一种可路由的协议。TCP/IP的地址是分级的,这使得它很容易确定并找到网上的用户,同时也提高了网络带宽的利用率。当需要时,运行TCP/IP协议的服务器(如Win-dows NT服务器)还可以被配置成TCP/IP路由器。与TCP/IP不同的是,IPY4SPX协议中的IPX使用的是一种广播协议,它经常出现广播包堵塞,所以无法获得最佳的网络带宽。②windows中的TCP/IP协议。Windows的用户不但可以使用TCP/IP组建对等网,而且可以方便地接入其它的服务器。如果Windows工作站只安装了TCP/IP协议,它是不能直接加入Windows NT域的。虽然该工作站可通过运行在Windows NT服务器上的代理服务器(如foxy Server)来访问Internet,但却不能通过它登录Windows NT服务器的域。要让只安装TCP/IP协议的Windows用户加入到Windows NT域,还必须在windows上安装NetBEUI协议。③TCP/IP协议在局域网中的配置。只要掌握了一些有关TCP/IP方面的知识,使用起来也非常方便。④IP地址。TCP/IP协议也是靠自己的IP地址来识别在网上的位置和身份的,IP地址同样由“网络ID”和“节点ID”(或称HOST ID,主机地址)两部分组成。一个完整的IP地址用32位(bit)二进制数组成,每8位(1个字节)为一个段(Segment),共4段(Segment1~Segment4),段与段之间用“,”号隔开。为了便于应用,IP地址在实际使用时并不直接用二进制,而是用大家熟悉的十进制数表示,如192.168.0.1等。在选用IP地址时,总的原则是:网络中每个设备的IP地址必须唯一,在不同的设备上不允许出现相同的IP地址。⑤子网掩码。子网掩码是用于对子网的管理,主要是在多网段环境中对IP地址中的“网络ID”进行扩展。例如某个节点的IP地址为192.168.0.1,它是一个C类网。其中前面三段共24位用来表示“网络ID”;而最后一段共8位可以作为“节点ID”自由分配。⑥网关。网关(Gateway)是用来连接异种网络的设置。它充当了一个翻译的身份,负责对不同的通信协议进行翻译,使运行不同协议的两种网络之间可以实现相互通信。如运行TCP/IP协议的Windows NT用户要访问运行IPX/SPX协议的Novell网络资源时,则必须由网关作为中介。如果两个运行TCP/IP协议的网络之间进行互联,则可以使用Windows NT所提供的“默认网关”(Default Gateway)来完成。⑦主机名。网络中唯一能够代表用户或设备身份的只有IP地址。但一般情况下,众多的IP地址不容易记忆,操作起来也不方便。为了改善这种状况,我们可给予每个用户或设备一个有意义的名称,如“HAOYUN”。

2选择网络通信协议的原则

2.1所选协议要与网络结构和功能相一致。如你的网络存在多个网段或要通过路由器相连时,就不能使用不具备路由和跨网段操作功能的NetBEUI协议,而必须选择IPX/SPX或TCP/IP等协议。另外,如果你的网络规模较小,同时只是为了简单的文件和设备的共享,这时你最关心的就是网络速度,所以在选择协议时应选择占用内存小和带宽利用率高的协议,如NetBEUI。当你的网络规模较大,且网络结构复杂时,应选择可管理性和可扩充性较好的协议,如TCP/IP。

2.2除特殊情况外,一个网络尽量只选择一种通信协议。现实中许多人的做法是一次选择多个协议,或选择系统所提供的所有协议,其实这样做是很不可取的。因为每个协议都要占用计算机的内存,选择的协议越多,占用计算机的内存资源就越多。一方面影响了计算机的运行速度,另一方面不利于网络的管理。事实上一个网络中一般一种通信协议就可以满足需要。

2.3注意协议的版本。每个协议都有它的发展和完善过程,因而出现了不同的版本,每个版本的协议都有它最为合适的网络环境。从整体来看,高版本协议的功能和性能要比低版本好。所以在选择时,在满足网络功能要求的前提下,应尽量选择高版本的通信协议。

2.4协议的一致性。如果要让两台实现互联的计算机间进行对话,它们两者使用的通信协议必须相同。否则中间还需要一个“翻译”进行不同协议的转换,这样不仅影响通信速度,同时也不利于网络的安全和稳定运行。

3TCP/IP通信协议的安装、设置和测试

局域网中的一些通信协议,在安装操作系统时会自动安装Net-BEUI通信协议;在安装NetWare时,系统会自动安装IPX/SPX通信协议。在3种协议中,NetBEUI和IPX/SPX在安装后不需要进行设置就可以直接使用,但TCP/IP要经过必要的设置。下面是Windows NT环境下的TCP/P协议的安装、设置和测试方法。①TCP/IP通信协议的安装:在Windows NT中,如果未安装有TCP/IP通信协议,可选择“开始/设置,控制面板,网络”,出现“网络”对话框后,选择对话框中的“协议/添加”命令,选取其中的TCP/IP协议,然后单击“确定”按钮。系统会询问你是否要进行“DHCP服务器”的设置。如果你的IP地址是固定的,可选择“否”。随后,系统开始从安装盘中复制所需的文件。②TCP/IP通信协议的设置:在“网络”对话框中选择已安装的TCP/IP协议,打开其“属性”,在指定的位置输入已分配好的“IP地址”和“子网掩码”。如果该用户还要访问其他Windows NT网络的资源,还可以在“默认网关”处输入网关的地址。③TCP/IP通信协议的测试:当TCP/IP协议安装并设置结束后,为了保证其能够正常工作,在使用前一定要进行测试。笔者建议大家使用系统自带的工具程序PING.EXE,该工具可以检查出任何一个用户是否与同一网段的其他用户连通,是否与其他网段的用户正常连接,同时还能检查出自己的IP地址是否与其他用户的IP地址发生冲突。

4结束语

上一篇:建筑工程施工整改完成报告书下一篇:大一新学期的计划