4 * Created on: May 8, 2011
5 * Author: Michael Smith
8 #ifndef PIOS_I2C_CONFIG_H_
9 #define PIOS_I2C_CONFIG_H_
12 * Generic I2C configuration for the STM32F4xx
14 #define I2C_CONFIG(_i2c, _scl_gpio, _scl_pin, _sda_gpio, _sda_pin) \
17 .remap = GPIO_AF_##_i2c, \
19 .I2C_ClockSpeed = 400000, /* bits/s */ \
20 .I2C_Mode = I2C_Mode_I2C, \
21 .I2C_DutyCycle = I2C_DutyCycle_2, \
22 .I2C_OwnAddress1 = 0, \
23 .I2C_Ack = I2C_Ack_Enable, \
24 .I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit, \
26 .transfer_timeout_ms = 50, \
30 .GPIO_Pin = _scl_pin, \
31 .GPIO_Mode = GPIO_Mode_AF, \
32 .GPIO_Speed = GPIO_Speed_50MHz, \
33 .GPIO_OType = GPIO_OType_OD, \
34 .GPIO_PuPd = GPIO_PuPd_NOPULL, \
40 .GPIO_Pin = _sda_pin, \
41 .GPIO_Mode = GPIO_Mode_AF, \
42 .GPIO_Speed = GPIO_Speed_50MHz, \
43 .GPIO_OType = GPIO_OType_OD, \
44 .GPIO_PuPd = GPIO_PuPd_NOPULL, \
48 .flags = 0, /* FIXME: check this */ \
50 .NVIC_IRQChannel = _i2c##_EV_IRQn, \
51 .NVIC_IRQChannelPreemptionPriority = PIOS_IRQ_PRIO_HIGHEST, \
52 .NVIC_IRQChannelSubPriority = 0, \
53 .NVIC_IRQChannelCmd = ENABLE, \
57 .flags = 0, /* FIXME: check this */ \
59 .NVIC_IRQChannel = _i2c##_ER_IRQn, \
60 .NVIC_IRQChannelPreemptionPriority = PIOS_IRQ_PRIO_HIGHEST, \
61 .NVIC_IRQChannelSubPriority = 0, \
62 .NVIC_IRQChannelCmd = ENABLE, \
67 #endif /* PIOS_I2C_CONFIG_H_ */