Merged in f5soh/librepilot/update_credits (pull request #529)
[librepilot.git] / flight / pios / stm32f4xx / inc / pios_i2c_config.h
blobadabdcdc47adb5d61811285b4ce9d90d09fca7f7
1 /*
2 * pios_i2c_config.h
4 * Created on: May 8, 2011
5 * Author: Michael Smith
6 */
8 #ifndef PIOS_I2C_CONFIG_H_
9 #define PIOS_I2C_CONFIG_H_
11 /**
12 * Generic I2C configuration for the STM32F4xx
14 #define I2C_CONFIG(_i2c, _scl_gpio, _scl_pin, _sda_gpio, _sda_pin) \
15 { \
16 .regs = _i2c, \
17 .remap = GPIO_AF_##_i2c, \
18 .init = { \
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, \
25 }, \
26 .transfer_timeout_ms = 50, \
27 .scl = { \
28 .gpio = _scl_gpio, \
29 .init = { \
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, \
35 }, \
36 }, \
37 .sda = { \
38 .gpio = _sda_gpio, \
39 .init = { \
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, \
45 }, \
46 }, \
47 .event = { \
48 .flags = 0, /* FIXME: check this */ \
49 .init = { \
50 .NVIC_IRQChannel = _i2c##_EV_IRQn, \
51 .NVIC_IRQChannelPreemptionPriority = PIOS_IRQ_PRIO_HIGHEST, \
52 .NVIC_IRQChannelSubPriority = 0, \
53 .NVIC_IRQChannelCmd = ENABLE, \
54 }, \
55 }, \
56 .error = { \
57 .flags = 0, /* FIXME: check this */ \
58 .init = { \
59 .NVIC_IRQChannel = _i2c##_ER_IRQn, \
60 .NVIC_IRQChannelPreemptionPriority = PIOS_IRQ_PRIO_HIGHEST, \
61 .NVIC_IRQChannelSubPriority = 0, \
62 .NVIC_IRQChannelCmd = ENABLE, \
63 }, \
64 }, \
67 #endif /* PIOS_I2C_CONFIG_H_ */