libopencm3
A free/libre/open-source firmware library for various ARM Cortex-M3 microcontrollers.
|
#include <stddef.h>
#include <stdint.h>
Go to the source code of this file.
Macros | |
#define | I2C1 I2C1_BASE |
#define | I2C2 I2C2_BASE |
#define | I2C_CR1(i2c_base) MMIO32((i2c_base) + 0x00) |
#define | I2C1_CR1 I2C_CR1(I2C1) |
#define | I2C2_CR1 I2C_CR1(I2C2) |
#define | I2C_CR2(i2c_base) MMIO32((i2c_base) + 0x04) |
#define | I2C1_CR2 I2C_CR2(I2C1) |
#define | I2C2_CR2 I2C_CR2(I2C2) |
#define | I2C_OAR1(i2c_base) MMIO32((i2c_base) + 0x08) |
#define | I2C1_OAR1 I2C_OAR1(I2C1) |
#define | I2C2_OAR1 I2C_OAR1(I2C2) |
#define | I2C_OAR2(i2c_base) MMIO32((i2c_base) + 0x0c) |
#define | I2C1_OAR2 I2C_OAR2(I2C1) |
#define | I2C2_OAR2 I2C_OAR2(I2C2) |
#define | I2C_TIMINGR(i2c_base) MMIO32((i2c_base) + 0x10) |
#define | I2C1_TIMINGR I2C_TIMINGR(I2C1) |
#define | I2C2_TIMINGR I2C_TIMINGR(I2C2) |
#define | I2C_TIMEOUTR(i2c_base) MMIO32((i2c_base) + 0x14) |
#define | I2C1_TIMEOUTR I2C_TIMEOUTR(I2C1) |
#define | I2C2_TIMEOUTR I2C_TIMEOUTR(I2C2) |
#define | I2C_ISR(i2c_base) MMIO32((i2c_base) + 0x18) |
#define | I2C1_ISR I2C_ISR(I2C1) |
#define | I2C2_ISR I2C_ISR(I2C2) |
#define | I2C_ICR(i2c_base) MMIO32((i2c_base) + 0x1C) |
#define | I2C1_ICR I2C_ICR(I2C1) |
#define | I2C2_ICR I2C_ICR(I2C2) |
#define | I2C_PECR(i2c_base) MMIO32((i2c_base) + 0x20) |
#define | I2C1_PECR I2C_PECR(I2C1) |
#define | I2C2_PECR I2C_PECR(I2C2) |
#define | I2C_RXDR(i2c_base) MMIO32((i2c_base) + 0x24) |
#define | I2C1_RXDR I2C_RXDR(I2C1) |
#define | I2C2_RXDR I2C_RXDR(I2C2) |
#define | I2C_TXDR(i2c_base) MMIO32((i2c_base) + 0x28) |
#define | I2C1_TXDR I2C_TXDR(I2C1) |
#define | I2C2_TXDR I2C_TXDR(I2C2) |
#define | I2C_CR1_PECEN (1 << 23) |
#define | I2C_CR1_ALERTEN (1 << 22) |
#define | I2C_CR1_SMBDEN (1 << 21) |
#define | I2C_CR1_SMBHEN (1 << 20) |
#define | I2C_CR1_GCEN (1 << 19) |
#define | I2C_CR1_WUPEN (1 << 18) |
#define | I2C_CR1_NOSTRETCH (1 << 17) |
#define | I2C_CR1_SBC (1 << 16) |
#define | I2C_CR1_RXDMAEN (1 << 15) |
#define | I2C_CR1_TXDMAEN (1 << 14) |
#define | I2C_CR1_ANFOFF (1 << 12) |
#define | I2C_CR1_DNF_MASK 0xF |
DNF[3:0]: Digital noise filter. More... | |
#define | I2C_CR1_DNF_SHIFT 8 |
#define | I2C_CR1_ERRIE (1 << 7) |
#define | I2C_CR1_TCIE (1 << 6) |
#define | I2C_CR1_STOPIE (1 << 5) |
#define | I2C_CR1_NACKIE (1 << 4) |
#define | I2C_CR1_ADDRIE (1 << 3) |
#define | I2C_CR1_RXIE (1 << 2) |
#define | I2C_CR1_TXIE (1 << 1) |
#define | I2C_CR1_PE (1 << 0) |
#define | I2C_CR2_PECBYTE (1 << 26) |
#define | I2C_CR2_AUTOEND (1 << 25) |
#define | I2C_CR2_RELOAD (1 << 24) |
#define | I2C_CR2_NBYTES_SHIFT 16 |
#define | I2C_CR2_NBYTES_MASK (0xFF << I2C_CR2_NBYTES_SHIFT) |
#define | I2C_CR2_NACK (1 << 15) |
#define | I2C_CR2_STOP (1 << 14) |
#define | I2C_CR2_START (1 << 13) |
#define | I2C_CR2_HEAD10R (1 << 12) |
#define | I2C_CR2_ADD10 (1 << 11) |
#define | I2C_CR2_RD_WRN (1 << 10) |
#define | I2C_CR2_SADD_7BIT_SHIFT 1 |
#define | I2C_CR2_SADD_10BIT_SHIFT 0 |
#define | I2C_CR2_SADD_7BIT_MASK (0x7F << I2C_CR2_SADD_7BIT_SHIFT) |
#define | I2C_CR2_SADD_10BIT_MASK 0x3FF |
#define | I2C_OAR1_OA1EN_DISABLE (0x0 << 15) |
#define | I2C_OAR1_OA1EN_ENABLE (0x1 << 15) |
#define | I2C_OAR1_OA1MODE (1 << 10) |
#define | I2C_OAR1_OA1MODE_7BIT 0 |
#define | I2C_OAR1_OA1MODE_10BIT 1 |
#define | I2C_OAR1_OA1 (1 << 10) |
#define | I2C_OAR1_OA1_7BIT 0 |
#define | I2C_OAR1_OA1_10BIT 1 |
#define | I2C_OAR2_OA2EN (1 << 15) |
#define | I2C_OAR2_OA2MSK_NO_MASK (0x0 << 8) |
#define | I2C_OAR2_OA2MSK_OA2_7_OA2_2 (0x1 << 8) |
#define | I2C_OAR2_OA2MSK_OA2_7_OA2_3 (0x2 << 8) |
#define | I2C_OAR2_OA2MSK_OA2_7_OA2_4 (0x3 << 8) |
#define | I2C_OAR2_OA2MSK_OA2_7_OA2_5 (0x4 << 8) |
#define | I2C_OAR2_OA2MSK_OA2_7_OA2_6 (0x5 << 8) |
#define | I2C_OAR2_OA2MSK_OA2_7 (0x6 << 8) |
#define | I2C_OAR2_OA2MSK_NO_CMP (0x7 << 8) |
#define | I2C_TIMINGR_PRESC_SHIFT 28 |
#define | I2C_TIMINGR_PRESC_MASK (0xF << 28) |
#define | I2C_TIMINGR_SCLDEL_SHIFT 20 |
#define | I2C_TIMINGR_SCLDEL_MASK (0xF << I2C_TIMINGR_SCLDEL_SHIFT) |
#define | I2C_TIMINGR_SDADEL_SHIFT 16 |
#define | I2C_TIMINGR_SDADEL_MASK (0xF << I2C_TIMINGR_SDADEL_SHIFT) |
#define | I2C_TIMINGR_SCLH_SHIFT 8 |
#define | I2C_TIMINGR_SCLH_MASK (0xFF << I2C_TIMINGR_SCLH_SHIFT) |
#define | I2C_TIMINGR_SCLL_SHIFT 0 |
#define | I2C_TIMINGR_SCLL_MASK (0xFF << I2C_TIMINGR_SCLL_SHIFT) |
#define | I2C_TIEMOUTR_TEXTEN (1 << 31) |
#define | I2C_TIEMOUTR_TIMOUTEN (1 << 15) |
#define | I2C_TIEMOUTR_TIDLE_SCL_LOW (0x0 << 12) |
#define | I2C_TIEMOUTR_TIDLE_SCL_SDA_HIGH (0x1 << 12) |
#define | I2C_ISR_DIR_READ (0x1 << 16) |
#define | I2C_ISR_DIR_WRITE (0x0 << 16) |
#define | I2C_ISR_BUSY (1 << 15) |
#define | I2C_ISR_ALERT (1 << 13) |
#define | I2C_ISR_TIMEOUT (1 << 12) |
#define | I2C_ISR_PECERR (1 << 11) |
#define | I2C_ISR_OVR (1 << 10) |
#define | I2C_ISR_ARLO (1 << 9) |
#define | I2C_ISR_BERR (1 << 8) |
#define | I2C_ISR_TCR (1 << 7) |
#define | I2C_ISR_TC (1 << 6) |
#define | I2C_ISR_STOPF (1 << 5) |
#define | I2C_ISR_NACKF (1 << 4) |
#define | I2C_ISR_ADDR (1 << 3) |
#define | I2C_ISR_RXNE (1 << 2) |
#define | I2C_ISR_TXIS (1 << 1) |
#define | I2C_ISR_TXE (1 << 0) |
#define | I2C_ICR_ALERTCF (1 << 13) |
#define | I2C_ICR_TIMOUTCF (1 << 12) |
#define | I2C_ICR_PECCF (1 << 11) |
#define | I2C_ICR_OVRCF (1 << 10) |
#define | I2C_ICR_ARLOCF (1 << 9) |
#define | I2C_ICR_BERRCF (1 << 8) |
#define | I2C_ICR_STOPCF (1 << 5) |
#define | I2C_ICR_NACKCF (1 << 4) |
#define | I2C_ICR_ADDRCF (1 << 3) |
Enumerations | |
enum | i2c_speeds { i2c_speed_sm_100k , i2c_speed_fm_400k , i2c_speed_fmp_1m , i2c_speed_unknown } |
I2C speed modes. More... | |
Functions | |
void | i2c_peripheral_enable (uint32_t i2c) |
I2C Peripheral Enable. More... | |
void | i2c_peripheral_disable (uint32_t i2c) |
I2C Peripheral Disable. More... | |
void | i2c_send_start (uint32_t i2c) |
I2C Send Start Condition. More... | |
void | i2c_send_stop (uint32_t i2c) |
I2C Send Stop Condition. More... | |
void | i2c_clear_stop (uint32_t i2c) |
I2C Clear Stop Flag. More... | |
void | i2c_set_own_7bit_slave_address (uint32_t i2c, uint8_t slave) |
I2C Set the 7 bit Slave Address for the Peripheral. More... | |
void | i2c_set_own_10bit_slave_address (uint32_t i2c, uint16_t slave) |
I2C Set the 10 bit Slave Address for the Peripheral. More... | |
void | i2c_send_data (uint32_t i2c, uint8_t data) |
I2C Send Data. More... | |
uint8_t | i2c_get_data (uint32_t i2c) |
I2C Get Data. More... | |
void | i2c_enable_analog_filter (uint32_t i2c) |
void | i2c_disable_analog_filter (uint32_t i2c) |
void | i2c_set_digital_filter (uint32_t i2c, uint8_t dnf_setting) |
Set the I2C digital filter. More... | |
void | i2c_set_prescaler (uint32_t i2c, uint8_t presc) |
void | i2c_set_data_setup_time (uint32_t i2c, uint8_t s_time) |
void | i2c_set_data_hold_time (uint32_t i2c, uint8_t h_time) |
void | i2c_set_scl_high_period (uint32_t i2c, uint8_t period) |
void | i2c_set_scl_low_period (uint32_t i2c, uint8_t period) |
void | i2c_enable_stretching (uint32_t i2c) |
void | i2c_disable_stretching (uint32_t i2c) |
void | i2c_set_7bit_addr_mode (uint32_t i2c) |
void | i2c_set_10bit_addr_mode (uint32_t i2c) |
void | i2c_set_7bit_address (uint32_t i2c, uint8_t addr) |
void | i2c_set_10bit_address (uint32_t i2c, uint16_t addr) |
void | i2c_set_write_transfer_dir (uint32_t i2c) |
void | i2c_set_read_transfer_dir (uint32_t i2c) |
void | i2c_set_bytes_to_transfer (uint32_t i2c, uint32_t n_bytes) |
bool | i2c_is_start (uint32_t i2c) |
void | i2c_enable_autoend (uint32_t i2c) |
void | i2c_disable_autoend (uint32_t i2c) |
bool | i2c_nack (uint32_t i2c) |
bool | i2c_busy (uint32_t i2c) |
bool | i2c_transmit_int_status (uint32_t i2c) |
bool | i2c_transfer_complete (uint32_t i2c) |
bool | i2c_received_data (uint32_t i2c) |
void | i2c_enable_interrupt (uint32_t i2c, uint32_t interrupt) |
I2C Enable Interrupt. More... | |
void | i2c_disable_interrupt (uint32_t i2c, uint32_t interrupt) |
I2C Disable Interrupt. More... | |
void | i2c_enable_rxdma (uint32_t i2c) |
I2C Enable reception DMA. More... | |
void | i2c_disable_rxdma (uint32_t i2c) |
I2C Disable reception DMA. More... | |
void | i2c_enable_txdma (uint32_t i2c) |
I2C Enable transmission DMA. More... | |
void | i2c_disable_txdma (uint32_t i2c) |
I2C Disable transmission DMA. More... | |
void | i2c_transfer7 (uint32_t i2c, uint8_t addr, const uint8_t *w, size_t wn, uint8_t *r, size_t rn) |
Run a write/read transaction to a given 7bit i2c address If both write & read are provided, the read will use repeated start. More... | |
void | i2c_set_speed (uint32_t i2c, enum i2c_speeds speed, uint32_t clock_megahz) |
Set the i2c communication speed. More... | |