45 lines
1.3 KiB
C
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 */
|