本帖最后由 chinacn1989 于 2014-11-13 14:13 编辑
关于通信协议相信大家应该看到很多,比如比较常用的:单线协议,IIC协议,spi协议,串口协议,modbus协议,TCP/IP协议。232协议,485协议等等还有很多的协议。大家可能有很多疑问,到底是什么是协议,它具体的作用是什么。对于要了解一个我们应该怎么来学习和使用呢!
要了解这些,要有一个对“协议层(个人想来命名的)”的认识,关于“协议层”都是一层一层叠加上去的,我们就来具体分析下。认识通信协议,通信是交换数据的,数据的构成单位就是bit,byte,frame(帧),数据包,数据信息。
通信传输的就是二进制的0和1数据,然后通过数据来构成一个字节,字节和字节组合构成一帧数据,然后将数据打包,行成数据包,最后通过数据包来看我们需要的是什么样的东西,当然我们单片机经常使用的数据,一般就“协议”到frame(帧)就行了,一般一帧就能够表达我们的意思了,但是有些数据量比较大,速度比较快的数据传输就需要更多的“协议封装”来实现高效率的数据传输。
第一层,协议规定:数据是0还是1。比如单线通信,由于没有时钟线,通常0和1是通过编码来实现的,而且编码是有一定时间范围的,比如曼彻斯特编码电平HL代表1,LH代表0。TTL,232则是通过高电平代表1,低电平代表0,只是二者高低电平的电压等级不一样。IIC则是通过时钟线的边沿时刻来判断高低电平而区分1和0。而485总线中的A-B>200mV为1,A-B<200mV为0。最底层的就可以认为是硬件协议,而且底层中的协议是最基本的,都包含了时间信息,任何协议的时序都是很重要的一个关键,只是不同的协议时序的体现方式不一样而已,大概分为两种:同步和异步(有时钟线和无时钟线),串口通信就是异步通信,没有时钟线,但是却需要时钟基准(波特率)来控制通信时序。
第二层,字节,前面已经有了数据通信是0还是1了,后面就需要把数据组合成我们能够理解的字节数据了,当然不同的通信协议,对应的“字节协议”也是不一样的,单线一般要求有开始位,数据位,校验位,停止位。我们常用的UART也是类似于“单线”通信,因为它每一根数据接收哦,一根为数据发送,485也是“单线”通信,他们的格式基本算是一直的。串口一般配置:9600,n,8,1,表达的含义就是对bit转变成byte的“协议”。而类似于IIC的通信结构基本类似于串口,当到达要求较高的通信时候就会尽量把不需要的去掉,比如SPI通信就是,对比于IIC来说,效率要高些,因为它的一个byte中没有“起始位”没有校验位,没有停止位,都是通过CLK,SS线。来识别数据的开始和结束。这就是协议的第二层。已经算是过度到软规定的“协议”了。
第三层就是frame(帧)协议了,这个就需要在具体的应用中来使用了,比如规定通信的地址,通信的内容,通信的校验,通信的稳定和可靠性,都是通过这一层帧协议来“规定”的。比如我们说RB100通信协议,那么就是属于第三层的协议了,因为第三层的协议已经”比较自由了“,我们在使用中需要按照协议规定来执行,才能高效率的通信。而且针对于这一层的协议,还可以往上继续扩展。协议越丰富,那么协议效率就越高。第三层协议可以套很多的协议框架了,比如MODBUS协议就是第三层协议。规定了地址,寄存器,CRC校验,数据的读取操作等,都是协议内规定的。
多层协议以上的协议,我就没有接触过了,比如TCP/IP协议以太网,蓝牙协议等。我也不太了解,基本没接触过,但是可以给大家讲讲协议升级的原理,就是数据打包,打包越多,效率就越高。比如我要传送1-100,这100个数据,我们可以传送1,2,3,4.5.。。。。。100!这样传送100次,但是我们规定传送的数据为 1,t,o,100(1 to 100) ,这样只需要传送几个字节就是传送完成了100个字节,这就是协议规定的好处!这就是为什么有些通信(TCP/IP),硬件资源用得少,但是通信效率却很高的原因。就是因为它的协议层很完善,多层协议来实现数据传输的高效率!!
相信通过上面的,大家对”协议“有一定认识了吧!
PS:给对单片机通信协议不太理解的新手哈,个人水平有限......
估计:
语言组织混乱!
排版格式难看!
哈哈....
|