We're no longer updating This wiki!!

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
en:c2_hardware_uart [2016/02/29 15:25]
ck.kim created
en:c2_hardware_uart [2017/01/31 13:16] (current)
brian.kim
Line 1: Line 1:
-====== UART interface using the C1 Tinkering Kit ====== +====== UART interface using the Tinkering Kit ====== 
-There are two UART ports on the C1.+There are two UART ports on the C2. \\ 
 +They are 3.3Volt (LVTTL) interface and there is no 5Volt tolerance.
  
- +The first one is mapped to /dev/ttyS1 which is connected to 40-pin header Pin #8 & #10 & ground pin.\\
-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. 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 ===+==== How to test external UART pin on the 40-pin header ​====
  
 You need to prepare below items. You need to prepare below items.
-  * **ODROID-C1**+  * **ODROID-C2**
   * USB-UART Module Kit   * USB-UART Module Kit
   * jumper wire x4   * jumper wire x4
Line 30: Line 30:
   sudo minicom -b 115200 -D /​dev/​ttyUSB0   sudo minicom -b 115200 -D /​dev/​ttyUSB0
   ​   ​
-2. Target board(**ODROID-C1**) setup.\\ +2. Target board(**ODROID-C2**) setup.\\ 
-Set a serial node on your **ODROID-C1** +Set a serial node on your **ODROID-C2** 
-  stty -F /dev/ttyS2 115200+  stty -F /dev/ttyS1 115200
  
-3. **ODROID-C1** -> HOST PC test.\\ +3. **ODROID-C2** -> HOST PC test.\\ 
-**ODROID-C1** +**ODROID-C2** 
-  echo 1 > /dev/ttyS2+  echo 1 > /dev/ttyS1
   ​   ​
-4. HOST PC -> **ODROID-C1** test.\\ +4. HOST PC -> **ODROID-C2** test.\\ 
-**ODROID-C1** +**ODROID-C2** 
-  cat /dev/ttyS2+  cat /dev/ttyS1
 HOST PC\\ HOST PC\\
 Send characters via minicom. Send characters via minicom.
  
-=== Pin Map : UART pin on the 4-pin CON5 connector ===+==== Pin Map : UART pin on the 4-pin CON5 connector ​====
 <​code>​ <​code>​
 _____UART____ _____UART____
Line 56: Line 56:
 </​code>​ </​code>​
 3.3V LVTTL 3.3V LVTTL
 +
 +
 +==== Another UART port on 40pin header ====
 +If you don't use an I2C interface(i2c-1) on pin#3 & pin#5, you can use them to activate the UART2.\\
 +Just follow **campbell**'​s development note to have a new UART2 port via /​dev/​ttyS2.\\
 +Note that Pin#3(SDA1) is mapped to Tx and Pin#5(SCL1) is Rx.\\
 +[[http://​forum.odroid.com/​viewtopic.php?​f=139&​t=25371|How to enable a third UART ttyS2 by "​campbell"​]]
 +
 +
 +==== 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)\\
 +<​code>/​bin/​stty -F /dev/ttyS2 raw 9600 cs8 clocal -cstopb > /dev/null 2>&​1</​code>​
 +This way the tty port is setup for use with the gps on system boot, without user interaction.\\
  
  
 === Tips for UART port === === Tips for UART port ===
 [[http://​forum.odroid.com/​viewtopic.php?​f=115&​t=17279|How to enable the RTS/CTS]] [[http://​forum.odroid.com/​viewtopic.php?​f=115&​t=17279|How to enable the RTS/CTS]]
 +
 +==== How to enable UART_B and UART_C ports ====
 +Up to 4 ports can be used for UART in ODROID-C2---UART_A0(Serial console), UART_A, UART_B and UART_C.\\
 +There are UART_A, UART_B and UART_C in [[http://​odroid.com/​dokuwiki/​doku.php?​id=en:​c2_hardware#​expansion_connectors|expansion connectors of ODROID-C2]].
 +
 +  * //<UART pin>// | //<Pin number>// ​
 +  * UART_A TX | 8
 +  * UART_A RX | 10
 +  * UART_B TX | 3
 +  * UART_B RX | 5
 +  * UART_C TX | 32
 +  * UART_C RX | 26
 +
 +In order to enable UART_B and UART_C ports, it is necessary to modify the //​meson64_odroidc2.dts//​ file.
 +
 +1. Kernel source download
 +
 +<​code>​
 +sudo apt-get update
 +sudo apt-get install git
 +git clone --depth 1 https://​github.com/​hardkernel/​linux.git -b odroidc2-3.14.y
 +</​code>​
 +
 +2. Delete I2C_A definition
 +
 +I2C_A uses same pins as UART_B by pinmux. So, i2c_a definition needs to be removed.
 +
 +  * //​($LINUX)/​arch/​arm64/​boot/​dts/​meson64_odroidc2.dts//​
 +<​code>​
 +iff --git a/​arch/​arm64/​boot/​dts/​meson64_odroidc2.dts b/​arch/​arm64/​boot/​dts/​meson64_odroidc2.dts
 +index e6a25b0..db09b04 100755
 +--- a/​arch/​arm64/​boot/​dts/​meson64_odroidc2.dts
 ++++ b/​arch/​arm64/​boot/​dts/​meson64_odroidc2.dts
 +@@ -813,18 +813,6 @@
 + 
 + };
 + 
 +-&i2c_a {
 +-       ​status = "​okay";​
 +-
 +-       /* Hardkernel I2C RTC */
 +-       ​pcf8563:​ pcf8563@51 ​    {
 +-               ​status = "​disabled";​
 +-               ​compatible = "​nxp,​pcf8563";​
 +-               reg = <​0x51>;​
 +-               #​clock-cells = <0>;
 +-       };
 +-};
 +-
 + &​i2c_b {
 +        status = "​okay";​
 +
 +</​code>​
 +
 +3. Add UART_B and UART_C definitions
 +  * //​($LINUX)/​arch/​arm64/​boot/​dts/​meson64_odroidc2.dts//​
 +<​code>​
 +diff --git a/​arch/​arm64/​boot/​dts/​meson64_odroidc2.dts b/​arch/​arm64/​boot/​dts/​meson64_odroidc2.dts
 +index e6a25b0..fd41552 100755
 +--- a/​arch/​arm64/​boot/​dts/​meson64_odroidc2.dts
 ++++ b/​arch/​arm64/​boot/​dts/​meson64_odroidc2.dts
 +@@ -31,6 +31,8 @@
 +        aliases {
 +                serial0 = &​uart_AO;​
 +                serial1 = &​uart_A;​
 ++               ​serial2 = &​uart_B;​
 ++               ​serial3 = &​uart_C;​
 +        };
 + 
 +        gpu_dvfs_tbl:​ gpu_dvfs_tbl {
 +@@ -459,6 +461,32 @@
 +                pinctrl-0 = <&​a_uart_pins>;​
 +        };
 + 
 ++       ​uart_B:​ serial@c11084dc {
 ++               ​compatible = "​amlogic,​ meson-uart";​
 ++               reg = <0x0 0xc11084dc 0x0 0x18>;
 ++               ​interrupts = <0 75 1>;
 ++               ​status = "​okay";​
 ++               ​clocks = <&​clock CLK_XTAL>;​
 ++               ​clock-names = "​clk_uart";​
 ++               ​fifosize = < 64 >;
 ++               ​pinctrl-names = "​default";​
 ++               ​pinctrl-0 = <&​b_uart_pins>;​
 ++               ​resets = <&​clock GCLK_IDX_UART1>;​
 ++       };
 ++
 ++       ​uart_C:​ serial@c1108700 {
 ++               ​compatible = "​amlogic,​ meson-uart";​
 ++               reg = <0x0 0xc1108700 0x0 0x14>;
 ++               ​interrupts = <0 93 1>;
 ++               ​status = "​okay";​
 ++               ​clocks = <&​clock CLK_XTAL>;​
 ++               ​clock-names = "​clk_uart";​
 ++               ​fifosize = < 64 >;
 ++               ​pinctrl-names = "​default";​
 ++               ​pinctrl-0 = <&​c_uart_pins>;​
 ++               ​resets = <&​clock GCLK_IDX_UART2>;​
 ++       };
 ++
 +        canvas {
 +                compatible = "​amlogic,​ meson, canvas";​
 +                dev_name = "​amlogic-canvas";​
 +</​code>​
 +
 +  * [[https://​gist.githubusercontent.com/​bkrepo/​ae548109e3f94fd41fed2defa270057b/​raw/​b50265071e0c4bfe22fcc418aba938bf843bfa8a/​meson64_odroidc2.dts|meson64_odroidc2.dts]]
 +
 +4. Install modified dtb file
 +<​code>​
 +make odroidc2_defconfig
 +make dtbs
 +sudo cp -f arch/​arm64/​boot/​dts/​meson64_odroidc2.dtb /​media/​boot/​
 +sudo reboot
 +</​code>​
 +5. Done
en/c2_hardware_uart.1456728950.txt.gz · Last modified: 2016/02/29 15:25 by ck.kim
CC Attribution-Share Alike 3.0 Unported
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0