单总线(1-Wire BUS)通讯协议
介绍:Dallas公司研发的1-Wire单总线是由一根通信线(DQ)组成,且异步、半双工。
时序结构:
一、初始化:主机将总线拉低至少480us,然后释放总线,等待15~60us后,从机会拉低总线60~240us以响应主机,然后将从机释放:
代码:
/*** @brief 初始化* @param 无* @retval ACK应答位
**/unsigned char OneWire_Init()
{unsigned char i;unsigned char Ackbit;OneWire_DQ=1; //先将总线拉高OneWire_DQ=0; //然后将总线拉低i = 247;while (--i); //Delay 500 usOneWire_DQ=1; //释放总线i = 32;while (--i); //Delay 70 usAckbit=OneWire_DQ; //读取应答位i = 247;while (--i); //Delay 500 usreturn Ackbit;}
二、发送一位:如果主机将总线拉低60~120us,然后释放总线,表示发送0;如果主机将总线拉低1~15us,然后释放总线,表示发送一。从机将总线拉低30us后读取电平。整个时间片应不大于60us。(若想发送一个字节,循环8次即可)
代码:
发送一位
/*** @brief 发送一位* @param Bit* @retval 无
**/void OneWire_Senbit(unsigned char Bit)
{unsigned char i; OneWire_DQ=0; //拉低i = 4;while (--i); //Delay 10 us(考虑到调用函数需要时间,实际i可以适当取的更大)OneWire_DQ=Bit; //发送一位//讲解:从发送0和发送1俩个不同的时序可以看出,如果我们在10us的时候将Bit放在DQ上,如果是0// 则DQ一直会被拉低,如果是1,主机也会将DQ拉高,最后等50us后将数据发送即可 i = 24;while (--i); //Delay 50 usOneWire_DQ=1; //拉高,便于下次发送
}
发送一个字节
/*** @brief 发送一个字节* @param Byte* @retval 无
**/void OneWire_SenByte(unsigned char Byte)
{unsigned char i;for(i=0;i<8;i++){OneWire_Senbit(Byte&(0x01<<i));//低位在前}
}
三、接受一位:主机将总线拉低1~15us,然后释放总线,并在拉低后15us内读取总线电平(尽量贴近15us的时候),整个时间片应大于60us。
代码:
读取一位
/*** @brief 接受一位* @param 无* @retval Bit
**/unsigned char OneWire_ReceiveBit()
{unsigned char i;unsigned char Bit;OneWire_DQ=0;i = 2;while (--i); //Delay 5 usOneWire_DQ=1;i = 2;while (--i); //Delay 5 us//解释:读取数据需要在15us内进行(贴近15us的时候),如果是0,DQ会在5us后被从机拉低, // 如果是1, DQ会在5us后被从机拉高Bit=OneWire_DQ; //进行数据接受i = 24;while (--i); //Delay 50 usreturn Bit;}
读取一个字节
/*** @brief 接受一个字节* @param 无* @retval Byte
**/unsigned char OneWire_ReceiveByte()
{unsigned char i;unsigned char Byte=0x00;for(i=0;i<8;i++){if(OneWire_ReceiveBit()){Byte|=(0x01<<i);} //低位在前}return Byte;}
单总线(1-Wire BUS)通讯协议相关推荐
- 开发人员不可不看的 OBD通讯协议知识
OBD-II Network Standards » J1850 VPW – Adopted by GM; also known as Class 2. – Adopted by Chrysler ( ...
- STM32使用IIC总线通讯协议在OLED屏幕上显示字符串、汉字、单总线获取DHT11模块温湿度并通过IIC显示到屏幕(软件IIC)
参考:基于stm32软件IIC的oled显示温湿度 作者:ZPZ DayUp 发布时间: 2021-07-25 20:52:43 网址:https://blog.csdn.net/m0_5619768 ...
- 如何知道汽车使用哪一种OBD-II通讯协议
单凭经验,通用汽车和轻型卡车使用SAE J1850 VPW(可变脉冲宽度调制)通讯模式,克莱斯勒和所有欧洲及大部分亚洲进口汽车产品使用ISO9141通讯模式,福特使用SAE J1850 PWM(脉冲宽 ...
- 【物联网通信协议】与【物联网通讯协议】
理清 "通信"与"通讯" 通讯: 传统意义上的"通讯"主要指电话.电报.电传.通讯的"讯"指消息(Message),媒体 ...
- 关于物联网通信协议(通讯协议)
一.区分通讯与通信协议: 1.传统意义上的"通讯"主要指电话.电报.电传.通讯的"讯"指消息(Message),媒体讯息通过通讯网络从一端传递到另外一端.媒体讯 ...
- Redis和MongoDB通讯协议简介
为什么80%的码农都做不了架构师?>>> Redis Redis的通讯协议可以说大集汇了--消息头标识,消息行还有就行里可能还有个数据块大小描述.首先Redis是以行来划分,每 ...
- 【回眸】牛客网刷刷刷!嵌入式软件中也会遇到的嵌入式硬件,通讯,通讯协议专题(一)
前言 最近继续刷题,看看嵌入式软件还需要了解一些嵌入式硬件中的通讯协议和常用接口协议 比如说SPI CAN I2C 通讯协议专题 1.波特率 波特率= 每秒传送的字符数 * 字符位数.串口的工作模式为 ...
- 联网常见通信协议与通讯协议梳理- 通讯协议
1 "通信"与"通讯"傻傻分得清 传统意义上的"通讯"主要指电话.电报.电传.通讯的"讯"指消息(Message),媒 ...
- IOT(34 )---联网常见通信协议与通讯协议梳理- 通讯协议
联网常见通信协议与通讯协议梳理[上]- 通讯协议 1 "通信"与"通讯"傻傻分得清 传统意义上的"通讯"主要指电话.电报.电传.通讯的&q ...
- 《STM32从零开始学习历程》——CAN通讯协议协议层
<STM32从零开始学习历程>@EnzoReventon CAN通讯协议协议层 相关链接: <STM32从零开始学习历程>--CAN通讯协议物理层 CAN-bus规范 V2.0 ...
最新文章
- 大数据教程(9.1)流量汇总排序的mr实现
- 计算机背景象怎样改变,我的页面背景总是黑色,以前改变过现在好象改变不了?我该怎么改变呢? 爱问知识人...
- [翻译] MotionBlur
- java开发支持类库
- oracle11g数据文件路径,oracle11g修改数据文件路径
- DevNet网站上线
- ueditor 编辑器再thinkphp中使用 解决转义问题
- 关于团队项目的一些感想——刘宇翔
- Jupyter notebook绘制热力图边缘只有一半的问题
- 阿里巴巴发布第四财季财报 菜鸟驿站包裹量增长100%
- 数据仓库中的两大经典模型
- 来自微软华人的软件人生经历:功夫在身外
- 编译OpenJDK8:NMAKE : fatal error U1077
- 13.solr学习速成之IK分词器
- AD域管理员账号下发
- error: You must be logged in to the server (Unauthorized)报错处理
- Android Alarm机制分析
- 再见python你好go语言_再见,Python。你好,Go语言。
- mysql更改数据库登录密码失败;Access denied for user 'root'@'localhost;mysqladmin: connect to server at 'localhos
- 【Shader进阶】Shader的Lod