版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
淘宝店铺:技术论坛《手把手教你学STM32》主讲人:正点原子团队硬件平台:正点原子STM32开发板:广州市星翼电子科技有限公司淘宝店铺:技术论坛:开源电子网公众平台:“正点原子”官方网站:联系电话:ALIENTEK《手把手教你学STM32》
DS18B20实验STM32F1xx开发板(正点原子)STM32F4xx开发板(正点原子)适用平台淘宝店铺:技术论坛DS18B20实验淘宝店铺:技术论坛参考资料:战舰STM32F1开发板
《STM32F1开发指南-库函数版本》-第35章DS18B20温度传感器实验精英STM32F1开发板
《STM32F1开发指南-库函数版本》-第34章DS18B20温度传感器实验miniSTM32F1开发板
《STM32不完全手册-库函数版本》-第28章DS18B20温度传感器实验探索者STM32F4开发板
《STM32F4开发指南-库函数版本》-第35章DS18B20温度传感器实验目录DS18B20介绍1实验程序讲解2淘宝店铺:技术论坛DS18B20介绍淘宝店铺:技术论坛DS18B20技术性能特征①、独特的单总线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实
现微处理器与DS18B20的双向通讯。大大提高了系统的抗干扰性。②、测温范围-55℃~+125℃,精度为±0.5℃。③、支持多点组网功能,多个DS18B20可以并联在唯一的三线上,最多只能并联8个,
实现多点测温,如果数量过多,会使供电电源电压过低,从而造成信号传输的
不稳定。④、工作电源:3.0~5.5V/DC(可以数据线寄生电源)。⑤、在使用中不需要任何外围元件。⑥、测量结果以9~12位数字量方式串行传送。DS18B20介绍淘宝店铺:技术论坛DS18B20封装DS18B20介绍淘宝店铺:技术论坛连接方式DS18B20介绍淘宝店铺:技术论坛
硬件连接战舰精英mini探索者DS18B20介绍淘宝店铺:技术论坛单总线是一种半双工通信方式DS18B20共有6种信号类型:复位脉冲、应答脉冲、写0、写1、读0和读1。所有这些信号,除了应答脉冲以外,都由主机发出同步信号。并且发送所有的命令和数据都是字节的低位在前。边讲信号类型,边讲代码配置的方式,让大家了解STM32驱动18B20过程。DS18B20介绍淘宝店铺:技术论坛信号线:PG11(战舰/精英)//IO方向设置#defineDS18B20_IO_IN(){GPIOG->CRH&=0XFFFF0FFF;GPIOG->CRH|=8<<12;}#defineDS18B20_IO_OUT(){GPIOG->CRH&=0XFFFF0FFF;GPIOG->CRH|=3<<12;}//IO操作
#define DS18B20_DQ_OUTPGout(11)//数据端口PA0#define DS18B20_DQ_INPGin(11)//数据端口 PA0信号线:PA0(mini)//IO方向设置#defineDS18B20_IO_IN(){GPIOA->CRL&=0XFFFFFFF0;GPIOA->CRL|=8<<0;}#defineDS18B20_IO_OUT(){GPIOA->CRL&=0XFFFFFFF0;GPIOA->CRL|=3<<0;}////IO操作
#define DS18B20_DQ_OUTPAout(0)//数据端口 PA0#define DS18B20_DQ_INPAin(0)//数据端口 PA0信号线:PG9(探索者)//IO方向设置#defineDS18B20_IO_IN(){GPIOG->MODER&=~(3<<(9*2));GPIOG->MODER|=0<<9*2;} //PG9输入模#defineDS18B20_IO_OUT(){GPIOG->MODER&=~(3<<(9*2));GPIOG->MODER|=1<<9*2;} //PG9输出模////IO操作
#define DS18B20_DQ_OUTPGout(9)//数据端口PG9#define DS18B20_DQ_INPGin(9)//数据端口 PG9DS18B20介绍淘宝店铺:技术论坛复位脉冲单总线上的所有通信都是以初始化序列开始。主机输出低电平,保持低电平时间至少480us,,以产生复位脉冲。接着主机释放总线,4.7K的上拉电阻将单总线拉高,延时15~60us,并进入接收模式(Rx)。接着DS18B20拉低总线60~240us,以产生低电平应答脉冲。
//复位DS18B20voidDS18B20_Rst(void) {DS18B20_IO_OUT();//设置为输出模式DS18B20_DQ_OUT=0;//拉低DQdelay_us(750);//拉低750us(至少480us)DS18B20_DQ_OUT=1;//DQ=1拉高释放总线
delay_us(15);//15US//进入接受模式,等待应答信号。}DS18B20介绍淘宝店铺:技术论坛②应答信号//等待DS18B20的回应//返回1:未检测到DS18B20的存在返回0:存在u8DS18B20_Check(void) {u8retry=0;DS18B20_IO_IN();//SETPA0INPUT while(DS18B20_DQ_IN&&retry<200){retry++;delay_us(1);}; if(retry>=200)return1;elseretry=0;while(!DS18B20_DQ_IN&&retry<240){retry++;delay_us(1);};if(retry>=240)return1; return0;}DS18B20介绍淘宝店铺:技术论坛③写时序写时序包括写0时序和写1时序。所有写时序至少需要60us,且在2次独立的写时序之间至少需要1us的恢复时间,两种写时序均起始于主机拉低总线。写1时序:主机输出低电平,延时2us,然后释放总线,延时60us。写0时序:主机输出低电平,延时60us,然后释放总线,延时2us。DS18B20介绍淘宝店铺:技术论坛//写一个字节到DS18B20//dat:要写入的字节voidDS18B20_Write_Byte(u8dat){u8j;u8testb;DS18B20_IO_OUT();//设置PA0为输出for(j=1;j<=8;j++){testb=dat&0x01;dat=dat>>1;if(testb)//输出高{DS18B20_DQ_OUT=0;//主机输出低电平delay_us(2);//延时2usDS18B20_DQ_OUT=1;//释放总线delay_us(60);//延时60us}else//输出低{DS18B20_DQ_OUT=0;//主机输出低电平delay_us(60);//延时60usDS18B20_DQ_OUT=1;//释放总线delay_us(2);//延时2us}}}DS18B20介绍淘宝店铺:技术论坛④读时序单总线器件仅在主机发出读时序时,才向主机传输数据,所以,在主机发出读数据命令后,必须马上产生读时序,以便从机能够传输数据。所有读时序至少需要60us,且在2次独立的读时序之间至少需要1us的恢复时间。每个读时序都由主机发起,至少拉低总线1us。主机在读时序期间必须释放总线,并且在时序起始后的15us之内采样总线状态。典型的读时序过程为:主机输出低电平延时2us,然后主机转入输入模式延时12us,然后读取单总线当前的电平,然后延时50us。DS18B20介绍淘宝店铺:技术论坛//从DS18B20读取一个位//返回值:1/0u8DS18B20_Read_Bit(void) //readonebit{u8data;DS18B20_IO_OUT();//设置为输出DS18B20_DQ_OUT=0;//输出低电平2usdelay_us(2);DS18B20_DQ_OUT=1;//拉高释放总线DS18B20_IO_IN();//设置为输入delay_us(12);//延时12usif(DS18B20_DQ_IN)data=1;//读取总线数据elsedata=0; delay_us(50);//延时50usreturndata;}典型的读时序过程为:主机输出低电平延时2us,然后主机转入输入模式延时12us,然后读取单总线当前的电平,然后延时50us。DS18B20介绍淘宝店铺:技术论坛//从DS18B20读取一个字节//返回值:读到的数据u8DS18B20_Read_Byte(void)//readonebyte{u8i,j,dat;dat=0;for(i=1;i<=8;i++){j=DS18B20_Read_Bit();dat=(j<<7)|(dat>>1);} returndat;}读取一个字节数据DS18B20介绍淘宝店铺:技术论坛我们来看看DS18B20的典型温度读取过程,DS18B20的典型温度读取过程为:复位发SKIPROM命令(0XCC)发开始转换命令(0X44)延时复位发送SKIPROM命令(0XCC)发读存储器命令(0XBE)连续读出两个字节数据(即温度)结束。DS18B20介绍淘宝店铺:技术论坛//从ds18b20得到温度值//精度:0.1C//返回值:温度值(-550~1250)shortDS18B20_Get_Temp(void){u8temp;u8TL,TH;shorttem;DS18B20_Start();//ds1820startconvertDS18B20_Rst();复位DS18B20_Check(); DS18B20_Write_Byte(0xcc);//skipromDS18B20_Write_Byte(0xbe);//convert TL=DS18B20_Read_Byte();TH=DS18B20_Read_Byte(); if(TH>7){TH=~TH;TL=~TL;temp=0;//温度为负
}elsetemp=1;//温度为正
tem=TH;//获得高八位
tem<<=8;tem+=TL;//获得底八位
tem=(float)tem*0.625;//转换
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论