====== 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]]