====== UART interface using the C1 Tinkering Kit ======
There are two UART ports on the C1/C0.
The first one is mapped to /dev/ttyS2 which is connected to 40-pin header Pin #8 & #10.\\
The second one is mapped to /dev/ttyS0 which is connected to Serial Console Port CON5.
==== How to test external UART pin on the 40-pin header ====
You need to prepare below items.
* **ODROID-C1**
* USB-UART Module Kit
* jumper wire x4
* serial comunication utility on your Host PC
You will connect jumper wire as below picture.\\
Connect the USB-PORT of USB-UART Module to your HOST PC\\
**The RXD and TXD must be twisted each other.**\\
{{:en:c1:odroidc1_uart.jpg?300|}}
1. HOST PC setup.\\
You will open USB Module Device on your HOST PC.\\
**Ubuntu**\\
Install serial comunication utility.
sudo apt-get install minicom
After check your usb serial node, Open serial port.
ls /dev/ttyUSB*
sudo minicom -b 115200 -D /dev/ttyUSB0
2. Target board(**ODROID-C1**) setup.\\
Set a serial node on your **ODROID-C1**
stty -F /dev/ttyS2 115200
3. **ODROID-C1** -> HOST PC test.\\
**ODROID-C1**
echo 1 > /dev/ttyS2
4. HOST PC -> **ODROID-C1** test.\\
**ODROID-C1**
cat /dev/ttyS2
HOST PC\\
Send characters via minicom.
==== How to enable another UART /dev/ttyS1 on 40 Pin Header ====
=== Pin Map : GPIOX.4[29, TXD], GPIOX.5[18, RXD] ===
To use the UART(/dev/ttyS1), you first need to update the kernel version to "3.10.104" or higher.
sudo apt-get update && sudo apt-get upgrade && sudo apt-get dist-upgrade
1. Install the device-tree compiler package
sudo apt-get install device-tree-compiler
2. Download dts file from our github.
wget https://github.com/hardkernel/linux/raw/odroidc-3.10.y/arch/arm/boot/dts/meson8b_odroidc.dts
3. Edit dts file.
vi meson8b_odroidc.dts
4. find uart_ao & add uart_0 definition.
...
uart_ao{
compatible = "amlogic,aml_uart";
port_name = "uart_ao";
status = "okay";
dev_name = "uart_ao";
pinctrl-names = "default";
pinctrl-0 = <&ao_uart_pins>;
};
/* edit & add code */
uart_0{
compatible = "amlogic,aml_uart";
port_name = "uart_a";
status = "okay";
dev_name = "uart_0";
pinctrl-names = "default";
pinctrl-0 = <&a_uart_pins>;
};
/* end add */
uart_1{
compatible = "amlogic,aml_uart";
port_name = "uart_b";
status = "okay";
dev_name = "uart_1";
pinctrl-names = "default";
pinctrl-0 = <&b_uart_pins>;
};
...
5. find pinmux & add uart_0 pin mux.
...
ao_uart_pins:ao_uart{
amlogic,setmask=<10 0x1800>;
amlogic,pins="GPIOAO_0", "GPIOAO_1";
amlogic,pullup=<1>;
amlogic,pullupen=<1>;
};
/* edit & add code */
a_uart_pins:a_uart{
amlogic,setmask=<4 0x30000>;
amlogic,pins="GPIOX_4", "GPIOX_5";
amlogic,pullup=<1>;
amlogic,pullupen=<1>;
};
/* end add */
b_uart_pins:b_uart{
amlogic,setmask=<4 0x0300>;
amlogic,pins="GPIOX_16", "GPIOX_17";
amlogic,pullup=<1>;
amlogic,pullupen=<1>;
};
...
6. save dts file & compile dts file
dtc -O dtb -o ./meson8b_odroidc.dtb ./meson8b_odroidc.dts
7. update dtb file & reboot
sudo cp ./meson8b_odroidc.dtb /media/boot/meson8b_odroidc.dtb && sync
sudo reboot
==== Pin Map : UART pin on the 4-pin CON5 connector ====
_____UART____
| |
|Pin 4 - GND|
|Pin 3 - RXD|
|Pin 2 - TXD|
|Pin 1 - VCC|
|_ |
|_________|
3.3V LVTTL
==== Automatically configure the UART settings. ====
This is an example of default setting for a GPS module which has a 9600bpsN81 UART interface.\\
Add the following to the end of /etc/rc.local (before the exit 0)\\
/bin/stty -F /dev/ttyS2 raw 9600 cs8 clocal -cstopb > /dev/null 2>&1
This way the tty port is setup for use with the gps on system boot, without user interaction.\\
\\
==== Tips for UART port ====
[[http://forum.odroid.com/viewtopic.php?f=115&t=17279|How to enable the RTS/CTS]]