83 lines
2.8 KiB
C
83 lines
2.8 KiB
C
/**
|
|
******************************************************************************
|
|
* @file onewire.h
|
|
* @brief This file contains all the constants parameters for the OneWire
|
|
******************************************************************************
|
|
* @attention
|
|
* Usage:
|
|
* Uncomment LL Driver for HAL driver
|
|
*
|
|
******************************************************************************
|
|
*/
|
|
/* Define to prevent recursive inclusion -------------------------------------*/
|
|
#ifndef ONEWIRE_H
|
|
#define ONEWIRE_H
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/* Includes ------------------------------------------------------------------*/
|
|
#include "dwt.h"
|
|
|
|
/* Driver Selection ----------------------------------------------------------*/
|
|
//#define LL_Driver
|
|
#define CMSIS_Driver
|
|
/* OneWire Timings -----------------------------------------------------------*/
|
|
#define ONEWIRE_RESET_PULSE_US 480 // Äëèòåëüíîñòü èìïóëüñà ñáðîñà
|
|
#define ONEWIRE_PRESENCE_WAIT_US 70 // Îæèäàíèå îòâåòà îò äàò÷èêà
|
|
#define ONEWIRE_PRESENCE_DURATION_US 410 // Äëèòåëüíîñòü ñèãíàëà ïðèñóòñòâèÿ
|
|
|
|
#define ONEWIRE_WRITE_1_US 6 // Äëèòåëüíîñòü çàïèñè "1"
|
|
#define ONEWIRE_WRITE_0_US 60 // Äëèòåëüíîñòü çàïèñè "0"
|
|
#define ONEWIRE_READ_CMD_US 5 // Âðåìÿ êîììàíäû ÷òåíèÿ áèòà
|
|
#define ONEWIRE_READ_DELAY_US 10 // Çàäåðæêà ïåðåä ñ÷èòûâàíèåì áèòà
|
|
#define ONEWIRE_RECOVERY_TIME_US 1 // Âîññòàíîâëåíèå ïåðåä ñëåäóþùèì ñëîòîì
|
|
#define ONEWIRE_COMMAND_SLOT_US 70 // Îáùåå âðåìÿ êîììàíäû OneWire
|
|
/* Common Register -----------------------------------------------------------*/
|
|
#define ONEWIRE_CMD_SEARCHROM 0xF0
|
|
#define ONEWIRE_CMD_READROM 0x33
|
|
#define ONEWIRE_CMD_MATCHROM 0x55
|
|
#define ONEWIRE_CMD_SKIPROM 0xCC
|
|
|
|
/* Data Structure ------------------------------------------------------------*/
|
|
typedef enum
|
|
{
|
|
Input,
|
|
Output
|
|
} PinMode;
|
|
|
|
typedef struct
|
|
{
|
|
uint8_t LastDiscrepancy;
|
|
uint8_t LastFamilyDiscrepancy;
|
|
uint8_t LastDeviceFlag;
|
|
uint8_t RomByte[8];
|
|
uint8_t RomCnt;
|
|
uint16_t DataPin;
|
|
GPIO_TypeDef *DataPort;
|
|
} OneWire_t;
|
|
|
|
/* External Function ---------------------------------------------------------*/
|
|
void OneWire_Init(OneWire_t* OW);
|
|
uint8_t OneWire_Search(OneWire_t* OW, uint8_t Cmd);
|
|
void OneWire_GetDevRom(OneWire_t* OW, uint8_t *dev);
|
|
uint8_t OneWire_Reset(OneWire_t* OW);
|
|
uint8_t OneWire_ReadBit(OneWire_t* OW);
|
|
uint8_t OneWire_ReadByte(OneWire_t* OW);
|
|
void OneWire_WriteByte(OneWire_t* OW, uint8_t byte);
|
|
void OneWire_MatchROM(OneWire_t* OW, uint8_t *Rom);
|
|
void OneWire_Skip(OneWire_t* OW);
|
|
uint8_t OneWire_CRC8(uint8_t *addr, uint8_t len);
|
|
|
|
void OneWire_Pin_Mode(OneWire_t* OW, PinMode Mode);
|
|
void OneWire_Pin_Level(OneWire_t* OW, uint8_t Level);
|
|
uint8_t OneWire_Pin_Read(OneWire_t* OW);
|
|
void OneWire_WriteBit(OneWire_t* OW, uint8_t bit);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* ONEWIRE_H */
|