VAR-SOM-MX7 UART: Difference between revisions
No edit summary |
|||
Line 11: | Line 11: | ||
UART1 is connected to debug console.<br> | UART1 is connected to debug console.<br> | ||
UART2 is connected to J5 header on VAR-MX7CustomBoard.<br> | UART2 is connected to J5 header on VAR-MX7CustomBoard.<br> | ||
UART3 is connected to Bluetooth module | UART3 is connected to Bluetooth module. | ||
= UART naming under Linux = | = UART naming under Linux = |
Revision as of 21:04, 14 July 2021
UART Overview
On VAR-SOM-MX7, UARTS 1-3 are enabled by default.
UART1 is connected to debug console.
UART2 is connected to J5 header on VAR-MX7CustomBoard.
UART3 is connected to Bluetooth module.
UART naming under Linux
The Linux devices cooresponding to UART1-UART3 are /dev/ttymxc0 - /dev/ttymxc2 respectively.
Testing UART2 on VAR-SOM-MX7
Short J5.5 with J5.7 and J5.6 with J5.8, then run the following commands:
stty -F /dev/ttymxc1 -echo -onlcr 115200 crtscts cat /dev/ttymxc1 & echo hello > /dev/ttymxc1
For each time you run this echo command the "hello" string should appear on the terminal.
Configuring RS485 Half-Duplex
Each UART can be configured for RS485 Half-Duplex mode by using a GPIO pin to drive the receive and transmit enable inputs. This can be configured in the device tree by making the following changes to the uart node and replacing X, Y & Z with the proper values:
&uartX { /* Add RS485 properties to uartX */ pinctrl-names = "default"; pinctrl-0 = <&pinctrl_uartX>, <&pinctrl_uartX_rs485>; /* Add RS485 GPIO pinctrl */ rts-gpios = <&gpioY Z GPIO_ACTIVE_LOW>; /* Add rts-gpios property */ linux,rs485-enabled-at-boot-time; /* Enable RS485 at boot time to skip using TIOCSRS485 ioctl */ status = "okay"; };
Next, configure the RS485 GPIO pin by adding pinctrl_uartX_rs485
to iomuxc
. Replace X, GPIO_PIN_FUNCTION, and GPIO_PIN_SETTINGS with the proper values:
&iomuxc { pinctrl_uartX_rs485: uartXrs485 { fsl,pins = < GPIO_PIN_FUNCTION GPIO_PIN_SETTINGS >; }; };
Note: For more information about configuring pins, please see i.MX Device Tree Pinmux Settings Guide
After making these changes, RS485 mode will be enabled by default and can be verified from the console by running the commands below. Replace N with the proper value, which is typically X-1 relative to the device tree node uartX
:
# stty -F /dev/ttymxcN -echo -onlcr 115200 # echo hello > /dev/ttymxcN
The below logic analyzer capture shows the RS485 RX/TX enable line toggling when writing to the UART:
Please refer to the Linux device tree bindings for more RS485 configuration options.