怎么写DS18B20底层驱动
温度是环境中必不可少的因素,我们不能忽略温度的存在。大自然有其温度,人也有自己的体温。我们获取温度可以通过传感器和处理器获取温度。一般温度传感器有模拟、数字式两种传感器。DS18B20属于数字式温度传感器,我们通过STM32编写DS18B20的驱动程序,让其正常工作,然后获取传感器的温度。


One-Wire时序编写:
1、复位:void DS18B20_Rst(void) { DS18B20_IO_OUT(); //SET PA0 OUTPUT DQ_OUT_L; //拉低DQ Delay_Us(750); //拉低750us DQ_OUT_H; //DQ=1 Delay_Us(15); //15US}
2、应答://返回1:未检测到DS18B20的存在//返回0:存在u8 DS18B20_Check(void) { u8 retry=0; DS18B20_IO_IN();//SET PA0 INPUT while (DQ_IN && retry<200) { retry++; Delay_Us(1); } if(retry>=200)return 1; else retry=0; while(!DQ_IN&&retry<240)//再次检查应答 { retry++; Delay_Us(1); } if(retry>=240)return 1; return 0;}

4、写一字节数据://写一个字节到DS18B20//dat:要写入的字节void DS18B20_Wr足毂忍珩ite_Byte(u8 dat) { u8 j; u8 testb; DS18B20_IO_OUT();//SET PA0 OUTPUT; for (j=1;j<=8;j++) { testb=dat&0x01; dat=dat>>1; if(testb) { DQ_OUT_L;// Write 1 Delay_Us(2); DQ_OUT_H; Delay_Us(60); } else { DQ_OUT_L;// Write 0 Delay_Us(60); DQ_OUT_H; Delay_Us(2); } }}
