ESR-2025/i2c.h

45 lines
1.3 KiB
C

/* ========================================================================== */
/* I2C.h */
/* ========================================================================== */
/**
* @file I2C.h
* @author wehrberger
* @date 31.05.2025
*
* @brief Schnittstelle für einen minimalen blockierenden I²C-Master-Treiber.
*/
#ifndef I2C_H
#define I2C_H
#include <stdint.h>
#include <stdbool.h>
/**
* @brief Initialisiert das I²C-Modul als Master (SMCLK/20 → 50 kHz).
*/
void I2C_init(void);
/**
* @brief Sendet ein Datenpacket an einen I²C-Slave.
*
* @param slaveAddress 7-Bit I²C-Adresse des Zielgeräts.
* @param data Zeiger auf zu sendende Bytes.
* @param length Anzahl der zu sendenden Bytes.
*/
void I2C_write(uint8_t slaveAddress, char data[], uint8_t length);
/**
* @brief Liest ein einzelnes Byte aus einem Register eines I²C-Slaves.
*
* Führt zunächst einen Schreibvorgang durch, um die Registeradresse zu senden,
* und liest dann per Repeated START ein Byte zurück.
*
* @param slaveAddress 7-Bit I²C-Adresse des Zielgeräts.
* @param registerAddress Adresse des auszulesenden Registers.
* @return Das gelesene Byte.
*/
char I2C_read_reg(uint8_t slaveAddress, uint8_t registerAddress);
#endif /* I2C_H */