DS2482 HAL
This commit is contained in:
parent
dbd912421d
commit
2f47a8f763
472
DS2482_HAL.c
Normal file
472
DS2482_HAL.c
Normal file
@ -0,0 +1,472 @@
|
||||
#include "DS2482_HAL.h"
|
||||
#include "errors.h"
|
||||
#include <stdint.h>
|
||||
|
||||
static I2C_HandleTypeDef* hi2c;
|
||||
|
||||
HAL_StatusTypeDef ds2482_init(I2C_HandleTypeDef* handle) {
|
||||
hi2c = handle;
|
||||
|
||||
HAL_StatusTypeDef status = ds2482_reset();
|
||||
if (status != HAL_OK) {
|
||||
return status;
|
||||
}
|
||||
|
||||
status = ds2482_write_config(DS2482_CONFIG_APU);
|
||||
if (status != HAL_OK) {
|
||||
return status;
|
||||
}
|
||||
|
||||
uint8_t config;
|
||||
status = HAL_I2C_Master_Receive(hi2c, DS2482_I2C_ADDR, &config, 1, DS2482_TIMEOUT_I2C);
|
||||
if (status != HAL_OK) {
|
||||
return status;
|
||||
} else if (config != DS2482_CONFIG_APU) {
|
||||
return HAL_ERROR;
|
||||
}
|
||||
|
||||
return HAL_OK;
|
||||
}
|
||||
|
||||
HAL_StatusTypeDef ds2482_reset() {
|
||||
uint8_t data[1] = {DS2482_CMD_RESET};
|
||||
return HAL_I2C_Master_Transmit(hi2c, DS2482_I2C_ADDR, data, sizeof(data), DS2482_TIMEOUT_I2C);
|
||||
}
|
||||
|
||||
HAL_StatusTypeDef ds2482_write_config(uint8_t config) {
|
||||
uint8_t data[2] = {DS2482_CMD_WRITE_CONFIG, config | (~config << 4)};
|
||||
return HAL_I2C_Master_Transmit(hi2c, DS2482_I2C_ADDR, data, sizeof(data), DS2482_TIMEOUT_I2C);
|
||||
}
|
||||
|
||||
HAL_StatusTypeDef ds2482_set_read_ptr(uint8_t read_ptr) {
|
||||
uint8_t data[2] = {DS2482_CMD_SET_READ_PTR, read_ptr};
|
||||
return HAL_I2C_Master_Transmit(hi2c, DS2482_I2C_ADDR, data, sizeof(data), DS2482_TIMEOUT_I2C);
|
||||
}
|
||||
|
||||
HAL_StatusTypeDef ds2482_1w_reset() {
|
||||
uint8_t data[1] = {DS2482_CMD_1W_RESET};
|
||||
HAL_StatusTypeDef status = HAL_I2C_Master_Transmit(hi2c, DS2482_I2C_ADDR, data, sizeof(data), DS2482_TIMEOUT_I2C);
|
||||
if (status != HAL_OK) {
|
||||
return status;
|
||||
}
|
||||
DS2482_Status status_reg = {.BUSY = 1};
|
||||
uint16_t timeout = HAL_GetTick() + DS2482_TIMEOUT_1W;
|
||||
do {
|
||||
status = HAL_I2C_Master_Receive(hi2c, DS2482_I2C_ADDR, (uint8_t*)&status_reg, 1, DS2482_TIMEOUT_I2C);
|
||||
if (status != HAL_OK) {
|
||||
return status;
|
||||
}
|
||||
if (HAL_GetTick() > timeout) {
|
||||
return HAL_TIMEOUT;
|
||||
}
|
||||
} while (status_reg.BUSY);
|
||||
|
||||
if (status_reg.SHORT) {
|
||||
return HAL_ERROR;
|
||||
}
|
||||
|
||||
return HAL_OK;
|
||||
}
|
||||
|
||||
HAL_StatusTypeDef ds2482_1w_write_byte(uint8_t byte) {
|
||||
uint8_t data[2] = {DS2482_CMD_1W_WRITE_BYTE, byte};
|
||||
HAL_StatusTypeDef status = HAL_I2C_Master_Transmit(hi2c, DS2482_I2C_ADDR, data, sizeof(data), DS2482_TIMEOUT_I2C);
|
||||
if (status != HAL_OK) {
|
||||
return status;
|
||||
}
|
||||
|
||||
DS2482_Status status_reg = {.BUSY = 1};
|
||||
uint16_t timeout = HAL_GetTick() + DS2482_TIMEOUT_1W;
|
||||
do {
|
||||
status = HAL_I2C_Master_Receive(hi2c, DS2482_I2C_ADDR, (uint8_t*)&status_reg, 1, DS2482_TIMEOUT_I2C);
|
||||
if (status != HAL_OK) {
|
||||
return status;
|
||||
}
|
||||
if (HAL_GetTick() > timeout) {
|
||||
return HAL_TIMEOUT;
|
||||
}
|
||||
} while (status_reg.BUSY);
|
||||
|
||||
return HAL_OK;
|
||||
}
|
||||
|
||||
HAL_StatusTypeDef ds2482_1w_read_byte(uint8_t* byte) {
|
||||
uint8_t data[1] = {DS2482_CMD_1W_READ_BYTE};
|
||||
HAL_StatusTypeDef status = HAL_I2C_Master_Transmit(hi2c, DS2482_I2C_ADDR, data, sizeof(data), DS2482_TIMEOUT_I2C);
|
||||
if (status != HAL_OK) {
|
||||
return status;
|
||||
}
|
||||
|
||||
DS2482_Status status_reg = {.BUSY = 1};
|
||||
uint16_t timeout = HAL_GetTick() + DS2482_TIMEOUT_1W;
|
||||
do {
|
||||
status = HAL_I2C_Master_Receive(hi2c, DS2482_I2C_ADDR, (uint8_t*)&status_reg, 1, DS2482_TIMEOUT_I2C);
|
||||
if (status != HAL_OK) {
|
||||
return status;
|
||||
}
|
||||
if (HAL_GetTick() > timeout) {
|
||||
return HAL_TIMEOUT;
|
||||
}
|
||||
} while (status_reg.BUSY);
|
||||
|
||||
status = ds2482_set_read_ptr(DS2482_READ_DATA);
|
||||
if (status != HAL_OK) {
|
||||
return status;
|
||||
}
|
||||
|
||||
return HAL_I2C_Master_Receive(hi2c, DS2482_I2C_ADDR, byte, 1, DS2482_TIMEOUT_I2C);
|
||||
}
|
||||
|
||||
HAL_StatusTypeDef ds2482_1w_triplet(uint8_t dir) {
|
||||
uint8_t data[2] = {DS2482_CMD_1W_TRIPLET, dir ? 0xFF : 0x00};
|
||||
return HAL_I2C_Master_Transmit(hi2c, DS2482_I2C_ADDR, data, sizeof(data), DS2482_TIMEOUT_I2C);
|
||||
}
|
||||
|
||||
static HAL_StatusTypeDef ds2482_1w_write_bit(bool bit) {
|
||||
uint8_t data[2] = {DS2482_CMD_1W_SINGLE_BIT, bit ? 0xFF : 0x00};
|
||||
HAL_StatusTypeDef status = HAL_I2C_Master_Transmit(hi2c, DS2482_I2C_ADDR, data, sizeof(data), DS2482_TIMEOUT_I2C);
|
||||
if (status != HAL_OK) {
|
||||
return status;
|
||||
}
|
||||
|
||||
DS2482_Status status_reg = {.BUSY = 1};
|
||||
uint16_t timeout = HAL_GetTick() + DS2482_TIMEOUT_1W;
|
||||
do {
|
||||
status = HAL_I2C_Master_Receive(hi2c, DS2482_I2C_ADDR, (uint8_t*)&status_reg, 1, DS2482_TIMEOUT_I2C);
|
||||
if (status != HAL_OK) {
|
||||
return status;
|
||||
}
|
||||
if (HAL_GetTick() > timeout) {
|
||||
return HAL_TIMEOUT;
|
||||
}
|
||||
} while (status_reg.BUSY);
|
||||
|
||||
return HAL_OK;
|
||||
}
|
||||
|
||||
static HAL_StatusTypeDef ds2482_1w_read_bit(bool* bit) {
|
||||
uint8_t data[2] = {DS2482_CMD_1W_SINGLE_BIT, 0xFF};
|
||||
HAL_StatusTypeDef status = HAL_I2C_Master_Transmit(hi2c, DS2482_I2C_ADDR, data, sizeof(data), DS2482_TIMEOUT_I2C);
|
||||
if (status != HAL_OK) {
|
||||
return status;
|
||||
}
|
||||
|
||||
DS2482_Status status_reg = {.BUSY = 1};
|
||||
uint16_t timeout = HAL_GetTick() + DS2482_TIMEOUT_1W;
|
||||
do {
|
||||
status = HAL_I2C_Master_Receive(hi2c, DS2482_I2C_ADDR, (uint8_t*)&status_reg, 1, DS2482_TIMEOUT_I2C);
|
||||
if (status != HAL_OK) {
|
||||
return status;
|
||||
}
|
||||
if (HAL_GetTick() > timeout) {
|
||||
return HAL_TIMEOUT;
|
||||
}
|
||||
} while (status_reg.BUSY);
|
||||
|
||||
*bit = status_reg.SBR;
|
||||
return HAL_OK;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//
|
||||
// From https://www.maximintegrated.com/en/design/technical-documents/app-notes/1/187.html
|
||||
//
|
||||
|
||||
|
||||
|
||||
// global search state
|
||||
static uint8_t ROM_NO[8];
|
||||
static int LastDiscrepancy;
|
||||
static int LastFamilyDiscrepancy;
|
||||
static bool LastDeviceFlag;
|
||||
static uint8_t crc8;
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// Setup the search to find the device type 'family_code' on the next call
|
||||
// to OWNext() if it is present.
|
||||
//
|
||||
static void OWTargetSetup(uint8_t family_code) {
|
||||
int i;
|
||||
|
||||
// set the search state to find SearchFamily type devices
|
||||
ROM_NO[0] = family_code;
|
||||
for (i = 1; i < 8; i++)
|
||||
ROM_NO[i] = 0;
|
||||
LastDiscrepancy = 64;
|
||||
LastFamilyDiscrepancy = 0;
|
||||
LastDeviceFlag = false;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// Setup the search to skip the current device type on the next call
|
||||
// to OWNext().
|
||||
//
|
||||
static void OWFamilySkipSetup() {
|
||||
// set the Last discrepancy to last family discrepancy
|
||||
LastDiscrepancy = LastFamilyDiscrepancy;
|
||||
LastFamilyDiscrepancy = 0;
|
||||
|
||||
// check for end of list
|
||||
if (LastDiscrepancy == 0)
|
||||
LastDeviceFlag = true;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// 1-Wire Functions to be implemented for a particular platform
|
||||
//--------------------------------------------------------------------------
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// Reset the 1-Wire bus and return the presence of any device
|
||||
// Return true : device present
|
||||
// false : no device present
|
||||
//
|
||||
static bool OWReset() {
|
||||
ds2482_1w_reset();
|
||||
DS2482_Status status_reg = {};
|
||||
HAL_I2C_Master_Receive(hi2c, DS2482_I2C_ADDR, (uint8_t*)&status_reg, 1, DS2482_TIMEOUT_I2C);
|
||||
return status_reg.PPD;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// Send 8 bits of data to the 1-Wire bus
|
||||
//
|
||||
static inline void OWWriteByte(uint8_t byte_value) { ds2482_1w_write_byte(byte_value); }
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// Send 1 bit of data to teh 1-Wire bus
|
||||
//
|
||||
static inline void OWWriteBit(uint8_t bit_value) { ds2482_1w_write_bit(bit_value); }
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// Read 1 bit of data from the 1-Wire bus
|
||||
// Return 1 : bit read is 1
|
||||
// 0 : bit read is 0
|
||||
//
|
||||
static inline uint8_t OWReadBit() {
|
||||
bool bit;
|
||||
ds2482_1w_read_bit(&bit);
|
||||
return bit;
|
||||
}
|
||||
|
||||
// TEST BUILD
|
||||
static uint8_t dscrc_table[] = {
|
||||
0, 94, 188, 226, 97, 63, 221, 131, 194, 156, 126, 32, 163, 253, 31, 65, 157, 195, 33, 127, 252, 162,
|
||||
64, 30, 95, 1, 227, 189, 62, 96, 130, 220, 35, 125, 159, 193, 66, 28, 254, 160, 225, 191, 93, 3,
|
||||
128, 222, 60, 98, 190, 224, 2, 92, 223, 129, 99, 61, 124, 34, 192, 158, 29, 67, 161, 255, 70, 24,
|
||||
250, 164, 39, 121, 155, 197, 132, 218, 56, 102, 229, 187, 89, 7, 219, 133, 103, 57, 186, 228, 6, 88,
|
||||
25, 71, 165, 251, 120, 38, 196, 154, 101, 59, 217, 135, 4, 90, 184, 230, 167, 249, 27, 69, 198, 152,
|
||||
122, 36, 248, 166, 68, 26, 153, 199, 37, 123, 58, 100, 134, 216, 91, 5, 231, 185, 140, 210, 48, 110,
|
||||
237, 179, 81, 15, 78, 16, 242, 172, 47, 113, 147, 205, 17, 79, 173, 243, 112, 46, 204, 146, 211, 141,
|
||||
111, 49, 178, 236, 14, 80, 175, 241, 19, 77, 206, 144, 114, 44, 109, 51, 209, 143, 12, 82, 176, 238,
|
||||
50, 108, 142, 208, 83, 13, 239, 177, 240, 174, 76, 18, 145, 207, 45, 115, 202, 148, 118, 40, 171, 245,
|
||||
23, 73, 8, 86, 180, 234, 105, 55, 213, 139, 87, 9, 235, 181, 54, 104, 138, 212, 149, 203, 41, 119,
|
||||
244, 170, 72, 22, 233, 183, 85, 11, 136, 214, 52, 106, 43, 117, 151, 201, 74, 20, 246, 168, 116, 42,
|
||||
200, 150, 21, 75, 169, 247, 182, 232, 10, 84, 215, 137, 107, 53};
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// Calculate the CRC8 of the byte value provided with the current
|
||||
// global 'crc8' value.
|
||||
// Returns current global crc8 value
|
||||
//
|
||||
static uint8_t docrc8(uint8_t value) {
|
||||
crc8 = dscrc_table[crc8 ^ value];
|
||||
return crc8;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// Perform the 1-Wire Search Algorithm on the 1-Wire bus using the existing
|
||||
// search state.
|
||||
// Return true : device found, ROM number in ROM_NO buffer
|
||||
// false : device not found, end of search
|
||||
//
|
||||
static bool OWSearch() {
|
||||
int id_bit_number;
|
||||
int last_zero, rom_byte_number, search_result;
|
||||
int id_bit, cmp_id_bit;
|
||||
uint8_t rom_byte_mask, search_direction;
|
||||
|
||||
// initialize for search
|
||||
id_bit_number = 1;
|
||||
last_zero = 0;
|
||||
rom_byte_number = 0;
|
||||
rom_byte_mask = 1;
|
||||
search_result = 0;
|
||||
crc8 = 0;
|
||||
|
||||
// if the last call was not the last one
|
||||
if (!LastDeviceFlag) {
|
||||
// 1-Wire reset
|
||||
if (!OWReset()) {
|
||||
// reset the search
|
||||
LastDiscrepancy = 0;
|
||||
LastDeviceFlag = false;
|
||||
LastFamilyDiscrepancy = 0;
|
||||
return false;
|
||||
}
|
||||
|
||||
// issue the search command
|
||||
OWWriteByte(0xF0);
|
||||
|
||||
// loop to do the search
|
||||
do {
|
||||
// read a bit and its complement
|
||||
id_bit = OWReadBit();
|
||||
cmp_id_bit = OWReadBit();
|
||||
|
||||
// check for no devices on 1-wire
|
||||
if ((id_bit == 1) && (cmp_id_bit == 1))
|
||||
break;
|
||||
else {
|
||||
// all devices coupled have 0 or 1
|
||||
if (id_bit != cmp_id_bit)
|
||||
search_direction = id_bit; // bit write value for search
|
||||
else {
|
||||
// if this discrepancy if before the Last Discrepancy
|
||||
// on a previous next then pick the same as last time
|
||||
if (id_bit_number < LastDiscrepancy)
|
||||
search_direction = ((ROM_NO[rom_byte_number] & rom_byte_mask) > 0);
|
||||
else
|
||||
// if equal to last pick 1, if not then pick 0
|
||||
search_direction = (id_bit_number == LastDiscrepancy);
|
||||
|
||||
// if 0 was picked then record its position in LastZero
|
||||
if (search_direction == 0) {
|
||||
last_zero = id_bit_number;
|
||||
|
||||
// check for Last discrepancy in family
|
||||
if (last_zero < 9)
|
||||
LastFamilyDiscrepancy = last_zero;
|
||||
}
|
||||
}
|
||||
|
||||
// set or clear the bit in the ROM byte rom_byte_number
|
||||
// with mask rom_byte_mask
|
||||
if (search_direction == 1)
|
||||
ROM_NO[rom_byte_number] |= rom_byte_mask;
|
||||
else
|
||||
ROM_NO[rom_byte_number] &= ~rom_byte_mask;
|
||||
|
||||
// serial number search direction write bit
|
||||
OWWriteBit(search_direction);
|
||||
|
||||
// increment the byte counter id_bit_number
|
||||
// and shift the mask rom_byte_mask
|
||||
id_bit_number++;
|
||||
rom_byte_mask <<= 1;
|
||||
|
||||
// if the mask is 0 then go to new SerialNum byte rom_byte_number and reset mask
|
||||
if (rom_byte_mask == 0) {
|
||||
docrc8(ROM_NO[rom_byte_number]); // accumulate the CRC
|
||||
rom_byte_number++;
|
||||
rom_byte_mask = 1;
|
||||
}
|
||||
}
|
||||
} while (rom_byte_number < 8); // loop until through all ROM bytes 0-7
|
||||
|
||||
// if the search was successful then
|
||||
if (!((id_bit_number < 65) || (crc8 != 0))) {
|
||||
// search successful so set LastDiscrepancy,LastDeviceFlag,search_result
|
||||
LastDiscrepancy = last_zero;
|
||||
|
||||
// check for last device
|
||||
if (LastDiscrepancy == 0)
|
||||
LastDeviceFlag = true;
|
||||
|
||||
search_result = true;
|
||||
}
|
||||
}
|
||||
|
||||
// if no device found then reset counters so next 'search' will be like a first
|
||||
if (!search_result || !ROM_NO[0]) {
|
||||
LastDiscrepancy = 0;
|
||||
LastDeviceFlag = false;
|
||||
LastFamilyDiscrepancy = 0;
|
||||
search_result = false;
|
||||
}
|
||||
|
||||
return search_result;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// Find the 'first' devices on the 1-Wire bus
|
||||
// Return true : device found, ROM number in ROM_NO buffer
|
||||
// false : no device present
|
||||
//
|
||||
static bool OWFirst() {
|
||||
// reset the search state
|
||||
LastDiscrepancy = 0;
|
||||
LastDeviceFlag = false;
|
||||
LastFamilyDiscrepancy = 0;
|
||||
|
||||
return OWSearch();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// Find the 'next' devices on the 1-Wire bus
|
||||
// Return true : device found, ROM number in ROM_NO buffer
|
||||
// false : device not found, end of search
|
||||
//
|
||||
static inline bool OWNext() {
|
||||
// leave the search state alone
|
||||
return OWSearch();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// Verify the device with the ROM number in ROM_NO buffer is present.
|
||||
// Return true : device verified present
|
||||
// false : device not present
|
||||
//
|
||||
static bool OWVerify() {
|
||||
uint8_t rom_backup[8];
|
||||
int i, rslt, ld_backup, ldf_backup, lfd_backup;
|
||||
|
||||
// keep a backup copy of the current state
|
||||
for (i = 0; i < 8; i++)
|
||||
rom_backup[i] = ROM_NO[i];
|
||||
ld_backup = LastDiscrepancy;
|
||||
ldf_backup = LastDeviceFlag;
|
||||
lfd_backup = LastFamilyDiscrepancy;
|
||||
|
||||
// set search to find the same device
|
||||
LastDiscrepancy = 64;
|
||||
LastDeviceFlag = false;
|
||||
|
||||
if (OWSearch()) {
|
||||
// check if same device found
|
||||
rslt = true;
|
||||
for (i = 0; i < 8; i++) {
|
||||
if (rom_backup[i] != ROM_NO[i]) {
|
||||
rslt = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else
|
||||
rslt = false;
|
||||
|
||||
// restore the search state
|
||||
for (i = 0; i < 8; i++)
|
||||
ROM_NO[i] = rom_backup[i];
|
||||
LastDiscrepancy = ld_backup;
|
||||
LastDeviceFlag = ldf_backup;
|
||||
LastFamilyDiscrepancy = lfd_backup;
|
||||
|
||||
// return the result of the verify
|
||||
return rslt;
|
||||
}
|
||||
|
||||
|
||||
|
||||
HAL_StatusTypeDef ds2482_1w_search(uint16_t max_devices, uint64_t devices[static max_devices]) {
|
||||
OWFirst();
|
||||
uint16_t count = 0;
|
||||
do {
|
||||
uint64_t device = 0;
|
||||
for (int i = 0; i < 8; i++) {
|
||||
device |= (uint64_t)ROM_NO[i] << (i * 8);
|
||||
}
|
||||
devices[count++] = device;
|
||||
} while (OWNext() && count < max_devices);
|
||||
|
||||
return HAL_OK;
|
||||
}
|
51
DS2482_HAL.h
Normal file
51
DS2482_HAL.h
Normal file
@ -0,0 +1,51 @@
|
||||
#pragma once
|
||||
|
||||
#ifndef DS2482_HAL_H
|
||||
#define DS2482_HAL_H
|
||||
#include "stm32f3xx_hal.h"
|
||||
|
||||
#define DS2482_I2C_ADDR 0x30 // TODO: change to actual address
|
||||
|
||||
#define DS2482_CMD_RESET 0xF0
|
||||
#define DS2482_CMD_SET_READ_PTR 0xE1
|
||||
#define DS2482_CMD_WRITE_CONFIG 0xD2
|
||||
#define DS2482_CMD_1W_RESET 0xB4
|
||||
#define DS2482_CMD_1W_SINGLE_BIT 0x87
|
||||
#define DS2482_CMD_1W_WRITE_BYTE 0xA5
|
||||
#define DS2482_CMD_1W_READ_BYTE 0x96
|
||||
#define DS2482_CMD_1W_TRIPLET 0x78
|
||||
|
||||
#define DS2482_STATUS 0xF0
|
||||
#define DS2482_READ_DATA 0xE1
|
||||
#define DS2482_CONFIG 0xC3
|
||||
|
||||
#define DS2482_CONFIG_APU 1 << 0
|
||||
#define DS2482_CONFIG_SPU 1 << 2
|
||||
#define DS2482_CONFIG_1WS 1 << 3
|
||||
|
||||
#define DS2482_TIMEOUT_1W 100
|
||||
#define DS2482_TIMEOUT_I2C 100
|
||||
|
||||
typedef struct {
|
||||
uint8_t BUSY : 1;
|
||||
uint8_t PPD : 1;
|
||||
uint8_t SHORT : 1;
|
||||
uint8_t LL : 1;
|
||||
uint8_t RST : 1;
|
||||
uint8_t SBR : 1;
|
||||
uint8_t TSB : 1;
|
||||
uint8_t DIR : 1;
|
||||
} DS2482_Status;
|
||||
|
||||
HAL_StatusTypeDef ds2482_init(I2C_HandleTypeDef* handle);
|
||||
HAL_StatusTypeDef ds2482_reset();
|
||||
HAL_StatusTypeDef ds2482_write_config(uint8_t config);
|
||||
HAL_StatusTypeDef ds2482_set_read_ptr(uint8_t read_ptr);
|
||||
HAL_StatusTypeDef ds2482_1w_reset();
|
||||
HAL_StatusTypeDef ds2482_1w_write_byte(uint8_t byte);
|
||||
HAL_StatusTypeDef ds2482_1w_read_byte(uint8_t* byte);
|
||||
HAL_StatusTypeDef ds2482_1w_triplet(uint8_t dir);
|
||||
|
||||
HAL_StatusTypeDef ds2482_1w_search(uint16_t max_devices, uint64_t devices[static max_devices]);
|
||||
|
||||
#endif // DS2482_HAL_H
|
Loading…
x
Reference in New Issue
Block a user