gossamer 0.0.0
a very lightweight app framework for SAMD and SAML chips
Loading...
Searching...
No Matches
i2c.h
Go to the documentation of this file.
1
5/*
6 Cribbed from the Castor & Pollux Gemini firmware:
7 https://github.com/wntrblm/Castor_and_Pollux/
8 Copyright (c) 2021 Alethea Katherine Flowers.
9 Published under the standard MIT License.
10 Full text available at: https://opensource.org/licenses/MIT
11*/
12
13#pragma once
14
15/* Routines for interacting with I2C devices. */
16
17#include <stdint.h>
18#include <stdbool.h>
19#include <stddef.h>
20
21typedef enum {
22 I2C_RESULT_SUCCESS = 0,
23 I2C_RESULT_ERR_ADDR_NACK = -1,
24 I2C_RESULT_ERR_BUSSTATE = -2,
25 I2C_RESULT_ERR_BUSERR = -3,
26 I2C_RESULT_ERR_DATA_NACK = -4,
27} I2CResult;
28
36void i2c_init(void);
37
41void i2c_enable(void);
42
49I2CResult i2c_write(uint8_t address, uint8_t* data, size_t len);
50
57I2CResult i2c_read(uint8_t address, uint8_t* data, size_t len);
58
62void i2c_disable(void);
63
72void i2c_init_instance(uint8_t sercom, uint32_t baud);
73
78void i2c_enable_instance(uint8_t sercom);
79
87I2CResult i2c_write_instance(uint8_t sercom, uint8_t address, uint8_t* data, size_t len);
88
96I2CResult i2c_read_instance(uint8_t sercom, uint8_t address, uint8_t* data, size_t len);
97
102void i2c_disable_instance(uint8_t sercom);
void i2c_init(void)
Initializes the I2C peripheral for a board with defined SDA/SCL pins. Defaults to a bus speed of 100k...
void i2c_enable(void)
Enables the I2C peripheral for a board with defined SDA/SCL pins.
I2CResult i2c_write_instance(uint8_t sercom, uint8_t address, uint8_t *data, size_t len)
Writes data to an I2C device on the given SERCOM at the provided address.
Definition: i2c.c:91
void i2c_enable_instance(uint8_t sercom)
Enables the I2C peripheral on the given SERCOM.
Definition: i2c.c:83
void i2c_disable_instance(uint8_t sercom)
Disables the I2C peripheral on the given SERCOM.
Definition: i2c.c:190
I2CResult i2c_write(uint8_t address, uint8_t *data, size_t len)
Writes data to an I2C device at the provided address.
void i2c_disable(void)
Disables the I2C peripheral for a board with defined SDA/SCL pins.
I2CResult i2c_read_instance(uint8_t sercom, uint8_t address, uint8_t *data, size_t len)
Reads data from an I2C device on the given SERCOM at the provided address.
Definition: i2c.c:144
I2CResult i2c_read(uint8_t address, uint8_t *data, size_t len)
Reads data from an I2C device at the provided address.
void i2c_init_instance(uint8_t sercom, uint32_t baud)
Initializes an I2C peripheral on the given SERCOM.
Definition: i2c.c:44