Enable OLED support for Teensy 3.2/LC (#7591)
* 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 mode format code according to conventions [skip ci]
This commit is contained in:
committed by
Drashna Jael're
parent
215fdc39fd
commit
cd0523e7d4
@@ -32,7 +32,9 @@
|
|||||||
static uint8_t i2c_address;
|
static uint8_t i2c_address;
|
||||||
|
|
||||||
static const I2CConfig i2cconfig = {
|
static const I2CConfig i2cconfig = {
|
||||||
#ifdef USE_I2CV1
|
#if defined(USE_I2CV1_CONTRIB)
|
||||||
|
I2C1_CLOCK_SPEED,
|
||||||
|
#elif defined(USE_I2CV1)
|
||||||
I2C1_OPMODE,
|
I2C1_OPMODE,
|
||||||
I2C1_CLOCK_SPEED,
|
I2C1_CLOCK_SPEED,
|
||||||
I2C1_DUTY_CYCLE,
|
I2C1_DUTY_CYCLE,
|
||||||
@@ -62,8 +64,8 @@ __attribute__((weak)) void i2c_init(void) {
|
|||||||
|
|
||||||
chThdSleepMilliseconds(10);
|
chThdSleepMilliseconds(10);
|
||||||
#if defined(USE_GPIOV1)
|
#if defined(USE_GPIOV1)
|
||||||
palSetPadMode(I2C1_SCL_BANK, I2C1_SCL, PAL_MODE_STM32_ALTERNATE_OPENDRAIN);
|
palSetPadMode(I2C1_SCL_BANK, I2C1_SCL, I2C1_SCL_PAL_MODE);
|
||||||
palSetPadMode(I2C1_SDA_BANK, I2C1_SDA, PAL_MODE_STM32_ALTERNATE_OPENDRAIN);
|
palSetPadMode(I2C1_SDA_BANK, I2C1_SDA, I2C1_SDA_PAL_MODE);
|
||||||
#else
|
#else
|
||||||
palSetPadMode(I2C1_SCL_BANK, I2C1_SCL, PAL_MODE_ALTERNATE(I2C1_SCL_PAL_MODE) | PAL_STM32_OTYPE_OPENDRAIN);
|
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);
|
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
|
# define I2C_DRIVER I2CD1
|
||||||
#endif
|
#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
|
// The default PAL alternate modes are used to signal that the pins are used for I2C
|
||||||
# ifndef I2C1_SCL_PAL_MODE
|
# ifndef I2C1_SCL_PAL_MODE
|
||||||
# define I2C1_SCL_PAL_MODE 4
|
# 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_CMD 0x00
|
||||||
#define I2C_DATA 0x40
|
#define I2C_DATA 0x40
|
||||||
#if defined(__AVR__)
|
#if defined(__AVR__)
|
||||||
// already defined on ARM
|
# define I2C_TRANSMIT_P(data) i2c_transmit_P((OLED_DISPLAY_ADDRESS << 1), &data[0], sizeof(data), OLED_I2C_TIMEOUT)
|
||||||
# define I2C_TIMEOUT 100
|
|
||||||
# define I2C_TRANSMIT_P(data) i2c_transmit_P((OLED_DISPLAY_ADDRESS << 1), &data[0], sizeof(data), I2C_TIMEOUT)
|
|
||||||
#else // defined(__AVR__)
|
#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__)
|
#endif // defined(__AVR__)
|
||||||
#define I2C_TRANSMIT(data) i2c_transmit((OLED_DISPLAY_ADDRESS << 1), &data[0], sizeof(data), 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, 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)
|
#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
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if !defined(OLED_I2C_TIMEOUT)
|
||||||
|
# define OLED_I2C_TIMEOUT 100
|
||||||
|
#endif
|
||||||
|
|
||||||
// OLED Rotation enum values are flags
|
// OLED Rotation enum values are flags
|
||||||
typedef enum {
|
typedef enum {
|
||||||
OLED_ROTATION_0 = 0,
|
OLED_ROTATION_0 = 0,
|
||||||
|
|||||||
@@ -22,3 +22,10 @@
|
|||||||
#if defined(STM32F1XX) || defined(STM32F2XX) || defined(STM32F4XX) || defined(STM32L1XX)
|
#if defined(STM32F1XX) || defined(STM32F2XX) || defined(STM32F4XX) || defined(STM32L1XX)
|
||||||
# define USE_I2CV1
|
# define USE_I2CV1
|
||||||
#endif
|
#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
|
||||||
|
|||||||
Reference in New Issue
Block a user