ATY_LIB V2_102_230218
ATY_LIB for general devices or ALGO
 
Loading...
Searching...
No Matches
DS18B20_ATY.h File Reference

Familiar functions of DS18B20 for all embedded device. More...

#include "INCLUDE_ATY.h"
#include "stm32f10x.h"
#include "sys.h"

Go to the source code of this file.

Macros

#define AD5245_AD0   1
 
#define __DEBUG_DS18B20_ATY
 
#define AD5245_ADDRESS   (0x2C | AD5245_AD0)
 
#define DS18B20_H
 
#define DS18B20_OutPut_Mode()   {GPIOB->CRL &= 0x0FFFFFFF;GPIOB->CRL |= 0x30000000;}
 
#define DS18B20_InPut_Mode()   {GPIOB->CRL &= 0x0FFFFFFF;GPIOB->CRL |= 0x80000000;}
 
#define DS18B20_IN   PBin(7)
 
#define DS18B20_OUT   PBout(7)
 

Functions

void DS18B20_Init (void)
 
u8 DS18B20_CheckDevice (void)
 
void DS18B20_SendRestSingle (void)
 
u8 DS18B20_CheckReadySingle (void)
 
u8 BS18B20_WriteByte (u8 cmd)
 
u8 BS18B20_ReadByte (void)
 
u16 DS18B20_GetTemperature (void)
 
u8 DS18B20_ReadRomInfo (void)
 
u8 DS18B20_MatchROM (void)
 

Variables

u8 Refresh_OLED_Data
 

Detailed Description

Familiar functions of DS18B20 for all embedded device.

Parameters
ProjectDEVICE_GENERAL_ATY_LIB
Author
ATY
Version
  • 1_01_220927 > ATY
    1. Preliminary version, first Release

Definition in file DS18B20_ATY.h.

Macro Definition Documentation

◆ __DEBUG_DS18B20_ATY

#define __DEBUG_DS18B20_ATY

Definition at line 36 of file DS18B20_ATY.h.

◆ AD5245_AD0

#define AD5245_AD0   1

Definition at line 34 of file DS18B20_ATY.h.

◆ AD5245_ADDRESS

#define AD5245_ADDRESS   (0x2C | AD5245_AD0)

Definition at line 42 of file DS18B20_ATY.h.

◆ DS18B20_H

#define DS18B20_H

Definition at line 45 of file DS18B20_ATY.h.

◆ DS18B20_IN

#define DS18B20_IN   PBin(7)

Definition at line 52 of file DS18B20_ATY.h.

◆ DS18B20_InPut_Mode

#define DS18B20_InPut_Mode ( )    {GPIOB->CRL &= 0x0FFFFFFF;GPIOB->CRL |= 0x80000000;}

Definition at line 50 of file DS18B20_ATY.h.

◆ DS18B20_OUT

#define DS18B20_OUT   PBout(7)

Definition at line 53 of file DS18B20_ATY.h.

◆ DS18B20_OutPut_Mode

#define DS18B20_OutPut_Mode ( )    {GPIOB->CRL &= 0x0FFFFFFF;GPIOB->CRL |= 0x30000000;}

Definition at line 49 of file DS18B20_ATY.h.

Function Documentation

◆ BS18B20_ReadByte()

u8 BS18B20_ReadByte ( void  )

◆ BS18B20_WriteByte()

u8 BS18B20_WriteByte ( u8  cmd)

Definition at line 125 of file DS18B20_ATY.c.

126{
127 u8 i = 0;
129 for(i = 0; i < 8; i++)
130 {
131 DS18B20_OUT = 0;
132 DelayUs(2); //主机拉低总线写数据时间隙2us
133 DS18B20_OUT = cmd & 0x01; //如果该写入位为1,必须在15us之内把总线拉高,为0 保持60us即可。
134 DelayUs(60); //确保DS18B20已经成功读取到该位数据
135 DS18B20_OUT = 1; //一位发送完成
136 cmd >>= 1;
137 DelayUs(2); //位间隙2us
138 }
139 return 0;
140}
#define DS18B20_OUT
Definition: DS18B20_ATY.h:53
#define DS18B20_OutPut_Mode()
Definition: DS18B20_ATY.h:49
void DelayUs(uint32_t us)
uint8_t __XDATA i

◆ DS18B20_CheckDevice()

u8 DS18B20_CheckDevice ( void  )

Definition at line 118 of file DS18B20_ATY.c.

119{
120 DS18B20_SendRestSingle();/*1.主机发送复位信号*/
121 return DS18B20_CheckReadySingle();/*2.检测存在脉冲*/
122}
void DS18B20_SendRestSingle(void)
Definition: DS18B20_ATY.c:71
u8 DS18B20_CheckReadySingle(void)
Definition: DS18B20_ATY.c:88

◆ DS18B20_CheckReadySingle()

u8 DS18B20_CheckReadySingle ( void  )

Definition at line 88 of file DS18B20_ATY.c.

89{
90 u8 cnt = 0;
91 /*1.检测存在脉冲*/
93 while(DS18B20_IN && cnt < 240) //等待DS18B20 拉低总线 (60~240 us 响应复位信号)
94 {
95 DelayUs(1);
96 cnt++;
97 }
98 if(cnt > 240) return 1;
99 /*2.检测DS18B20是否释放总线*/
100 cnt = 0;
102 while((!DS18B20_IN) && cnt < 240) //判断DS18B20是否释放总线(60~240 us 响应复位信号之后会释放总线)
103 {
104 DelayUs(1);
105 cnt++;
106 }
107 if(cnt > 240) return 2;
108 else return 0;
109}
#define DS18B20_InPut_Mode()
Definition: DS18B20_ATY.h:50
#define DS18B20_IN
Definition: DS18B20_ATY.h:52

◆ DS18B20_GetTemperature()

u16 DS18B20_GetTemperature ( void  )

Definition at line 167 of file DS18B20_ATY.c.

168{
169 u16 temp = 0;
170 u8 temp_H, temp_L;
171 int intT, decT;
172 DS18B20_CheckDevice(); //发送复位脉冲、检测存在脉冲
173 BS18B20_WriteByte(0xCC); //跳过ROM序列检测
174 BS18B20_WriteByte(0x44); //启动一次温度转换
175
176 //等待温度转换完成
177 while(DS18B20_ReadByte() != 0xFF){}
178
179 DS18B20_CheckDevice(); //发送复位脉冲、检测存在脉冲
180 BS18B20_WriteByte(0xCC); //跳过ROM序列检测
181 BS18B20_WriteByte(0xBE); //读取温度
182
183 temp_L = DS18B20_ReadByte(); //读取的温度低位数据
184 temp_H = DS18B20_ReadByte(); //读取的温度高位数据
185 temp = temp_L | (temp_H << 8); //合成温度
186 intT = temp >> 4; /*合成实际温度整数部分****精度相对上面的更高*/
187 decT = temp & 0xF; /*合成实际温度小数部分*/
188 printf("温度:%d.%d ℃ \n", intT, decT);
189 return temp;
190}
u8 DS18B20_ReadByte(void)
Read one byte from DS18B20.
Definition: DS18B20_ATY.c:143
decT
Definition: DS18B20_ATY.c:219
temp
Definition: DS18B20_ATY.c:215
u8 DS18B20_CheckDevice(void)
Definition: DS18B20_ATY.c:118
u8 BS18B20_WriteByte(u8 cmd)
Definition: DS18B20_ATY.c:125
intT
Definition: DS18B20_ATY.c:218
__WEAK_ATY void printf(uint8_t *,...)

◆ DS18B20_Init()

void DS18B20_Init ( void  )

Definition at line 53 of file DS18B20_ATY.c.

54{
55 /*1.GPIOC口初始化*/
56 RCC->APB2ENR |= 1 << 3;
57 GPIOB->CRL &= 0x0FFFFFFF;
58 GPIOB->CRL |= 0x30000000;
59 GPIOB->ODR |= 1 << 7;
60
61 /*2.检测DS18B20设备是否正常*/
62 switch(DS18B20_CheckDevice())
63 {
64 case 0: printf("DS18B20_Init OK!\n"); break;
65 case 1: printf("DS18B20设备响应复位信号失败!\n"); break;
66 case 2: printf("DS18B20设备释放总线失败!\n"); break;
67 }
68}

◆ DS18B20_MatchROM()

u8 DS18B20_MatchROM ( void  )

Definition at line 253 of file DS18B20_ATY.c.

254{
255 u8 i = 0;
256 BS18B20_WriteByte(0x55); /*4.匹配64位 ROM 信息*/
257 for(i = 0; i < 8; i++)
258 {
260 }
261 return 0;
262}
u8 ROM_ID[8]
Definition: DS18B20_ATY.c:41

◆ DS18B20_ReadRomInfo()

u8 DS18B20_ReadRomInfo ( void  )
  • crc = x^8 + x^5 + x^4 + 1*‍/

Definition at line 224 of file DS18B20_ATY.c.

225{
226 u8 i = 0;
227 BS18B20_WriteByte(0x33); /*4.启动读取ROM*/
228 for(i = 0; i < 8; i++)
229 {
231 }
232 printf("ROM_ID= ");
233 for(i = 0; i < 8; i++)
234 {
235 printf("%X", ROM_ID[i]);
236 if(i == 7) printf("\n");
237 else printf("-");
238 }
239 return 0;
240}

◆ DS18B20_SendRestSingle()

void DS18B20_SendRestSingle ( void  )

Definition at line 71 of file DS18B20_ATY.c.

72{
73 /*主机发送复位信号*/
75 DS18B20_OUT = 0; //拉低总线480~960 us ,对 DS18B20 芯片进行复位
76 DelayUs(750);
77 DS18B20_OUT = 1;
78 DelayUs(15); //释放总线15~60 us
79}

Variable Documentation

◆ Refresh_OLED_Data

u8 Refresh_OLED_Data
extern

Definition at line 43 of file DS18B20_ATY.c.