diff --git a/boards/arm/imxrt/teensy-4.x/Kconfig b/boards/arm/imxrt/teensy-4.x/Kconfig index ed40dd19b4..9d55a707a6 100644 --- a/boards/arm/imxrt/teensy-4.x/Kconfig +++ b/boards/arm/imxrt/teensy-4.x/Kconfig @@ -39,4 +39,14 @@ config NET_USE_OTP_ETHERNET_MAC (the vendor ID of 'PJRC.COM, LLC') when this feature is enabled. It may also be used with other boards that have the OCOTP programmed with a valid MAC. +if TEENSY_41 + +config TEENSY_41_PIKRON_BB + bool "Base board for Teensy 4.1 configuration" + ---help--- + Configuration pikron-bb contains setup for open hardware based board fo Teensy 4.1. This option + sets up HW pinout as ADC channels for example. + +endif + endif diff --git a/boards/arm/imxrt/teensy-4.x/configs/pikron-bb/defconfig b/boards/arm/imxrt/teensy-4.x/configs/pikron-bb/defconfig index d7a391523a..806ad7601d 100644 --- a/boards/arm/imxrt/teensy-4.x/configs/pikron-bb/defconfig +++ b/boards/arm/imxrt/teensy-4.x/configs/pikron-bb/defconfig @@ -7,7 +7,12 @@ # # CONFIG_ARCH_LEDS is not set # CONFIG_NSH_DISABLE_DATE is not set +# CONFIG_NSH_DISABLE_MB is not set +# CONFIG_NSH_DISABLE_MH is not set +# CONFIG_NSH_DISABLE_MW is not set +CONFIG_ADC=y CONFIG_ALLOW_GPL_COMPONENTS=y +CONFIG_ANALOG=y CONFIG_ARCH="arm" CONFIG_ARCH_BOARD="teensy-4.x" CONFIG_ARCH_BOARD_TEENSY_4X=y @@ -29,12 +34,12 @@ CONFIG_CANCELLATION_POINTS=y CONFIG_CANUTILS_CANDUMP=y CONFIG_CANUTILS_CANSEND=y CONFIG_CAN_FD=y +CONFIG_DEV_GPIO=y CONFIG_DEV_LOOP=y CONFIG_DEV_ZERO=y -CONFIG_DRIVERS_VIDEO=y CONFIG_ELF=y +CONFIG_ENC1_XIE=y CONFIG_ETH0_PHY_DP83825I=y -CONFIG_EXAMPLES_FB=y CONFIG_EXECFUNCS_HAVE_SYMTAB=y CONFIG_EXECFUNCS_SYSTEM_SYMTAB=y CONFIG_FAT_LCNAMES=y @@ -48,23 +53,33 @@ CONFIG_FS_PROCFS_REGISTER=y CONFIG_FS_ROMFS=y CONFIG_FS_TMPFS=y CONFIG_IDLETHREAD_STACKSIZE=2048 +CONFIG_IMXRT_ADC2=y +CONFIG_IMXRT_ADC2_ETC=54 +CONFIG_IMXRT_ENC1=y CONFIG_IMXRT_ENET=y -CONFIG_IMXRT_ENET_NRXBUFFERS=16 -CONFIG_IMXRT_ENET_NTXBUFFERS=8 CONFIG_IMXRT_FLEXCAN1=y CONFIG_IMXRT_FLEXCAN2=y CONFIG_IMXRT_FLEXCAN3=y CONFIG_IMXRT_FLEXCAN3_AS_CAN0=y CONFIG_IMXRT_FLEXCAN_TXMB=1 -CONFIG_IMXRT_LPSPI4=y +CONFIG_IMXRT_FLEXPWM1=y +CONFIG_IMXRT_FLEXPWM1_MOD4=y +CONFIG_IMXRT_FLEXPWM1_MOD4_TRIG=y +CONFIG_IMXRT_FLEXPWM2=y +CONFIG_IMXRT_FLEXPWM2_MOD3=y +CONFIG_IMXRT_FLEXPWM2_MOD3_SYNC_SRC=43 +CONFIG_IMXRT_FLEXPWM3=y +CONFIG_IMXRT_FLEXPWM3_MOD2=y +CONFIG_IMXRT_FLEXPWM3_MOD2_SYNC_SRC=43 +CONFIG_IMXRT_FLEXPWM4=y +CONFIG_IMXRT_FLEXPWM4_MOD3=y +CONFIG_IMXRT_FLEXPWM4_MOD3_SYNC_SRC=43 +CONFIG_IMXRT_FLEXPWM4_MOD3_TRIG=y +CONFIG_IMXRT_FLEXPWM4_MOD3_TRIG_DUTY=y CONFIG_IMXRT_LPUART1=y CONFIG_IMXRT_SNVS_LPSRTC=y CONFIG_INIT_ENTRYPOINT="nsh_main" CONFIG_INTELHEX_BINARY=y -CONFIG_LCD=y -CONFIG_LCD_FRAMEBUFFER=y -CONFIG_LCD_PORTRAIT=y -CONFIG_LCD_ST7789=y CONFIG_LIBC_DLFCN=y CONFIG_LIBC_ENVPATH=y CONFIG_LIBC_EXECFUNCS=y @@ -84,6 +99,7 @@ CONFIG_NET_ARP_SEND=y CONFIG_NET_BROADCAST=y CONFIG_NET_CAN=y CONFIG_NET_CAN_SOCK_OPTS=y +CONFIG_NET_ETH_PKTSIZE=1518 CONFIG_NET_ICMP=y CONFIG_NET_ICMP_SOCKET=y CONFIG_NET_ICMPv6=y @@ -122,18 +138,20 @@ CONFIG_PTHREAD_CLEANUP=y CONFIG_PTHREAD_MUTEX_DEFAULT_PRIO_INHERIT=y CONFIG_PTHREAD_MUTEX_TYPES=y CONFIG_PTHREAD_STACK_MIN=1024 +CONFIG_PWM=y CONFIG_RAM_SIZE=1048576 CONFIG_RAM_START=0x20200000 CONFIG_READLINE_CMD_HISTORY=y CONFIG_RR_INTERVAL=10 CONFIG_SCHED_CPULOAD=y -CONFIG_SCHED_CPULOAD_EXTCLK=y CONFIG_SCHED_LPWORK=y +CONFIG_SCHED_TICKLESS=y +CONFIG_SCHED_TICKLESS_ALARM=y CONFIG_SCHED_USER_IDENTITY=y CONFIG_SCHED_WAITPID=y +CONFIG_SENSORS=y +CONFIG_SENSORS_QENCODER=y CONFIG_SERIAL_TERMIOS=y -CONFIG_SPI=y -CONFIG_SPI_CMDDATA=y CONFIG_START_DAY=14 CONFIG_START_MONTH=3 CONFIG_SYMTAB_ORDEREDBYNAME=y @@ -145,5 +163,4 @@ CONFIG_SYSTEM_PING6=y CONFIG_SYSTEM_PING=y CONFIG_SYSTEM_TEE=y CONFIG_TEENSY_41=y -CONFIG_USEC_PER_TICK=1000 -CONFIG_VIDEO_FB=y +CONFIG_TEENSY_41_PIKRON_BB=y diff --git a/boards/arm/imxrt/teensy-4.x/include/board.h b/boards/arm/imxrt/teensy-4.x/include/board.h index 356e0068c2..11140e7752 100644 --- a/boards/arm/imxrt/teensy-4.x/include/board.h +++ b/boards/arm/imxrt/teensy-4.x/include/board.h @@ -281,6 +281,14 @@ #define GPIO_FLEXPWM2_MOD1_A (GPIO_FLEXPWM2_PWMA00_1|IOMUX_PWM_DEFAULT) /* GPIO_EMC_06 */ #define GPIO_FLEXPWM2_MOD2_A (GPIO_FLEXPWM2_PWMA01_1|IOMUX_PWM_DEFAULT) /* GPIO_EMC_08 */ +/* FlexPWM setup for PMSM control - used in pikron-bb configuration */ + +#define GPIO_FLEXPWM3_MOD2_A (GPIO_FLEXPWM3_PWMA01_1 | IOMUX_PWM_DEFAULT) /* GPIO_EMC_31 */ +#define GPIO_FLEXPWM2_MOD3_A (GPIO_FLEXPWM2_PWMA02_2 | IOMUX_PWM_DEFAULT) /* GPIO_B0_10 */ +#define GPIO_FLEXPWM1_MOD4_A (GPIO_FLEXPWM1_PWMA03_5 | IOMUX_PWM_DEFAULT) /* GPIO_B1_00 */ + +#define GPIO_FLEXPWM4_MOD3_A (IOMUX_PWM_DEFAULT) /* PWM: ADC Trigger */ + /**************************************************************************** * Public Types ****************************************************************************/ diff --git a/boards/arm/imxrt/teensy-4.x/src/imxrt_adc.c b/boards/arm/imxrt/teensy-4.x/src/imxrt_adc.c index e6280214ec..30672e4a68 100644 --- a/boards/arm/imxrt/teensy-4.x/src/imxrt_adc.c +++ b/boards/arm/imxrt/teensy-4.x/src/imxrt_adc.c @@ -40,7 +40,11 @@ /* channels 1 and 2 have the same number of pins on Teensy */ +#ifdef CONFIG_TEENSY_41_PIKRON_BB +#define ADC_NCHANNELS 3 +#else #define ADC_NCHANNELS 16 +#endif /**************************************************************************** * Private Data @@ -48,7 +52,11 @@ static const uint8_t g_chanlist[ADC_NCHANNELS] = { +#ifdef CONFIG_TEENSY_41_PIKRON_BB + 4, 2, 9 +#else 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15 +#endif }; /**************************************************************************** diff --git a/boards/arm/imxrt/teensy-4.x/src/imxrt_gpio.c b/boards/arm/imxrt/teensy-4.x/src/imxrt_gpio.c index f7e57c4965..f9eb02c850 100644 --- a/boards/arm/imxrt/teensy-4.x/src/imxrt_gpio.c +++ b/boards/arm/imxrt/teensy-4.x/src/imxrt_gpio.c @@ -92,6 +92,8 @@ static const struct gpio_operations_s gpout_ops = static const uint32_t g_gpioinputs[BOARD_NGPIOIN] = { GPIO_IN1, + GPIO_IN2, + GPIO_IN3, }; static struct imxrtgpio_dev_s g_gpin[BOARD_NGPIOIN]; @@ -103,6 +105,9 @@ static struct imxrtgpio_dev_s g_gpin[BOARD_NGPIOIN]; static const uint32_t g_gpiooutputs[BOARD_NGPIOOUT] = { GPIO_OUT1, + GPIO_OUT2, + GPIO_OUT3, + GPIO_OUT4, }; static struct imxrtgpio_dev_s g_gpout[BOARD_NGPIOOUT]; diff --git a/boards/arm/imxrt/teensy-4.x/src/teensy-4.h b/boards/arm/imxrt/teensy-4.x/src/teensy-4.h index 17362cac03..94b9371e54 100644 --- a/boards/arm/imxrt/teensy-4.x/src/teensy-4.h +++ b/boards/arm/imxrt/teensy-4.x/src/teensy-4.h @@ -118,14 +118,30 @@ #define GPIO_ENC1_PHASE_B (GPIO_XBAR1_INOUT08_1|IOMUX_ENC_DEFAULT|PADMUX_MUXMODE_ALT3) /* EMC_06 */ #define GPIO_ENC1_INDEX (GPIO_XBAR1_INOUT10_1|IOMUX_ENC_DEFAULT|PADMUX_MUXMODE_ALT1) /* B0_12 */ -/* GPIO pins used by the GPIO subsystem */ +/* GPIO pins used by the GPIO subsystem + * The following GPIOs are used for PMSM control in pikron-bb configuration. + */ -#define BOARD_NGPIOIN 1 /* Amount of GPIO input pins */ -#define BOARD_NGPIOOUT 1 /* Amount of GPIO output pins */ +#define BOARD_NGPIOIN 3 /* Amount of GPIO input pins */ +#define BOARD_NGPIOOUT 4 /* Amount of GPIO output pins */ -#define GPIO_IN1 (GPIO_INPUT | GPIO_PORT4 | GPIO_PIN4) /* EMC_04 */ #define GPIO_OUT1 (GPIO_OUTPUT | GPIO_OUTPUT_ZERO | IOMUX_GOUT_DEFAULT | \ - GPIO_PORT4 | GPIO_PIN5) /* EMC_05 */ + GPIO_PORT3 | GPIO_PIN18) /* EMC_32 */ +#define GPIO_OUT2 (GPIO_OUTPUT | GPIO_OUTPUT_ZERO | IOMUX_GOUT_DEFAULT | \ + GPIO_PORT2 | GPIO_PIN11) /* B0_11 */ +#define GPIO_OUT3 (GPIO_OUTPUT | GPIO_OUTPUT_ZERO | IOMUX_GOUT_DEFAULT | \ + GPIO_PORT2 | GPIO_PIN17) /* B1_01 */ +#define GPIO_OUT4 (GPIO_OUTPUT | GPIO_OUTPUT_ZERO | IOMUX_GOUT_DEFAULT | \ + GPIO_PORT4 | GPIO_PIN5) /* EMC_05 */ + +#define GPIO_IN1 (GPIO_INPUT| GPIO_PORT2 | GPIO_PIN19 | IOMUX_PULL_UP_100K | \ + _IOMUX_PULL_ENABLE) /* B1_03 */ +#define GPIO_IN2 (GPIO_INPUT| GPIO_PORT2 | GPIO_PIN18 | IOMUX_PULL_UP_100K | \ + _IOMUX_PULL_ENABLE) /* B1_02 */ +#define GPIO_IN3 (GPIO_INPUT| GPIO_PORT2 | GPIO_PIN0 | IOMUX_PULL_UP_100K | \ + _IOMUX_PULL_ENABLE) /* B0_00 */ +#define GPIO_IN4 (GPIO_INPUT| GPIO_PORT2 | GPIO_PIN2 | IOMUX_PULL_UP_100K | \ + _IOMUX_PULL_ENABLE) /* B0_0 */ /**************************************************************************** * Public Types