boards/arm/imxrt/teensy-4.x: allow configuration of all CANs

Signed-off-by: Michal Lenc <michallenc@seznam.cz>
This commit is contained in:
Michal Lenc 2021-02-25 23:27:34 +01:00 committed by Xiang Xiao
parent 48050c9425
commit 3b219fb2da
3 changed files with 20 additions and 23 deletions

View File

@ -138,8 +138,9 @@ Configuration sub-directories
can-4.1:
This is an nsh configuration (see above) for Teensy-4.x with added support of
CAN driver. FlexCAN3 is chosen as default, the change can be made at System
type peripheral selection.
CAN driver. All FlexCANs (CAN1, CAN2, CAN3) are chosen as default. FlexCAN3
is FD capable. Please note that device driver name if counted from zero.
That means for CAN1 -> can0, CAN2 -> can1 and CAN3 -> can2
Bitrate and sample point can be also changed at System type peripheral selection,
basic values are 1 MHz for bitrate and 0.80 for sample point. The FlexCAN driver
@ -147,15 +148,12 @@ Configuration sub-directories
The configuration also includes CAN utilities as candump and cansend.
CAN_FD supported but not enabled. For CAN_FD please select following:
CAN_FD = y
NET_CAN_CANFD = y
NET_CAN_SOCK_OPTS = y
This configuration can be easily changed to work with Teensy 4.0 by
selecting CONFIG_TEENSY_40=y.
This configuration runs over LPUART1 (pins 24 and 25 on Teensy). Communication
over USB console can be turn on, but it couses problems with FlexCAN.
netnsh-4.1:
This configuration is similar to the nsh configuration except that is

View File

@ -5,7 +5,6 @@
# You can then do "make savedefconfig" to generate a new defconfig file that includes your
# modifications.
#
# CONFIG_NET_CAN_CANFD is not set
# CONFIG_NET_ETHERNET is not set
# CONFIG_NET_IPv4 is not set
CONFIG_ARCH="arm"
@ -21,17 +20,16 @@ CONFIG_ARMV7M_ICACHE=y
CONFIG_ARMV7M_USEBASEPRI=y
CONFIG_BOARD_LOOPSPERMSEC=104926
CONFIG_BUILTIN=y
CONFIG_CAN=y
CONFIG_CANUTILS_CANDUMP=y
CONFIG_CANUTILS_CANSEND=y
CONFIG_CDCACM=y
CONFIG_CDCACM_CONSOLE=y
CONFIG_FS_PROCFS=y
CONFIG_IDLETHREAD_STACKSIZE=2048
CONFIG_IMXRT_FLEXCAN1=y
CONFIG_IMXRT_FLEXCAN2=y
CONFIG_IMXRT_FLEXCAN3=y
CONFIG_IMXRT_LPUART1=y
CONFIG_IMXRT_USBDEV=y
CONFIG_INTELHEX_BINARY=y
CONFIG_LPUART1_SERIAL_CONSOLE=y
CONFIG_MAX_TASKS=16
CONFIG_NET=y
CONFIG_NETDEVICES=y
@ -40,7 +38,7 @@ CONFIG_NETDEV_LATEINIT=y
CONFIG_NETDEV_STATISTICS=y
CONFIG_NET_CAN=y
CONFIG_NET_CAN_NOTIFIER=y
CONFIG_NET_SOCKOPTS=y
CONFIG_NET_CAN_SOCK_OPTS=y
CONFIG_NET_STATISTICS=y
CONFIG_NET_TIMESTAMP=y
CONFIG_NFILE_DESCRIPTORS=8
@ -49,7 +47,6 @@ CONFIG_NSH_BUILTIN_APPS=y
CONFIG_NSH_FILEIOSIZE=512
CONFIG_NSH_LINELEN=64
CONFIG_NSH_READLINE=y
CONFIG_NSH_USBCONSOLE=y
CONFIG_RAM_SIZE=1048576
CONFIG_RAM_START=0x20200000
CONFIG_SCHED_HPWORK=y
@ -58,5 +55,4 @@ CONFIG_START_DAY=14
CONFIG_START_MONTH=3
CONFIG_SYSTEM_NSH=y
CONFIG_TEENSY_41=y
CONFIG_USBDEV=y
CONFIG_USER_ENTRYPOINT="nsh_main"

View File

@ -50,31 +50,34 @@
int imxrt_can_setup(void)
{
int ret;
#ifdef CONFIG_IMXRT_FLEXCAN3
#ifdef CONFIG_IMXRT_FLEXCAN1
/* Call arm_caninitialize() to get an instance of the CAN interface */
ret = imxrt_caninitialize(3);
if (ret < 0)
{
canerr("ERROR: Failed to get CAN interface\n");
return -ENODEV;
}
#elif CONFIG_IMXRT_FLEXCAN2
ret = imxrt_caninitialize(2);
if (ret < 0)
{
canerr("ERROR: Failed to get CAN interface\n");
return -ENODEV;
}
#elif CONFIG_IMXRT_FLEXCAN1
ret = imxrt_caninitialize(1);
if (ret < 0)
{
canerr("ERROR: Failed to get CAN interface\n");
return -ENODEV;
}
#else
#endif
#ifdef CONFIG_IMXRT_FLEXCAN2
ret = imxrt_caninitialize(2);
if (ret < 0)
{
canerr("ERROR: Failed to get CAN interface\n");
return -ENODEV;
}
#endif
#ifdef CONFIG_IMXRT_FLEXCAN3
ret = imxrt_caninitialize(3);
if (ret < 0)
{
canerr("ERROR: Failed to get CAN interface\n");
return -ENODEV;
}
#endif
UNUSED(ret);
return OK;