Skip to content

Commit fd91af4

Browse files
michallencxiaoxiang781216
authored andcommitted
teensy-4.x: update pikron-bb configuration with PMSM control abilities
This commit updates configuration pikron-bb (configuration for open hardware experimental board) to support permanent magnet sychnronous motor control. This includes setup of PWM, GPIO and ADC peripherals. Required follow up changes are done to pinout definition. Signed-off-by: Michal Lenc <michallenc@seznam.cz>
1 parent 00e8796 commit fd91af4

File tree

6 files changed

+83
-19
lines changed

6 files changed

+83
-19
lines changed

boards/arm/imxrt/teensy-4.x/Kconfig

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,4 +39,14 @@ config NET_USE_OTP_ETHERNET_MAC
3939
(the vendor ID of 'PJRC.COM, LLC') when this feature is enabled.
4040
It may also be used with other boards that have the OCOTP programmed with a valid MAC.
4141

42+
if TEENSY_41
43+
44+
config TEENSY_41_PIKRON_BB
45+
bool "Base board for Teensy 4.1 configuration"
46+
---help---
47+
Configuration pikron-bb contains setup for open hardware based board fo Teensy 4.1. This option
48+
sets up HW pinout as ADC channels for example.
49+
50+
endif
51+
4252
endif

boards/arm/imxrt/teensy-4.x/configs/pikron-bb/defconfig

Lines changed: 31 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,12 @@
77
#
88
# CONFIG_ARCH_LEDS is not set
99
# CONFIG_NSH_DISABLE_DATE is not set
10+
# CONFIG_NSH_DISABLE_MB is not set
11+
# CONFIG_NSH_DISABLE_MH is not set
12+
# CONFIG_NSH_DISABLE_MW is not set
13+
CONFIG_ADC=y
1014
CONFIG_ALLOW_GPL_COMPONENTS=y
15+
CONFIG_ANALOG=y
1116
CONFIG_ARCH="arm"
1217
CONFIG_ARCH_BOARD="teensy-4.x"
1318
CONFIG_ARCH_BOARD_TEENSY_4X=y
@@ -29,12 +34,12 @@ CONFIG_CANCELLATION_POINTS=y
2934
CONFIG_CANUTILS_CANDUMP=y
3035
CONFIG_CANUTILS_CANSEND=y
3136
CONFIG_CAN_FD=y
37+
CONFIG_DEV_GPIO=y
3238
CONFIG_DEV_LOOP=y
3339
CONFIG_DEV_ZERO=y
34-
CONFIG_DRIVERS_VIDEO=y
3540
CONFIG_ELF=y
41+
CONFIG_ENC1_XIE=y
3642
CONFIG_ETH0_PHY_DP83825I=y
37-
CONFIG_EXAMPLES_FB=y
3843
CONFIG_EXECFUNCS_HAVE_SYMTAB=y
3944
CONFIG_EXECFUNCS_SYSTEM_SYMTAB=y
4045
CONFIG_FAT_LCNAMES=y
@@ -48,23 +53,33 @@ CONFIG_FS_PROCFS_REGISTER=y
4853
CONFIG_FS_ROMFS=y
4954
CONFIG_FS_TMPFS=y
5055
CONFIG_IDLETHREAD_STACKSIZE=2048
56+
CONFIG_IMXRT_ADC2=y
57+
CONFIG_IMXRT_ADC2_ETC=54
58+
CONFIG_IMXRT_ENC1=y
5159
CONFIG_IMXRT_ENET=y
52-
CONFIG_IMXRT_ENET_NRXBUFFERS=16
53-
CONFIG_IMXRT_ENET_NTXBUFFERS=8
5460
CONFIG_IMXRT_FLEXCAN1=y
5561
CONFIG_IMXRT_FLEXCAN2=y
5662
CONFIG_IMXRT_FLEXCAN3=y
5763
CONFIG_IMXRT_FLEXCAN3_AS_CAN0=y
5864
CONFIG_IMXRT_FLEXCAN_TXMB=1
59-
CONFIG_IMXRT_LPSPI4=y
65+
CONFIG_IMXRT_FLEXPWM1=y
66+
CONFIG_IMXRT_FLEXPWM1_MOD4=y
67+
CONFIG_IMXRT_FLEXPWM1_MOD4_TRIG=y
68+
CONFIG_IMXRT_FLEXPWM2=y
69+
CONFIG_IMXRT_FLEXPWM2_MOD3=y
70+
CONFIG_IMXRT_FLEXPWM2_MOD3_SYNC_SRC=43
71+
CONFIG_IMXRT_FLEXPWM3=y
72+
CONFIG_IMXRT_FLEXPWM3_MOD2=y
73+
CONFIG_IMXRT_FLEXPWM3_MOD2_SYNC_SRC=43
74+
CONFIG_IMXRT_FLEXPWM4=y
75+
CONFIG_IMXRT_FLEXPWM4_MOD3=y
76+
CONFIG_IMXRT_FLEXPWM4_MOD3_SYNC_SRC=43
77+
CONFIG_IMXRT_FLEXPWM4_MOD3_TRIG=y
78+
CONFIG_IMXRT_FLEXPWM4_MOD3_TRIG_DUTY=y
6079
CONFIG_IMXRT_LPUART1=y
6180
CONFIG_IMXRT_SNVS_LPSRTC=y
6281
CONFIG_INIT_ENTRYPOINT="nsh_main"
6382
CONFIG_INTELHEX_BINARY=y
64-
CONFIG_LCD=y
65-
CONFIG_LCD_FRAMEBUFFER=y
66-
CONFIG_LCD_PORTRAIT=y
67-
CONFIG_LCD_ST7789=y
6883
CONFIG_LIBC_DLFCN=y
6984
CONFIG_LIBC_ENVPATH=y
7085
CONFIG_LIBC_EXECFUNCS=y
@@ -84,6 +99,7 @@ CONFIG_NET_ARP_SEND=y
8499
CONFIG_NET_BROADCAST=y
85100
CONFIG_NET_CAN=y
86101
CONFIG_NET_CAN_SOCK_OPTS=y
102+
CONFIG_NET_ETH_PKTSIZE=1518
87103
CONFIG_NET_ICMP=y
88104
CONFIG_NET_ICMP_SOCKET=y
89105
CONFIG_NET_ICMPv6=y
@@ -122,18 +138,20 @@ CONFIG_PTHREAD_CLEANUP=y
122138
CONFIG_PTHREAD_MUTEX_DEFAULT_PRIO_INHERIT=y
123139
CONFIG_PTHREAD_MUTEX_TYPES=y
124140
CONFIG_PTHREAD_STACK_MIN=1024
141+
CONFIG_PWM=y
125142
CONFIG_RAM_SIZE=1048576
126143
CONFIG_RAM_START=0x20200000
127144
CONFIG_READLINE_CMD_HISTORY=y
128145
CONFIG_RR_INTERVAL=10
129146
CONFIG_SCHED_CPULOAD=y
130-
CONFIG_SCHED_CPULOAD_EXTCLK=y
131147
CONFIG_SCHED_LPWORK=y
148+
CONFIG_SCHED_TICKLESS=y
149+
CONFIG_SCHED_TICKLESS_ALARM=y
132150
CONFIG_SCHED_USER_IDENTITY=y
133151
CONFIG_SCHED_WAITPID=y
152+
CONFIG_SENSORS=y
153+
CONFIG_SENSORS_QENCODER=y
134154
CONFIG_SERIAL_TERMIOS=y
135-
CONFIG_SPI=y
136-
CONFIG_SPI_CMDDATA=y
137155
CONFIG_START_DAY=14
138156
CONFIG_START_MONTH=3
139157
CONFIG_SYMTAB_ORDEREDBYNAME=y
@@ -145,5 +163,4 @@ CONFIG_SYSTEM_PING6=y
145163
CONFIG_SYSTEM_PING=y
146164
CONFIG_SYSTEM_TEE=y
147165
CONFIG_TEENSY_41=y
148-
CONFIG_USEC_PER_TICK=1000
149-
CONFIG_VIDEO_FB=y
166+
CONFIG_TEENSY_41_PIKRON_BB=y

boards/arm/imxrt/teensy-4.x/include/board.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -281,6 +281,14 @@
281281
#define GPIO_FLEXPWM2_MOD1_A (GPIO_FLEXPWM2_PWMA00_1|IOMUX_PWM_DEFAULT) /* GPIO_EMC_06 */
282282
#define GPIO_FLEXPWM2_MOD2_A (GPIO_FLEXPWM2_PWMA01_1|IOMUX_PWM_DEFAULT) /* GPIO_EMC_08 */
283283

284+
/* FlexPWM setup for PMSM control - used in pikron-bb configuration */
285+
286+
#define GPIO_FLEXPWM3_MOD2_A (GPIO_FLEXPWM3_PWMA01_1 | IOMUX_PWM_DEFAULT) /* GPIO_EMC_31 */
287+
#define GPIO_FLEXPWM2_MOD3_A (GPIO_FLEXPWM2_PWMA02_2 | IOMUX_PWM_DEFAULT) /* GPIO_B0_10 */
288+
#define GPIO_FLEXPWM1_MOD4_A (GPIO_FLEXPWM1_PWMA03_5 | IOMUX_PWM_DEFAULT) /* GPIO_B1_00 */
289+
290+
#define GPIO_FLEXPWM4_MOD3_A (IOMUX_PWM_DEFAULT) /* PWM: ADC Trigger */
291+
284292
/****************************************************************************
285293
* Public Types
286294
****************************************************************************/

boards/arm/imxrt/teensy-4.x/src/imxrt_adc.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,15 +40,23 @@
4040

4141
/* channels 1 and 2 have the same number of pins on Teensy */
4242

43+
#ifdef CONFIG_TEENSY_41_PIKRON_BB
44+
#define ADC_NCHANNELS 3
45+
#else
4346
#define ADC_NCHANNELS 16
47+
#endif
4448

4549
/****************************************************************************
4650
* Private Data
4751
****************************************************************************/
4852

4953
static const uint8_t g_chanlist[ADC_NCHANNELS] =
5054
{
55+
#ifdef CONFIG_TEENSY_41_PIKRON_BB
56+
4, 2, 9
57+
#else
5158
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15
59+
#endif
5260
};
5361

5462
/****************************************************************************

boards/arm/imxrt/teensy-4.x/src/imxrt_gpio.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,8 @@ static const struct gpio_operations_s gpout_ops =
9292
static const uint32_t g_gpioinputs[BOARD_NGPIOIN] =
9393
{
9494
GPIO_IN1,
95+
GPIO_IN2,
96+
GPIO_IN3,
9597
};
9698

9799
static struct imxrtgpio_dev_s g_gpin[BOARD_NGPIOIN];
@@ -103,6 +105,9 @@ static struct imxrtgpio_dev_s g_gpin[BOARD_NGPIOIN];
103105
static const uint32_t g_gpiooutputs[BOARD_NGPIOOUT] =
104106
{
105107
GPIO_OUT1,
108+
GPIO_OUT2,
109+
GPIO_OUT3,
110+
GPIO_OUT4,
106111
};
107112

108113
static struct imxrtgpio_dev_s g_gpout[BOARD_NGPIOOUT];

boards/arm/imxrt/teensy-4.x/src/teensy-4.h

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -118,14 +118,30 @@
118118
#define GPIO_ENC1_PHASE_B (GPIO_XBAR1_INOUT08_1|IOMUX_ENC_DEFAULT|PADMUX_MUXMODE_ALT3) /* EMC_06 */
119119
#define GPIO_ENC1_INDEX (GPIO_XBAR1_INOUT10_1|IOMUX_ENC_DEFAULT|PADMUX_MUXMODE_ALT1) /* B0_12 */
120120

121-
/* GPIO pins used by the GPIO subsystem */
121+
/* GPIO pins used by the GPIO subsystem
122+
* The following GPIOs are used for PMSM control in pikron-bb configuration.
123+
*/
122124

123-
#define BOARD_NGPIOIN 1 /* Amount of GPIO input pins */
124-
#define BOARD_NGPIOOUT 1 /* Amount of GPIO output pins */
125+
#define BOARD_NGPIOIN 3 /* Amount of GPIO input pins */
126+
#define BOARD_NGPIOOUT 4 /* Amount of GPIO output pins */
125127

126-
#define GPIO_IN1 (GPIO_INPUT | GPIO_PORT4 | GPIO_PIN4) /* EMC_04 */
127128
#define GPIO_OUT1 (GPIO_OUTPUT | GPIO_OUTPUT_ZERO | IOMUX_GOUT_DEFAULT | \
128-
GPIO_PORT4 | GPIO_PIN5) /* EMC_05 */
129+
GPIO_PORT3 | GPIO_PIN18) /* EMC_32 */
130+
#define GPIO_OUT2 (GPIO_OUTPUT | GPIO_OUTPUT_ZERO | IOMUX_GOUT_DEFAULT | \
131+
GPIO_PORT2 | GPIO_PIN11) /* B0_11 */
132+
#define GPIO_OUT3 (GPIO_OUTPUT | GPIO_OUTPUT_ZERO | IOMUX_GOUT_DEFAULT | \
133+
GPIO_PORT2 | GPIO_PIN17) /* B1_01 */
134+
#define GPIO_OUT4 (GPIO_OUTPUT | GPIO_OUTPUT_ZERO | IOMUX_GOUT_DEFAULT | \
135+
GPIO_PORT4 | GPIO_PIN5) /* EMC_05 */
136+
137+
#define GPIO_IN1 (GPIO_INPUT| GPIO_PORT2 | GPIO_PIN19 | IOMUX_PULL_UP_100K | \
138+
_IOMUX_PULL_ENABLE) /* B1_03 */
139+
#define GPIO_IN2 (GPIO_INPUT| GPIO_PORT2 | GPIO_PIN18 | IOMUX_PULL_UP_100K | \
140+
_IOMUX_PULL_ENABLE) /* B1_02 */
141+
#define GPIO_IN3 (GPIO_INPUT| GPIO_PORT2 | GPIO_PIN0 | IOMUX_PULL_UP_100K | \
142+
_IOMUX_PULL_ENABLE) /* B0_00 */
143+
#define GPIO_IN4 (GPIO_INPUT| GPIO_PORT2 | GPIO_PIN2 | IOMUX_PULL_UP_100K | \
144+
_IOMUX_PULL_ENABLE) /* B0_0 */
129145

130146
/****************************************************************************
131147
* Public Types

0 commit comments

Comments
 (0)