单总线协议
- 格式:doc
- 大小:34.00 KB
- 文档页数:2
单总线协议书甲方(提供方):_____________________乙方(接收方):_____________________鉴于甲方拥有单总线技术及相关知识产权,乙方需要使用该技术进行产品开发或服务提供,经双方平等协商,就单总线技术的使用达成如下协议:第一条定义1.1 单总线技术:指甲方拥有的,用于数据传输和控制的单线通信技术。
1.2 知识产权:指与单总线技术相关的所有专利权、著作权、商标权等无形资产。
1.3 产品:指乙方使用单总线技术开发的任何硬件或软件产品。
第二条授权范围2.1 甲方授权乙方非独占性使用单总线技术,用于乙方的产品开发和销售。
2.2 授权期限自本协议生效之日起至本协议终止之日止。
第三条授权费用3.1 乙方应向甲方支付一次性授权费用人民币_______元(大写:_______元整)。
3.2 授权费用应在本协议签订之日起_______个工作日内一次性支付给甲方。
第四条知识产权4.1 甲方保证拥有单总线技术的完整知识产权,并有权授予乙方使用。
4.2 乙方不得侵犯甲方的知识产权,包括但不限于专利权、著作权、商标权等。
4.3 乙方应尊重甲方的知识产权,未经甲方书面同意,不得将单总线技术用于任何其他目的。
第五条技术支持与服务5.1 甲方应向乙方提供必要的技术支持,帮助乙方顺利实施单总线技术。
5.2 甲方应保证所提供的技术支持的质量,确保乙方能够正常使用单总线技术。
第六条保密条款6.1 双方应对本协议内容及在履行协议过程中知悉的对方商业秘密予以保密。
6.2 未经对方书面同意,任何一方不得向第三方披露、泄露或允许第三方使用上述保密信息。
第七条违约责任7.1 如一方违反本协议的任何条款,违约方应赔偿对方因此遭受的所有损失。
7.2 因不可抗力导致任何一方不能履行或完全履行本协议的,该方不承担违约责任。
第八条协议的变更与解除8.1 本协议的任何变更和补充,必须经双方协商一致,并以书面形式确认。
8.2 双方均可在提前_______天书面通知对方的情况下解除本协议。
单总线协议详解单总线协议详解单总线即one-wire总线,是美国DALLAS公司推出的外围串行扩展总线技术。
与SPI、IC串行数据通信方式不同.它采用单根信号线,既传输时钟又传输数据,而且数据传输是双向的,具有节省I/O口线、资源结构简单、成本低廉、便于总线扩展和维护等诸多优点。
单总线是DALLAS公司研制开发的种协议由一个总线主节点、或多个从节点组成系统,通过根信号线对从芯片进行数据的读取。
每一个符合OneWire协议的从芯片都有一个唯一的地址,包括48位的序列号、8位的家族代码和8位的CRC代码。
主芯片对各个从芯片的寻址依据这64位的不同来进行。
单总线利用一根线实现双向通信。
因此其协议对时序的要求较严格,如应答等时序都有明确的时间要求。
,基本的时序包括复位及应答时序、写一位时序、读一位时序。
在复位及应答时序中,主器件发出复位信号后,要求从器件在规定的时间内送回应答信号;在位读和位写时序中,主器件要在规定的时间内读固或写出数据。
单总线适用于单主机系统,能够控制一个或多个从机设备。
主机可以是微控制器,从机可以是单总线器件,它们之间的数据交换只通过一条信号线。
当只有一个从机设备时,系统可按单节点系统操作;当有多个从设备时,系统则按多节点系统操作。
单总线工作原理单总线器件内部设置有寄生供电电路(Parasite Power Circuit)。
当单总线处于高电平时,一方面通过二极管VD向芯片供电,另方面对内部电容C(约800pF)充电;当单总线处于低电平时,二极管截止,内部电容c向芯片供电。
由于电容c的容量有限,因此要求单总线能间隔地提供高电平以能不断地向内部电容C充电、维持器件的正常工作。
这就是通过网络线路窃取电能的寄生电源的工作原理。
要注意的是,为了确保总线上的某些器件在工作时(如温度传感器进行温度转换、E2PROM写人数据时)有足够的电流供给,除了上拉电阻之外,还需要在总线上使用MOSFET(场效应晶体管)提供强上拉供电。
单总线通信协议Single Bus Communication Protocol。
Introduction。
Single bus communication protocol is a communication standard used in computer systems to connect different devices and peripherals. It is a simple and efficient way of transmitting data between devices on a single communication line. In this article, we will discuss the features, advantages, and applications of the single bus communication protocol.Features。
The single bus communication protocol has several features that make it a popular choice for connecting devices in computer systems. Some of these features are:1. Simple and efficient: The single bus communicationprotocol is a simple and efficient way of transmitting data between devices. It uses a single communication line to transmit data, which reduces the complexity of the system and makes it more efficient.2. Low cost: Since the single bus communication protocol uses a single communication line, it is a low-cost solution for connecting devices in computer systems.3. Scalable: The single bus communication protocol is scalable, which means that it can be used to connect a large number of devices in a computer system.4. Easy to implement: The single bus communication protocol is easy to implement, which means that it can be used by both hardware and software developers to connect devices in computer systems.Advantages。
单线总线通讯协议
单线总线通讯协议
采用两根线进行通讯的通讯线路叫单线总线通讯(地线和数据线,数据线同时为从机提
供电源,主机和从机在一定的条件下可以转换)。
电路结构如下:
如果是从机,可以通过D3从总线取电,以获取工作电源。
发送端通过Q1、R2、D4将总线拉低,用以传送数据。
总线有数据传送,总线变低电平,接受端也变成低电平总线是高电平(12V),接受端
也是搞电平(3V),从而实现了数据的接受。
发送端发送数据的时候,可以通过接受端进行数据侦听。
数据传递如下:
空闲时为高电平,开始为1t的低电平,紧接着是比特率自适应校准位为1t高电平和1t
低电平,接着传递数据,1为3t高电平+1t低电平;0为1t高电平+3t低电平,数据传递完成后是一位结束位,4t的高电平,之后是空闲状态,
此数据传递格式可以用于无线传递数据,
发送可以使用任意10 口,接受使用外部中断接口,关联定时器进行接受处理。
单总线协议与其他所有的数据通信传输方式一样,单总线芯片在数据传输过程要求采用严格的通信协议,以保证数据的完整性。
单总线芯片在数据传输过程中,每个单总线芯片都拥有唯一的地址,系统主机一旦选中某个芯片,就会保证通信连接直到复位,其他器件则全部脱离总线,在下次复位之前不参与任何通信。
为了说明单总线数据传输的过程,以下将分4个部分对单总线数据通信传输过程进行介绍,它们分别是单总线通信信号类型,单总线通信初始化,单总线通信的ROM命令以及单总线通信的功能命令。
1.1单总线通信信号类型单总线通信协议定义了如下几种类型,即复位脉冲、应答脉冲、写0、写1、读0和读1,除了应答脉冲外,所有的信号都由主机发出同步信号,并且发送的所有的命令和数据都是字节的低位在前。
单总线通信协议中不同类型的信号都采用一种类似脉宽调制的波形表示,逻辑0用较长的低电平持续周期表示,逻辑1用较长的高电平持续周期表示。
在单总线通信协议中,读写时隙的概念十分重要,当系统主机向从设备输出数据时产生写时隙,当主机从从机设备读取数据时产生读时隙,每一个时隙总线只能传输一位数据。
无论是在读时隙还是写时隙,它们都以主机驱动数据线位低电平开始,数据线的下降沿是从设备触发其内部的延时电路,使之与主机同步。
在写时隙内,该延迟电路决定从设备采样数据线的时间窗口。
单总线通信协议中存在两种写时隙:写1和写0。
主机采用写1时隙向从机写入1,而采用写0时隙向从机写入0,。
所有写时隙至少要60us,且在两次独立的写时隙之间至少需要1us的恢复时间。
两种写时隙均起始于主机拉低数据总线。
产生1时隙的方式:主机拉低总线后,接着必须在15us之内释放总线,由上拉电阻将总线拉至高电平;产生写0时隙的方式为在主机拉低后,只需要在整个时隙间保持低电平即可(至少60us)。
在写时隙开始后15us~60us期间,单总线器件采样总电平状态。
如果在此期间采样值为高电平,则逻辑1被写入器件;如果为0,写入逻辑0。
单总线协议-以DS18B20举例一、概述1-wire 单总线是Maxim 全资子公司Dallas 的一项专有技术。
与目前多数标准串行数据通信方式,如SPI/I2C/MICROWIRE 不同,它采用单根信号线,既传输时钟,又传输数据,而且数据传输是双向的。
它具有节省I/O 口线资源、结构简单、成本低廉、便于总线扩展和维护等诸多优点。
1-wire 单总线适用于单个主机系统,能够控制一个或多个从机设备。
当只有一个从机位于总线上时,系统可按照单节点系统操作;而当多个从机位于总线上时,则系统按照多节点系统操作。
为了较为全面地介绍单总线系统,将系统分为三个部分讨论:硬件结构、命令序列和信号方式信号类型和时序。
二、硬件结构顾名思义,单总线只有一根数据线。
设备(主机或从机)通过一个漏极开路或三态端口,连接至该数据线,这样允许设备在不发送数据时释放数据总线,以便总线被其它设备所使用。
单总线端口为漏极开路其内部等效电路如图1 所示。
单总线要求外接一个约5k 的上拉电阻;这样,单总线的闲置状态为高电平。
不管什么原因,如果传输过程需要暂时挂起,且要求传输过程还能够继续的话,则总线必须处于空闲状态。
位传输之间的恢复时间没有限制,只要总线在恢复期间处于空闲状态(高电平)。
如果总线保持低电平超过480us,总线上的所有器件将复位。
另外在寄生方式供电时,为了保证单总线器件在某些工作状态下(如温度转换期间EEPROM写入等)具有足够的电源电流,必须在总线上提供强上拉(如图1所示的MOSFET )。
三、命令序列典型的单总线命令序列如下:第一步:初始化第二步:ROM命令(跟随需要交换的数据)第三步:功能命令(跟随需要交换的数据)每次访问单总线器件,必须严格遵守这个命令序列,如果出现序列混乱,则单总线器件不会响应主机。
但是,这个准则对于搜索ROM命令和报警搜索命令例外,在执行两者中任何一条命令之后,主机不能执行其后的功能命令,必须返回至第一步。
1. 讲废话小弟最近做了一个项目(用Lattice的CPLD),话说前面还算顺利,就在即将完工的时候,发现(TMD)I/O不够用,有一功能需要CPLD传输8bit数据到另一个控制器做进一步处理,but现在仅剩下一个I/O,好吧,我被卡死在这里了。
终于,在一个月黑风高的夜晚(本人喜欢把气氛营造的悲壮一点,嘎嘎。
),突然想到DS18B20的单总线传输协议,以前也了解过其他的协议,心想,为嘛自己不整一个类似的东东出来yy 一下呢,所以有了此贴。
解释一下,本次原创单总线传输协议命名为b2s(不才,取了个类似I2C的名,由于本人有一个贱贱的英文名Bob,所以用了b,各位轻喷啊;s代表single,意为单线传输),本协议含传送端(transmitter)和接收端(receiver)两部分,基于verilog语言,仅使用单个I/O口进行多位数据的传输,传输方向为单向,用于I/O不够用的情况,亲测绝对可用,如果大家以后有用得到的时候,可以直接拿来使用。
本人拥抱开源,所有源码能贴出来尽量贴出来,为大家节省积分,攒RP。
废话完毕,下面为各位客官准备干货。
2. 晒干货ps. 带★号处可根据需要进行修改.发送端源码:/*********************************************************************** *******************Author: Bob LiuE-mail:*************************File Name: b2s_transmitter.vFunction: b2s发送端, 默认发送32bit数据,数据宽度可更改Version: 2013-5-13 v1.0************************************************************************ ********************/module b2s_transmitter(clk, //时钟基准,不限频率大小,但必须与接收端一致din, //待发送数据b2s_dout //b2s数据输出端口);parameter WIDTH=32; //★设定b2s发送数据的位宽,可根据需要进行更改input clk;input [WIDTH-1:0] din;output b2s_dout;//===================================================== =========//b2s数据发送时序//===================================================== =========reg b2s_dout_r;reg [3:0] state;reg [9:0] cnt;reg [4:0] count; //★与发送数据位宽保持一致(如发送32bit数据时,count宽度为5;发送8bit时,count宽度为4)always @ (posedge clk)begincase(state)//初始化0: begincount<=0;b2s_dout_r<=1;if(cnt==19) //b2s_dout_r高电平持续20个时钟beginstate<=1;cnt<=0;endelsebegincnt<=cnt+1;endend//开始信号时序1: beginb2s_dout_r<=0;if(cnt==19) //b2s_dout_r低电平持续20个时钟beginstate<=2;cnt<=0;endelsebegincnt<=cnt+1;endend2: beginb2s_dout_r<=1;if(cnt==19) //b2s_dout_r高电平持续20个时钟begincnt<=0;state<=3;endelsebegincnt<=cnt+1;endend//待发送数据的逻辑电平判断3: beginif(din[count]==1)state<=4;elsestate<=8;end//逻辑1的发送时序4: beginb2s_dout_r<=0;if(cnt==9) //b2s_dout_r低电平持续10个时钟begincnt<=0;state<=5;endelsebegincnt<=cnt+1;endend5: beginb2s_dout_r<=1;if(cnt==29) //b2s_dout_r高电平持续30个时钟begincnt<=0;state<=6;endelsebegincnt<=cnt+1;endend//逻辑0的发送时序8: beginb2s_dout_r<=0;if(cnt==29) //b2s_dout_r低电平持续30个时钟begincnt<=0;state<=9;endelsebegincnt<=cnt+1;endend9: beginb2s_dout_r<=1;if(cnt==9) //b2s_dout_r高电平持续10个时钟begincnt<=0;state<=6;endelsebegincnt<=cnt+1;endend//统计已发送数据位数6: begincount<=count+1'b1;state<=7;end7: beginif(count==WIDTH) //当一组数据所有位发送完毕,返回并继续下一次发送beginb2s_dout_r<=1;if(cnt==999) //b2s_dout_r高电平持续1000个时钟begincnt<=0;state<=0;endelsebegincnt<=cnt+1;endendelse //当一组数据未发送完毕,则继续此组下一位数据的发送state<=3;end//default值设定default: beginstate<=0;cnt<=0;count<=0;endendcaseendassign b2s_dout=b2s_dout_r;endmodule接收端源码:/*********************************************************************** *******************Author: Bob LiuE-mail:*************************File Name: b2s_receiver.vFunction: b2s接收端, 默认接收32bit数据,接收数据宽度请与发送端发送数据宽度保持一致Version: 2013-5-13 v1.0************************************************************************ ********************/module b2s_receiver(clk, //时钟基准,不限频率大小,但必须与发送端一致b2s_din, //b2s发送端发送过来的信号dout //b2s接收端解码出的数据);parameter WIDTH=32; //★设定b2s接收数据位数, 默认接收32bit数据,接收数据宽度请与发送端发送数据宽度保持一致input clk;input b2s_din;output [WIDTH-1:0] dout;//================================================== //b2s_din信号边沿检测//================================================== reg [1:0] b2s_din_edge=2'b01;always @ (posedge clk)beginb2s_din_edge[0] <= b2s_din;b2s_din_edge[1] <= b2s_din_edge[0];end//================================================== //time_cnt -- 存储b2c_din信号下降沿及其最近的下一个上升沿之间的时间//================================================== reg [1:0] state0;reg [5:0] time_cnt_r;always @ (posedge clk)begincase(state0)0: begintime_cnt_r<=0;state0<=1;end1: beginif(b2s_din_edge==2'b10)state0<=2;elsestate0<=state0;end2: beginif(b2s_din_edge==2'b01)beginstate0<=0;endelsetime_cnt_r<=time_cnt_r+1'b1;enddefault: begintime_cnt_r<=0;state0<=0;endendcaseendwire [5:0] time_cnt;assign time_cnt=(b2s_din_edge==2'b01)?time_cnt_r:'b0; //当b2s_din上升沿瞬间,读取time_cnt_r的值//==================================================//b2s解码时序//==================================================reg [2:0] state;reg [4:0] count; //★与接收数据位数保持一致(如接收32bit数据时,count宽度为5;接收8bit时,count宽度为4)reg [WIDTH-1:0] dout_r;always @ (posedge clk)begincase(state)0: begincount<=WIDTH;if((time_cnt>15)&&(time_cnt<25)) //判断起始信号state<=1;elsestate<=state;end1: beginif((time_cnt>5)&&(time_cnt<15)) //判断接收到的位是否为1begindout_r[WIDTH-1]<=1;state<=2;endelse if((time_cnt>25)&&(time_cnt<35)) //判断接收到的位是否为0begindout_r[WIDTH-1]<=0;state<=2;endelsebeginstate<=state;endend2: begincount<=count-1'b1; //每读取一个bit,count计数减1state<=3;end3: if(count==0) //数据读取完毕,返回并继续下一组数据的读取beginstate<=0;endelsestate<=4; //数据未读取完毕,则进行移位 4: begindout_r<=(dout_r>>1); //数据右移1位state<=1;enddefault: beginstate<=0;count<=WIDTH;endendcaseendassign dout=(count==0)?dout_r:dout; //每当一组数据读取完毕,则更新一次dout的值endmodule也许有些盆友第一次看到上面的代码,不知如何调用,所以下面给出调用示例作为参考。
单总线通信协议原理
单总线通信协议是一种用于在电子设备之间进行通信的协议。
它通常用于连接多个设备,例如传感器、执行器或其他外围设备,以便它们可以相互通信并与主控制器进行数据交换。
单总线通信协议的原理涉及到以下几个方面:
1. 物理连接,单总线通信协议通常使用一根物理线路来连接所有设备。
这意味着所有设备都共享同一根线路来发送和接收数据。
这种物理连接方式可以减少硬件成本和连接复杂度。
2. 数据传输,在单总线通信协议中,数据是通过时间分割的方式进行传输的。
每个设备在特定的时间段内可以发送或接收数据。
这种时间分割的机制可以确保不同设备之间的通信不会发生冲突。
3. 碰撞检测,由于多个设备共享同一根物理线路,可能会出现数据碰撞的情况,即两个设备同时发送数据导致数据混乱。
单总线通信协议通常会包含碰撞检测机制,以便在发生碰撞时能够及时发现并进行处理。
4. 协议规范,单总线通信协议还包括了数据帧的格式、地址分
配、错误检测和纠正等规范。
这些规范确保了设备之间可以按照统
一的标准进行通信,提高了通信的可靠性和稳定性。
总的来说,单总线通信协议的原理是通过共享一根物理线路、
时间分割的数据传输、碰撞检测和协议规范来实现设备之间的通信。
这种协议在一些特定的应用场景下具有一定的优势,但也需要注意
碰撞和数据混乱等问题。
非标准单总线协议辅助分析工具WYT一、探究背景从事电子行业的朋友,特别是从事嵌入式工作的朋友,都知道逻辑分析仪这个工具,用它来抓协议是非常方便可靠的。
基本上所有的标准总线协议,逻辑分析仪都能分析出来。
但是,对于非标准的协议,逻辑分析仪就无能为力了。
因为逻辑分析仪所分析的协议是标准的、已知的、预编程分析的。
所以,有必要对非标准的协议进行处理。
接下来,我会在本文中讨论和制作一种非标准单总线协议辅助工具。
二、单总线的特点单总线,就是主机和从机在一根线上来回传输数据。
由于只有一根线,所以数据和时钟都包含在内,它的传输时“半双工”的,即可以主机发从机收或者从机发主机收。
有两种方向但不能同时进行,所以称为“半双工”。
还有就是,总线空闲时,一定是高电平,一般需要外接上拉电阻把总线拉高。
主机和从机的通信端口一般都是配置为输入悬浮,即端口本身不接上拉电阻和下拉电阻,端口本身的电平是不确定的,所以需要外接一个上拉电阻将总线拉高。
在通信时,发送方端口被配置为输出模式来拉低电平,端口被配置为输入悬浮来释放总线;接收方的端口配置为输入悬浮、下降沿中断来检测和获取数据。
值得注意的是,单总线对时序比较敏感,如果传输的数据时序稍微有偏差,通信往往就失败。
DS18B20温度传感器就是标准单总线协议通信的,这个比较典型,网上也有很多例程和讲解,单总线入门可以从DS18B20开始。
三、非标准单总线分析的难点虽然是非标准的单总线,但其硬件方面还是跟标准的单总线一样。
不同的地方就是是传输协议了,有许多产品采用非标准单总线协议来识别自家产品,比如日本的数码相机电池、PSP掌机电池、部分手机电池等。
它们采用非标准协议主要是防止别人生产兼容产品,而且价格也是比较高的,当然对消费者是不利的。
以相机和电池通信为例。
把相机和电池的通信端子和它们的负极用线引出来,都接到逻辑分析仪上,我们会看到一大堆高低电平通信,而且还不是标准的单总线协议,根本无从下手。
单总线协议单总线协议简介单总线协议(Single Bus Protocol)是一种用于在电子设备中进行通信的协议。
它使用一个共享的总线来传输数据和命令,并支持多个设备同时连接到总线上。
单总线协议具有简单、低成本和灵活性等优点,因此在许多应用中得到广泛采用。
单总线协议的基本原理是将数据和命令放置在总线上进行传输。
在传输过程中,总线上的信号被不同的设备监听和解析。
由于总线上只包含一个信号线,因此所有设备必须共享这个信号线来进行通信。
这就需要在协议中定义一种机制来处理冲突,以确保各个设备能够正确地接收数据和命令。
在单总线协议中,各个设备的工作方式被划分为两种模式:主模式和从模式。
主设备负责发出命令和发送数据,而从设备负责接收命令和接收数据。
在总线上,主设备会发送一个起始位作为命令的开始,从设备会发送一个应答位作为命令的确认。
通过在总线上发送和接收不同的位和字节,设备之间可以进行复杂的数据交互。
由于单总线协议的灵活性,它可以应用于各种不同的领域。
例如,它可以在计算机系统中用于处理外围设备的通信,或者在物联网设备中用于传输传感器数据。
此外,由于单总线协议的简单性,它还可以用于一些低成本的应用,如家电控制系统和智能家居系统。
然而,单总线协议也存在一些挑战和限制。
由于所有设备共享同一个总线,因此总线的带宽可能会成为瓶颈。
此外,在数据传输过程中可能会发生冲突和错误,需要采取合适的机制来解决这些问题。
同时,由于总线上的信号线只有一个,如果其中一个设备发生故障或出现通信问题,可能会影响到其他设备的正常工作。
总之,单总线协议是一种用于电子设备通信的简单、低成本和灵活性较高的协议。
它使用一个共享的总线来传输数据和命令,并支持多个设备同时连接到总线上。
虽然它具有一些挑战和限制,但在许多应用中仍然得到广泛采用。
随着技术的不断发展,相信单总线协议将在未来发挥更重要的作用,为更多领域的设备通信提供解决方案。
1wire总线协议
1wire总线协议是一种串行通信协议,它能够通过一根数据线进行数据传输和供电。
它最初由达拉斯半导体公司(Dallas Semiconductor)开发,后来被收购并成为Maxim Integrated公司的一部分。
1wire总线协议被广泛应用于温度传感器、湿度传感器、电压传感器等各种传感器设备中。
1wire总线协议的特点之一是只需要一根数据线就能完成数据传输和供电,这使得它在一些对线缆数量有限的场合中具有很大的优势。
此外,1wire总线协议还具有较高的抗干扰能力,能够在恶劣的环境中稳定工作。
在1wire总线协议中,每个设备都有一个唯一的64位ROM码,这个码是由厂商分配的,保证了每个设备的唯一性。
通过这个唯一的ROM码,系统可以识别和区分不同的传感器设备,从而实现对它们的管理和控制。
1wire总线协议的通信速率比较低,一般在16.3kbps左右,但对于一些低速传感器设备来说已经足够。
此外,1wire总线协议还支持多主机系统,多个1wire设备可以连接到同一条总线上,由主机控制各个设备的访问。
在1wire总线协议中,数据的传输是通过脉冲宽度调制(Pulse Width Modulation)来实现的,这种方式能够很好地抵抗传输过程中的干扰。
此外,1wire 总线协议还支持数据的校验和错误检测,保证了数据传输的可靠性。
总的来说,1wire总线协议是一种简单、灵活、可靠的串行通信协议,适用于各种传感器设备的应用场合。
它的低成本、低线缆数量、高抗干扰能力等特点,使得它在一些特定的领域中具有很大的优势。
随着物联网技术的发展,1wire总线协议有望在更多的领域得到应用和推广。
单总线协议与其他所有的数据通信传输方式一样,单总线芯片在数据传输过程要求采用严格的通信协议,以保证数据的完整性.单总线芯片在数据传输过程中,每个单总线芯片都拥有唯一的地址,系统主机一旦选中某个芯片,就会保证通信连接直到复位,其他器件则全部脱离总线,在下次复位之前不参与任何通信。
为了说明单总线数据传输的过程,以下将分4个部分对单总线数据通信传输过程进行介绍,它们分别是单总线通信信号类型,单总线通信初始化,单总线通信的ROM命令以及单总线通信的功能命令。
1。
1单总线通信信号类型单总线通信协议定义了如下几种类型,即复位脉冲、应答脉冲、写0、写1、读0和读1,除了应答脉冲外,所有的信号都由主机发出同步信号,并且发送的所有的命令和数据都是字节的低位在前。
单总线通信协议中不同类型的信号都采用一种类似脉宽调制的波形表示,逻辑0用较长的低电平持续周期表示,逻辑1用较长的高电平持续周期表示。
在单总线通信协议中,读写时隙的概念十分重要,当系统主机向从设备输出数据时产生写时隙,当主机从从机设备读取数据时产生读时隙,每一个时隙总线只能传输一位数据。
无论是在读时隙还是写时隙,它们都以主机驱动数据线位低电平开始,数据线的下降沿是从设备触发其内部的延时电路,使之与主机同步。
在写时隙内,该延迟电路决定从设备采样数据线的时间窗口。
单总线通信协议中存在两种写时隙:写1和写0。
主机采用写1时隙向从机写入1,而采用写0时隙向从机写入0,。
所有写时隙至少要60us,且在两次独立的写时隙之间至少需要1us的恢复时间。
两种写时隙均起始于主机拉低数据总线。
产生1时隙的方式:主机拉低总线后,接着必须在15us之内释放总线,由上拉电阻将总线拉至高电平;产生写0时隙的方式为在主机拉低后,只需要在整个时隙间保持低电平即可(至少60us).在写时隙开始后15us~60us期间,单总线器件采样总电平状态.如果在此期间采样值为高电平,则逻辑1被写入器件;如果为0,写入逻辑0.图1—1给出了写时隙(包括1和0)时序的图形解释。
单总线协议(ds18b20)读写详解1、时序图2、51c代码3、总结1、时序图1、初始化2、写3、读2、代码#include ;sbit DQ = P2^0;//定义总线的I/O管脚void SendByte(unsigned char dat);void Delay4us()//延时4us{;}void Delay(unsigned char j)//一个循环15us{unsigned char i;while(j--){i = 5;while(--i);}}bit d18b20_qs()//18b20 起始{bit dat;DQ = 1;//DQ复位Delay4us();DQ = 0;//拉低总线Delay(35);//这里延时大概 525usDQ = 1;//拉高总线Delay(2); //这里延时大概 30usdat = DQ;//读取返回值(0:有18b20存在 1:是没有)Delay(2);return dat;//返回数值}void d18b20_x(unsigned char dat) //写 8 位数据{unsigned char i;for(i=0;i;>;= 1;//数据右移一位}}unsigned char d18b20_d()//读 8 位数据{unsigned char i,dat=0;for(i=0;i;>;= 1;//数据右移一位DQ = 1;//拉过总线(准备读取数据)if(DQ)//判断是否是 1 如果是就把数据赋值给变量的高位dat |=0x80;Delay(4);}return dat; //返回读取到数据数据}unsigned int wd()//读取温度函数{unsigned char i = 0;//低8位数据unsigned char j = 0;//高8位数据unsigned int k = 0;//无符号16整形用来存储读回来的16位温度数据(j和i组合后的数据)d18b20_qs();//初始化d18b20_x(0xCC);//跳过序列号的操作(因为18b20在总线上可以挂很多个,这个序列号和网卡MAC地址类似)d18b20_x(0x44);//开启温度转换Delay(200);//开启温度转换需要时间这里延时一下d18b20_qs();//初始化d18b20_x(0xCC);//跳过序列号的操作(因为18b20在总线上可以挂很多个,这个序列号和网卡MAC地址类似)d18b20_x(0xBE);//读取温度寄存器等(共可读9个寄存器)前两个就是温度i =d18b20_d();//读取低8位j = d18b20_d();//读取高8位k = j;k ;>; 8)&0xff;//取高8位SendByte(j);//通过串口把高8位数据返回给上位机SendByte(i);//通过串口把低8位数据返回给上位机P1 = j;//使用8个LED输出高8位数据Delay(200);//延时3毫秒Delay(200);//延时3毫秒Delay(200);//延时3毫秒Delay(200);//延时3毫秒Delay(200);//延时3毫秒Delay(200);//延时3毫秒Delay(200);//延时3毫秒Delay(200);//延时3毫秒Delay(200);//延时3毫秒Delay(200);//延时3毫秒P1 = i;//使用8个LED输出低8位数据Delay(200);//延时3毫秒Delay(200);//延时3毫秒Delay(200);//延时3毫秒Delay(200);//延时3毫秒Delay(200);//延时3毫秒Delay(200);//延时3毫秒Delay(200);//延时3毫秒Delay(200);//延时3毫秒Delay(200);//延时3毫秒Delay(200);//延时3毫秒}} 3、总结1)使用的是11.0592的晶振2)使用下面的公式可以计算出摄氏度的温度wd :读取到的16位数据摄氏度 = wd x 0.0625。
单总线协议简介单总线协议是一种用于在微控制器和外部设备之间进行通信的协议。
它通过使用单根线路来传输数据和控制信号,简化了通信的硬件设计,并提供了简单、低成本的解决方案。
工作原理单总线协议通过在线路上使用时间分割的方式实现数据和控制信号的传输。
具体而言,每个数据位或控制信号都使用一定的时间段表示,例如高电平表示逻辑1,低电平表示逻辑0。
通过在不同时间段内改变信号的电平状态,可以实现信息的传输。
总线结构在单总线协议中,存在一个主控设备和多个从属设备的通信网络。
主控设备负责生成时序信号以及向总线上发送和接收数据,而从属设备根据主控设备的指令来进行响应。
数据传输数据传输是单总线协议的核心。
在数据传输过程中,主控设备首先发送一个引导信号,以通知所有从属设备即将进行数据传输。
然后,主控设备按照一定的时间序列发送数据位,从属设备在每个时间段内对数据进行采样。
数据传输完成后,主控设备发送结束标志信号,以告知从属设备传输结束。
优点单总线协议有以下几个优点:1.简化硬件设计:单总线协议只需要一根线路,相比于其他多线协议,可以大大减少硬件成本和复杂度。
2.低成本:由于只需要一根线路,单总线协议的硬件和线缆成本较低。
3.易于实现:单总线协议的工作原理相对简单,容易实现和理解。
4.可靠性高:单总线协议通过引导信号和结束标志信号来通知数据传输的开始和结束,确保数据的可靠传输。
应用场景单总线协议广泛应用于各种微控制器和外设设备之间的通信,特别适用于资源有限的应用场景。
以下是一些常见的应用场景:1.温度传感器:单总线协议可以用于将温度传感器与主控设备连接,实现温度数据的实时采集和传输。
2.LED控制:通过单总线协议,主控设备可以控制多个LED灯的开关、亮度和颜色。
3.电动机控制:单总线协议可以用于控制电动机的速度和方向,实现精确的运动控制。
4.智能家居:通过单总线协议,各种传感器和执行器可以与智能家居系统连接,实现自动化控制。
单总线通信协议单总线通信协议是一种用于在数字系统中进行通信的协议,它允许多个设备通过共享单一的通信线进行数据传输。
这种通信方式在许多嵌入式系统和传感器网络中被广泛应用,因为它可以减少通信线的数量,降低系统成本,并简化硬件设计。
单总线通信协议的特点之一是它使用单一的通信线路来进行数据传输。
这意味着所有设备都共享同一根线路来发送和接收数据。
这种设计可以减少系统中所需的线路数量,从而减小系统的复杂度和成本。
此外,单总线通信协议还可以通过使用地址和数据标识符来实现多设备之间的通信,从而使得系统中的设备可以灵活地进行数据交换和通信。
在单总线通信协议中,每个设备都有一个唯一的地址标识符,这个标识符用于区分不同的设备。
当一个设备需要向另一个设备发送数据时,它首先发送目标设备的地址标识符,然后发送数据内容。
接收设备会通过比较接收到的地址标识符和自身的地址标识符来确定是否接收数据。
这种方式可以确保数据只被发送到目标设备,从而提高通信的效率和安全性。
另一个单总线通信协议的特点是它可以通过主从模式来实现多设备之间的通信。
在这种模式下,一个设备充当主设备,负责控制总线上的通信操作;而其他设备充当从设备,负责响应主设备的指令并进行数据交换。
这种模式可以有效地协调多个设备之间的通信,避免数据冲突和混乱,从而提高系统的稳定性和可靠性。
单总线通信协议还可以通过使用校验位来确保数据传输的准确性。
在数据传输过程中,发送设备会在数据包的末尾添加一个校验位,用于验证数据的完整性和正确性。
接收设备会在接收到数据后对数据进行校验,如果校验失败,则会请求重新发送数据。
这种方式可以有效地避免数据传输过程中的错误和丢失,从而提高通信的可靠性和稳定性。
总的来说,单总线通信协议是一种简单而有效的通信方式,它可以通过减少通信线路数量、使用地址和数据标识符、采用主从模式和使用校验位等方式来实现多设备之间的高效、安全和可靠的通信。
在嵌入式系统和传感器网络中,单总线通信协议的应用将会继续扩大,并为数字系统的通信提供更加灵活和高效的解决方案。
串口单总线例程1.引言1.1 概述概述在嵌入式系统开发中,串口单总线是一种常用的通信协议。
它通过一个单独的数据线连接多个设备,实现设备间的数据交换和通信。
串口单总线具有简单、灵活、成本低廉等优点,因此在很多应用场景下被广泛应用。
本文将重点介绍串口单总线的实例应用,并详细讲解其原理和实现方法。
通过对这一应用的深入剖析,读者可以了解串口单总线的工作原理和使用技巧,从而可以在自己的项目中灵活应用和扩展。
本文包含三个主要部分。
首先我们将在引言中介绍本文的结构和目的,为读者提供整体的内容概述。
然后,在正文部分将逐步详细讲解串口单总线的要点和关键技术。
最后,在结论中对本文进行总结和回顾,并提出对未来发展的展望。
通过本文的阅读,读者将会了解到串口单总线的基本原理、通信流程以及常见的应用场景。
在实际应用中,串口单总线可以用于各种设备之间的通信,比如温度传感器、湿度传感器、运动控制模块等等。
掌握了串口单总线的知识,读者可以更加灵活地搭建嵌入式系统,并提高系统的性能和稳定性。
下面,我们将进入正文部分,首先介绍串口单总线的第一个要点。
1.2 文章结构文章结构部分的内容应该介绍整篇文章的组织结构和各个部分的主要内容。
根据提供的目录,可以按以下方式撰写文章结构的内容:2. 文章结构本文将按照以下结构进行组织和呈现:2.1 第一个要点这一部分将详细介绍关于串口单总线的概念、基本原理以及其在实际应用中的作用和优势。
2.2 第二个要点接下来的部分将进一步探讨串口单总线的使用方法和开发实例。
通过具体的例程演示,我们将介绍如何在不同平台上利用串口单总线进行数据通信,并给出相应的代码示例和操作步骤。
在这两个要点中,我们将深入理解串口单总线的工作原理,包括数据传输、通信协议和硬件连接等方面的知识。
同时,我们将演示如何使用串口单总线进行数据采集、控制以及与其他设备的接口操作等实际应用。
通过本文的阅读,读者将能够全面了解串口单总线的基本原理和使用方法,具备在相关项目中进行串口单总线开发的基础知识和技能。
单总线通信协议单总线通信协议是一种用于在单根传输线上进行数据通信的协议。
它通常用于连接各种传感器、执行器和其他外围设备,以实现设备之间的数据交换和控制。
单总线通信协议具有简单、低成本、易于实现等特点,因此在物联网、智能家居、工业控制等领域得到了广泛的应用。
单总线通信协议的工作原理是通过在同一根传输线上发送和接收数据来实现设备之间的通信。
在传输数据时,每个设备都需要遵循一定的通信规则,以确保数据能够正确地传输和解析。
通常情况下,单总线通信协议包括数据帧的格式、数据的发送和接收规则、数据的校验和纠错等内容。
在单总线通信协议中,数据帧的格式是非常重要的。
它定义了在传输线上发送的数据的结构和编码方式。
通常情况下,数据帧包括起始位、数据位、校验位和停止位等部分。
起始位用于指示数据帧的开始,数据位用于存储实际的数据内容,校验位用于检测数据的正确性,停止位用于标识数据帧的结束。
通过严格定义数据帧的格式,可以确保设备之间能够正确地解析和处理传输的数据。
除了数据帧的格式外,单总线通信协议还规定了数据的发送和接收规则。
在发送数据时,设备需要按照一定的时间间隔和顺序发送数据帧,以避免数据冲突和碰撞。
在接收数据时,设备需要根据预先定义的规则来解析和处理接收到的数据帧,以确保数据能够正确地被识别和利用。
此外,单总线通信协议还包括数据的校验和纠错功能。
通过在数据帧中添加校验位,可以检测数据传输过程中的错误和丢失。
同时,通过在数据帧中添加纠错码,可以对部分错误的数据进行自动纠正,以提高数据传输的可靠性和稳定性。
总的来说,单总线通信协议是一种简单、高效、可靠的通信方式,它适用于各种嵌入式系统和物联网设备。
通过遵循一定的通信规则和协议,设备之间可以实现数据的交换和控制,从而实现智能化和自动化的应用场景。
随着物联网和智能家居的快速发展,单总线通信协议将会在未来得到更广泛的应用和推广。
单总线通信协议引言在电子设备中,各个硬件组件之间的通信是非常关键的。
为了实现高效、可靠的通信,各种通信协议被广泛使用。
本文将介绍一种常见的通信协议,即单总线通信协议。
什么是单总线通信协议单总线通信协议是一种简单而高效的通信方式。
它通过使用单根线来实现不同硬件组件之间的通信。
这根线可以同时传输数据和控制信号,从而减少了硬件的复杂性。
单总线通信协议的特点单总线通信协议具有以下特点:- 只需要一根线,减少了硬件的复杂性和成本。
- 数据和控制信号可以在同一根线上传输,节省了通信线路。
- 可以实现多个硬件设备之间的通信,提高了系统的灵活性。
单总线通信协议的工作原理单总线通信协议的工作原理如下: 1. 数据发送方将数据和控制信号通过单根线发送给接收方。
2. 接收方接收到信号后,解析出数据和控制信号。
3. 接收方根据控制信号执行相应的操作,如存储数据或进行计算。
单总线通信协议的应用场景单总线通信协议在许多领域有广泛的应用,例如: - 物联网设备:物联网设备通常需要与多个传感器或执行器进行通信,单总线通信协议可以简化通信的实现。
- 家庭自动化系统:家庭自动化系统中,各个智能设备之间需要进行数据交换,单总线通信协议可以方便地连接这些设备。
- 工业自动化:在工业自动化领域,各个控制设备之间的通信是必不可少的,单总线通信协议可以提高通信效率和可靠性。
单总线通信协议的优势和劣势单总线通信协议有以下优势: - 硬件成本低:只需要一根线,减少了硬件的复杂性和成本。
- 通信效率高:数据和控制信号可以在同一根线上传输,减少了通信线路的占用。
- 灵活性强:可以方便地连接多个设备,实现复杂的通信需求。
然而,单总线通信协议也存在一些劣势: - 通信距离有限:由于使用单根线进行通信,通信距离受到限制。
- 抗干扰能力较弱:由于只有一根线进行通信,单总线通信协议对干扰比较敏感。
总结单总线通信协议是一种简单而高效的通信方式,可以通过一根线实现多个硬件设备之间的通信。
单总线通信协议中存在两种写时隙:写0写1。
主机采用写1时隙向从机写入1,而写0时隙向从机写入0。
所有写时隙至少要60us,且在两次独立的写时隙之间至少要1us的恢复时间。
两种写时隙均起始于主机拉低数据总线。
产生1时隙的方式:主机拉低总线后,接着必须在15us之内释放总线,由上拉电阻将总线拉至高电平;产生写0时隙的方式为在主机拉低后,只需要在整个时隙间保持低电平即可(至少60us)。
在写时隙开始后15~60us期间,单总线器件采样总电平状态。
如果在此期间采样值为高电平,则逻辑1被写入器件;如果为0,写入逻辑0。
下图为写时隙(包括1和0)时序
上图中黑色实线代表系统主机拉低总线,黑色虚线代表上拉电阻将总线拉高。
对于读时隙,单总线器件仅在主机发出读时隙时,才向主机传输数据。
所有主机发出读数据命令后,必须马上产生读时隙,以便从机能够传输数据。
所有读时隙至少需要60us,且在两次独立的读时隙之间至少需要1us恢复时间。
每个读时隙都由主机发起,至少拉低总线1us。
在主机发出读时隙后,单总线器件才开始在总线上发送1或0。
若从机发送1,则保持总线为高电平;若发出0,则拉低总线。
当发送0时,从机在读时隙结束后释放总线,由上拉电阻将总线拉回至空闲高电平状态。
从机发出的数据在起始时隙之后,保持有效时间15us,因此主机在读时隙期间必须释放总线,并且在时隙起始后的15us之内采样总线状态。
下图给出读时隙(包括0或1)时序
图中黑色实线代表系统主机拉低总线,灰色实线代表总局拉低总线,而黑色的虚线则代表上
拉电阻总线拉高。
单总线通信的初始化
单总线上所有的通信都是以初始化序列开始的,初始化序列包括主机发出的复位脉冲及从机的应答脉冲,这一过程如图所示,黑色实线代表系统主机拉低总线,灰色实线代表从机拉低总线,而黑色的虚线则代表上拉电阻将总线拉高。
系统主设备发送端发出的复位脉冲是一个480~960us的低电平,然后释放总线进入接收状态。
此时系统总线通过4.7K的上拉电阻接至vcc高电平,时间约为15~60us,接在接受端的设备就开始检测io引脚上的下降沿以及监视在脉冲的到来。
主设备处于这种状态下的时间至少480us。
作为从设备在接收到系统主设备发出的复位脉冲之后,向总线发出一个应答脉冲,表示从设备已准备好,可根据各种命令发送或接收数据。
通常情况下,器件等待15~60us即可发送应答脉冲。