* I2C_TIMEOUT is not defined on arm teensy * Work round teensy having different ChibiOS config options * Stash OLED conf files * update comment * update comment * Remove stm32 alias to allow teensy alt modemaster
@@ -32,7 +32,9 @@ | |||
static uint8_t i2c_address; | |||
static const I2CConfig i2cconfig = { | |||
#ifdef USE_I2CV1 | |||
#if defined(USE_I2CV1_CONTRIB) | |||
I2C1_CLOCK_SPEED, | |||
#elif defined(USE_I2CV1) | |||
I2C1_OPMODE, | |||
I2C1_CLOCK_SPEED, | |||
I2C1_DUTY_CYCLE, | |||
@@ -62,8 +64,8 @@ __attribute__((weak)) void i2c_init(void) { | |||
chThdSleepMilliseconds(10); | |||
#if defined(USE_GPIOV1) | |||
palSetPadMode(I2C1_SCL_BANK, I2C1_SCL, PAL_MODE_STM32_ALTERNATE_OPENDRAIN); | |||
palSetPadMode(I2C1_SDA_BANK, I2C1_SDA, PAL_MODE_STM32_ALTERNATE_OPENDRAIN); | |||
palSetPadMode(I2C1_SCL_BANK, I2C1_SCL, I2C1_SCL_PAL_MODE); | |||
palSetPadMode(I2C1_SDA_BANK, I2C1_SDA, I2C1_SDA_PAL_MODE); | |||
#else | |||
palSetPadMode(I2C1_SCL_BANK, I2C1_SCL, PAL_MODE_ALTERNATE(I2C1_SCL_PAL_MODE) | PAL_STM32_OTYPE_OPENDRAIN); | |||
palSetPadMode(I2C1_SDA_BANK, I2C1_SDA, PAL_MODE_ALTERNATE(I2C1_SDA_PAL_MODE) | PAL_STM32_OTYPE_OPENDRAIN); |
@@ -81,7 +81,14 @@ | |||
# define I2C_DRIVER I2CD1 | |||
#endif | |||
#ifndef USE_GPIOV1 | |||
#ifdef USE_GPIOV1 | |||
# ifndef I2C1_SCL_PAL_MODE | |||
# define I2C1_SCL_PAL_MODE PAL_MODE_STM32_ALTERNATE_OPENDRAIN | |||
# endif | |||
# ifndef I2C1_SDA_PAL_MODE | |||
# define I2C1_SDA_PAL_MODE PAL_MODE_STM32_ALTERNATE_OPENDRAIN | |||
# endif | |||
#else | |||
// The default PAL alternate modes are used to signal that the pins are used for I2C | |||
# ifndef I2C1_SCL_PAL_MODE | |||
# define I2C1_SCL_PAL_MODE 4 |
@@ -82,14 +82,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
#define I2C_CMD 0x00 | |||
#define I2C_DATA 0x40 | |||
#if defined(__AVR__) | |||
// already defined on ARM | |||
# define I2C_TIMEOUT 100 | |||
# define I2C_TRANSMIT_P(data) i2c_transmit_P((OLED_DISPLAY_ADDRESS << 1), &data[0], sizeof(data), I2C_TIMEOUT) | |||
# define I2C_TRANSMIT_P(data) i2c_transmit_P((OLED_DISPLAY_ADDRESS << 1), &data[0], sizeof(data), OLED_I2C_TIMEOUT) | |||
#else // defined(__AVR__) | |||
# define I2C_TRANSMIT_P(data) i2c_transmit((OLED_DISPLAY_ADDRESS << 1), &data[0], sizeof(data), I2C_TIMEOUT) | |||
# define I2C_TRANSMIT_P(data) i2c_transmit((OLED_DISPLAY_ADDRESS << 1), &data[0], sizeof(data), OLED_I2C_TIMEOUT) | |||
#endif // defined(__AVR__) | |||
#define I2C_TRANSMIT(data) i2c_transmit((OLED_DISPLAY_ADDRESS << 1), &data[0], sizeof(data), I2C_TIMEOUT) | |||
#define I2C_WRITE_REG(mode, data, size) i2c_writeReg((OLED_DISPLAY_ADDRESS << 1), mode, data, size, I2C_TIMEOUT) | |||
#define I2C_TRANSMIT(data) i2c_transmit((OLED_DISPLAY_ADDRESS << 1), &data[0], sizeof(data), OLED_I2C_TIMEOUT) | |||
#define I2C_WRITE_REG(mode, data, size) i2c_writeReg((OLED_DISPLAY_ADDRESS << 1), mode, data, size, OLED_I2C_TIMEOUT) | |||
#define HAS_FLAGS(bits, flags) ((bits & flags) == flags) | |||
@@ -150,6 +150,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
# endif | |||
#endif | |||
#if !defined(OLED_I2C_TIMEOUT) | |||
# define OLED_I2C_TIMEOUT 100 | |||
#endif | |||
// OLED Rotation enum values are flags | |||
typedef enum { | |||
OLED_ROTATION_0 = 0, |
@@ -22,3 +22,9 @@ | |||
#define MATRIX_COL_PINS { D5 } | |||
#define MATRIX_ROW_PINS { B2 } | |||
#define UNUSED_PINS | |||
// i2c_master defines | |||
#define I2C1_SCL 0 // A2 on pinout = B0 | |||
#define I2C1_SDA 1 // A3 on pinout = B1 | |||
#define I2C1_SCL_PAL_MODE PAL_MODE_ALTERNATIVE_2 | |||
#define I2C1_SDA_PAL_MODE PAL_MODE_ALTERNATIVE_2 |
@@ -79,7 +79,7 @@ | |||
* @brief Enables the I2C subsystem. | |||
*/ | |||
#if !defined(HAL_USE_I2C) || defined(__DOXYGEN__) | |||
#define HAL_USE_I2C FALSE | |||
#define HAL_USE_I2C TRUE | |||
#endif | |||
/** |
@@ -42,4 +42,10 @@ | |||
* 5 for Teensy 3.x */ | |||
#define KINETIS_USB_USB0_IRQ_PRIORITY 5 | |||
/* | |||
* I2C driver settings | |||
*/ | |||
#define KINETIS_I2C_USE_I2C0 TRUE | |||
#define KINETIS_I2C_I2C0_PRIORITY 4 | |||
#endif /* _MCUCONF_H_ */ |
@@ -22,3 +22,9 @@ | |||
#define MATRIX_COL_PINS { D5 } | |||
#define MATRIX_ROW_PINS { B2 } | |||
#define UNUSED_PINS | |||
// i2c_master defines | |||
#define I2C1_SCL 0 // A2 on pinout = B0 | |||
#define I2C1_SDA 1 // A3 on pinout = B1 | |||
#define I2C1_SCL_PAL_MODE PAL_MODE_ALTERNATIVE_2 | |||
#define I2C1_SDA_PAL_MODE PAL_MODE_ALTERNATIVE_2 |
@@ -79,7 +79,7 @@ | |||
* @brief Enables the I2C subsystem. | |||
*/ | |||
#if !defined(HAL_USE_I2C) || defined(__DOXYGEN__) | |||
#define HAL_USE_I2C FALSE | |||
#define HAL_USE_I2C TRUE | |||
#endif | |||
/** |
@@ -42,4 +42,10 @@ | |||
* 5 for Teensy 3.x */ | |||
#define KINETIS_USB_USB0_IRQ_PRIORITY 2 | |||
/* | |||
* I2C driver settings | |||
*/ | |||
#define KINETIS_I2C_USE_I2C0 TRUE | |||
#define KINETIS_I2C_I2C0_PRIORITY 4 | |||
#endif /* _MCUCONF_H_ */ |
@@ -22,3 +22,10 @@ | |||
#if defined(STM32F1XX) || defined(STM32F2XX) || defined(STM32F4XX) || defined(STM32L1XX) | |||
# define USE_I2CV1 | |||
#endif | |||
// teensy | |||
#if defined(K20x) || defined(KL2x) | |||
# define USE_I2CV1 | |||
# define USE_I2CV1_CONTRIB // for some reason a bunch of ChibiOS-Contrib boards only have clock_speed | |||
# define USE_GPIOV1 | |||
#endif |