34#include "mcu_periph/i2c_arch.h" 
   45#ifndef I2C_THREAD_STACK_SIZE 
   46#define I2C_THREAD_STACK_SIZE 512 
   55#if USE_I2C1 || USE_I2C2 || USE_I2C3 || USE_I2C4 
   59#if defined(STM32F7XX) || defined(STM32H7XX) 
   81    ret |= (port->MODER >> (pad*2)) & 0x3;
 
   82    ret |= ((port->OTYPER >> pad)&1) << 2;
 
   83    ret |= ((port->OSPEEDR >> (pad*2))&3) << 3;
 
   84    ret |= ((port->PUPDR >> (pad*2))&3) << 5;
 
   86        ret |= ((port->AFRL >> (pad*4))&0xF) << 7;
 
   88        ret |= ((port->AFRH >> ((pad-8)*4))&0xF) << 7;
 
  128  if (
p->trans_insert_idx == 
p->trans_extract_idx) {
 
  141#if defined(STM32F7XX) || defined(STM32H7XX) 
  143    memcpy(i->dma_buf, (
void *)
t->buf, (
size_t)(
t->len_w));
 
  148               (
uint8_t *)i->dma_buf, (
size_t)(
t->len_w),
 
  149               (
uint8_t *)i->dma_buf, (
size_t)(
t->len_r),
 
  152    memcpy((
void *)
t->buf, i->dma_buf, (
size_t)(
t->len_r));
 
  162#if defined(STM32F7XX) || defined(STM32H7XX) 
  167               (
uint8_t *)i->dma_buf, (
size_t)(
t->len_r),
 
  170    memcpy((
void *)
t->buf, i->dma_buf, (
size_t)(
t->len_r));
 
  182  p->trans_extract_idx++;
 
  184    p->trans_extract_idx = 0;
 
  199      p->errors->unexpected_event_cnt++;
 
  212        p->errors->miss_start_stop_cnt++;
 
  215        p->errors->arb_lost_cnt++;
 
  218        p->errors->ack_fail_cnt++;
 
  221        p->errors->over_under_cnt++;
 
  224        p->errors->pec_recep_cnt++;
 
  227        p->errors->timeout_tlow_cnt++;
 
  230        p->errors->smbus_alert_cnt++;
 
  354#if defined(STM32H7XX) 
  423#if USE_I2C1 || USE_I2C2 || USE_I2C3 || USE_I2C4 
  427  temp = 
p->trans_insert_idx + 1;
 
  429  if (temp == 
p->trans_extract_idx) {
 
  431    p->errors->queue_full_cnt++;
 
  440  p->trans[
p->trans_insert_idx] = 
t;
 
  441  p->trans_insert_idx = temp;
 
 
#define I2C_THREAD_STACK_SIZE
static bool i2c_chibios_idle(struct i2c_periph *p)
i2c_idle() function
static bool i2c_chibios_submit(struct i2c_periph *p, struct i2c_transaction *t)
i2c_submit() function
static void i2c_chibios_setbitrate(struct i2c_periph *p, int bitrate)
i2c_setbitrate() function
static THD_WORKING_AREA(wa_thd_spi1, SPI_THREAD_STACK_SIZE)
void pprz_bsem_init(pprz_bsem_t *bsem, bool taken)
void pprz_bsem_signal(pprz_bsem_t *bsem)
enum I2CTransactionStatus status
Transaction status.
void i2c_event(void)
i2c_event() function
#define I2C_TRANSACTION_QUEUE_LEN
I2C transaction queue length.
#define I2C_BUF_LEN
I2C buffer length.
void i2c_init(struct i2c_periph *p)
Initialize I2C peripheral.
@ I2CTransSuccess
transaction successfully finished by I2C driver
@ I2CTransFailed
transaction failed
@ I2CTransPending
transaction is pending in queue
I2C transaction structure.
Architecture independent I2C (Inter-Integrated Circuit Bus) API.
PRINT_CONFIG_VAR(ONELOOP_ANDI_FILT_CUTOFF)
Specific RAM section for DMA usage on F7.
#define IN_DMA_SECTION(var)
#define IN_BDMA_SECTION(var)
unsigned char uint8_t
Typedef defining 8 bit unsigned char type.