|
libopencm3
A free/libre/open-source firmware library for various ARM Cortex-M3 microcontrollers.
|

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... | |
| bool i2c_busy | ( | uint32_t | i2c | ) |
Definition at line 268 of file i2c_common_v2.c.
References I2C_ISR, and I2C_ISR_BUSY.
| void i2c_clear_stop | ( | uint32_t | i2c | ) |
I2C Clear Stop Flag.
Clear the "Send Stop" flag in the I2C config register
| [in] | i2c | Unsigned int32. I2C register base address I2C register base address. |
Definition at line 89 of file i2c_common_v2.c.
References I2C_ICR, and I2C_ICR_STOPCF.
| void i2c_disable_analog_filter | ( | uint32_t | i2c | ) |
Definition at line 150 of file i2c_common_v2.c.
References I2C_CR1, and I2C_CR1_ANFOFF.
| void i2c_disable_autoend | ( | uint32_t | i2c | ) |
Definition at line 258 of file i2c_common_v2.c.
References I2C_CR2.
Referenced by i2c_transfer7().

| void i2c_disable_interrupt | ( | uint32_t | i2c, |
| uint32_t | interrupt | ||
| ) |
I2C Disable Interrupt.
| [in] | i2c | Unsigned int32. I2C register base address I2C register base address. |
| [in] | interrupt | Unsigned int32. Interrupt to disable. |
Definition at line 306 of file i2c_common_v2.c.
References I2C_CR1.
| void i2c_disable_rxdma | ( | uint32_t | i2c | ) |
I2C Disable reception DMA.
| [in] | i2c | Unsigned int32. I2C register base address I2C register base address. |
Definition at line 326 of file i2c_common_v2.c.
References I2C_CR1.
| void i2c_disable_stretching | ( | uint32_t | i2c | ) |
Definition at line 205 of file i2c_common_v2.c.
References I2C_CR1, and I2C_CR1_NOSTRETCH.
| void i2c_disable_txdma | ( | uint32_t | i2c | ) |
I2C Disable transmission DMA.
| [in] | i2c | Unsigned int32. I2C register base address I2C register base address. |
Definition at line 346 of file i2c_common_v2.c.
References I2C_CR1.
| void i2c_enable_analog_filter | ( | uint32_t | i2c | ) |
Definition at line 145 of file i2c_common_v2.c.
References I2C_CR1.
| void i2c_enable_autoend | ( | uint32_t | i2c | ) |
Definition at line 253 of file i2c_common_v2.c.
References I2C_CR2, and I2C_CR2_AUTOEND.
Referenced by i2c_transfer7().

| void i2c_enable_interrupt | ( | uint32_t | i2c, |
| uint32_t | interrupt | ||
| ) |
I2C Enable Interrupt.
| [in] | i2c | Unsigned int32. I2C register base address I2C register base address. |
| [in] | interrupt | Unsigned int32. Interrupt to enable. |
Definition at line 295 of file i2c_common_v2.c.
References I2C_CR1.
| void i2c_enable_rxdma | ( | uint32_t | i2c | ) |
I2C Enable reception DMA.
| [in] | i2c | Unsigned int32. I2C register base address I2C register base address. |
Definition at line 316 of file i2c_common_v2.c.
References I2C_CR1, and I2C_CR1_RXDMAEN.
| void i2c_enable_stretching | ( | uint32_t | i2c | ) |
Definition at line 200 of file i2c_common_v2.c.
References I2C_CR1.
| void i2c_enable_txdma | ( | uint32_t | i2c | ) |
I2C Enable transmission DMA.
| [in] | i2c | Unsigned int32. I2C register base address I2C register base address. |
Definition at line 336 of file i2c_common_v2.c.
References I2C_CR1, and I2C_CR1_TXDMAEN.
| uint8_t i2c_get_data | ( | uint32_t | i2c | ) |
I2C Get Data.
| [in] | i2c | Unsigned int32. I2C register base address I2C register base address. |
Definition at line 140 of file i2c_common_v2.c.
References I2C_RXDR.
Referenced by i2c_transfer7().

| bool i2c_is_start | ( | uint32_t | i2c | ) |
Definition at line 248 of file i2c_common_v2.c.
References I2C_CR2, and I2C_CR2_START.
| bool i2c_nack | ( | uint32_t | i2c | ) |
Definition at line 263 of file i2c_common_v2.c.
References I2C_ISR, and I2C_ISR_NACKF.
Referenced by i2c_transfer7().

| void i2c_peripheral_disable | ( | uint32_t | i2c | ) |
I2C Peripheral Disable.
This must not be reset while in Master mode until a communication has finished. In Slave mode, the peripheral is disabled only after communication has ended.
| [in] | i2c | Unsigned int32. I2C register base address I2C register base address. |
Definition at line 48 of file i2c_common_v2.c.
References I2C_CR1.
| void i2c_peripheral_enable | ( | uint32_t | i2c | ) |
I2C Peripheral Enable.
| [in] | i2c | Unsigned int32. I2C register base address I2C register base address. |
Definition at line 33 of file i2c_common_v2.c.
References I2C_CR1, and I2C_CR1_PE.
| bool i2c_received_data | ( | uint32_t | i2c | ) |
Definition at line 283 of file i2c_common_v2.c.
References I2C_ISR, and I2C_ISR_RXNE.
Referenced by i2c_transfer7().

| void i2c_send_data | ( | uint32_t | i2c, |
| uint8_t | data | ||
| ) |
I2C Send Data.
| [in] | i2c | Unsigned int32. I2C register base address I2C register base address. |
| [in] | data | Unsigned int8. Byte to send. |
Definition at line 130 of file i2c_common_v2.c.
References I2C_TXDR.
Referenced by i2c_transfer7().

| void i2c_send_start | ( | uint32_t | i2c | ) |
I2C Send Start Condition.
If in Master mode this will cause a restart condition to occur at the end of the current transmission. If in Slave mode, this will initiate a start condition when the current bus activity is completed.
| [in] | i2c | Unsigned int32. I2C register base address I2C register base address. |
Definition at line 63 of file i2c_common_v2.c.
References I2C_CR2, and I2C_CR2_START.
Referenced by i2c_transfer7().

| void i2c_send_stop | ( | uint32_t | i2c | ) |
I2C Send Stop Condition.
After the current byte transfer this will initiate a stop condition if in Master mode, or simply release the bus if in Slave mode.
| [in] | i2c | Unsigned int32. I2C register base address I2C register base address. |
Definition at line 77 of file i2c_common_v2.c.
References I2C_CR2, and I2C_CR2_STOP.
| void i2c_set_10bit_addr_mode | ( | uint32_t | i2c | ) |
Definition at line 215 of file i2c_common_v2.c.
References I2C_CR2, and I2C_CR2_ADD10.
| void i2c_set_10bit_address | ( | uint32_t | i2c, |
| uint16_t | addr | ||
| ) |
Definition at line 226 of file i2c_common_v2.c.
References I2C_CR2, and I2C_CR2_SADD_10BIT_SHIFT.
| void i2c_set_7bit_addr_mode | ( | uint32_t | i2c | ) |
Definition at line 210 of file i2c_common_v2.c.
References I2C_CR2.
| void i2c_set_7bit_address | ( | uint32_t | i2c, |
| uint8_t | addr | ||
| ) |
Definition at line 220 of file i2c_common_v2.c.
References I2C_CR2, and I2C_CR2_SADD_7BIT_SHIFT.
Referenced by i2c_transfer7().

| void i2c_set_bytes_to_transfer | ( | uint32_t | i2c, |
| uint32_t | n_bytes | ||
| ) |
Definition at line 242 of file i2c_common_v2.c.
References I2C_CR2, and I2C_CR2_NBYTES_SHIFT.
Referenced by i2c_transfer7().

| void i2c_set_data_hold_time | ( | uint32_t | i2c, |
| uint8_t | h_time | ||
| ) |
Definition at line 182 of file i2c_common_v2.c.
References I2C_TIMINGR, and I2C_TIMINGR_SDADEL_SHIFT.
Referenced by i2c_set_speed().

| void i2c_set_data_setup_time | ( | uint32_t | i2c, |
| uint8_t | s_time | ||
| ) |
Definition at line 176 of file i2c_common_v2.c.
References I2C_TIMINGR, and I2C_TIMINGR_SCLDEL_SHIFT.
Referenced by i2c_set_speed().

| void i2c_set_digital_filter | ( | uint32_t | i2c, |
| uint8_t | dnf_setting | ||
| ) |
Set the I2C digital filter.
These bits are used to configure the digital noise filter on SDA and SCL input. The digital filter will filter spikes with a length of up to dnf_setting * I2CCLK clocks
| i2c | peripheral of interest |
| dnf_setting | 0 to disable, else 1..15 i2c clocks |
Definition at line 163 of file i2c_common_v2.c.
References I2C_CR1, I2C_CR1_DNF_MASK, and I2C_CR1_DNF_SHIFT.
| void i2c_set_own_10bit_slave_address | ( | uint32_t | i2c, |
| uint16_t | slave | ||
| ) |
I2C Set the 10 bit Slave Address for the Peripheral.
This sets an address for Slave mode operation, in 10 bit form.
| [in] | i2c | Unsigned int32. I2C register base address I2C register base address. |
| [in] | slave | Unsigned int16. Slave address 0...1023. |
Definition at line 118 of file i2c_common_v2.c.
References I2C_OAR1, and I2C_OAR1_OA1MODE.
| void i2c_set_own_7bit_slave_address | ( | uint32_t | i2c, |
| uint8_t | slave | ||
| ) |
I2C Set the 7 bit Slave Address for the Peripheral.
This sets an address for Slave mode operation, in 7 bit form.
| [in] | i2c | Unsigned int32. I2C register base address I2C register base address. |
| [in] | slave | Unsigned int8. Slave address 0...127. |
Definition at line 103 of file i2c_common_v2.c.
References I2C_OAR1.
| void i2c_set_prescaler | ( | uint32_t | i2c, |
| uint8_t | presc | ||
| ) |
Definition at line 170 of file i2c_common_v2.c.
References I2C_TIMINGR, and I2C_TIMINGR_PRESC_SHIFT.
Referenced by i2c_set_speed().

| void i2c_set_read_transfer_dir | ( | uint32_t | i2c | ) |
Definition at line 237 of file i2c_common_v2.c.
References I2C_CR2, and I2C_CR2_RD_WRN.
Referenced by i2c_transfer7().

| void i2c_set_scl_high_period | ( | uint32_t | i2c, |
| uint8_t | period | ||
| ) |
Definition at line 188 of file i2c_common_v2.c.
References I2C_TIMINGR, and I2C_TIMINGR_SCLH_SHIFT.
Referenced by i2c_set_speed().

| void i2c_set_scl_low_period | ( | uint32_t | i2c, |
| uint8_t | period | ||
| ) |
Definition at line 194 of file i2c_common_v2.c.
References I2C_TIMINGR, and I2C_TIMINGR_SCLL_SHIFT.
Referenced by i2c_set_speed().

| void i2c_set_speed | ( | uint32_t | i2c, |
| enum i2c_speeds | speed, | ||
| uint32_t | clock_megahz | ||
| ) |
Set the i2c communication speed.
NOTE: 1MHz mode not yet implemented! Min clock speed: 8MHz for FM, 2Mhz for SM,
| i2c | peripheral, eg I2C1 |
| speed | one of the listed speed modes i2c_speeds |
| clock_megahz | i2c peripheral clock speed in MHz. Usually, rcc_apb1_frequency / 1e6 |
Definition at line 420 of file i2c_common_v2.c.
References i2c_set_data_hold_time(), i2c_set_data_setup_time(), i2c_set_prescaler(), i2c_set_scl_high_period(), i2c_set_scl_low_period(), i2c_speed_fm_400k, i2c_speed_fmp_1m, and i2c_speed_sm_100k.

| void i2c_set_write_transfer_dir | ( | uint32_t | i2c | ) |
Definition at line 232 of file i2c_common_v2.c.
References I2C_CR2.
Referenced by i2c_transfer7().

| 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.
Both write and read are optional
| i2c | peripheral of choice, eg I2C1 |
| addr | 7 bit i2c device address |
| w | buffer of data to write |
| wn | length of w |
| r | destination buffer to read into |
| rn | number of bytes to read (r should be at least this long) |
Definition at line 362 of file i2c_common_v2.c.
References i2c_disable_autoend(), i2c_enable_autoend(), i2c_get_data(), i2c_nack(), i2c_received_data(), i2c_send_data(), i2c_send_start(), i2c_set_7bit_address(), i2c_set_bytes_to_transfer(), i2c_set_read_transfer_dir(), i2c_set_write_transfer_dir(), i2c_transfer_complete(), and i2c_transmit_int_status().

| bool i2c_transfer_complete | ( | uint32_t | i2c | ) |
Definition at line 278 of file i2c_common_v2.c.
References I2C_ISR, and I2C_ISR_TC.
Referenced by i2c_transfer7().

| bool i2c_transmit_int_status | ( | uint32_t | i2c | ) |
Definition at line 273 of file i2c_common_v2.c.
References I2C_ISR, and I2C_ISR_TXIS.
Referenced by i2c_transfer7().
