Skip to content
View in the app

A better way to browse. Learn more.

Armbian Community Forums

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Javier Vela

Members
  • Joined

  • Last visited

Reputation Activity

  1. Like
    Hi,
    I want to expand my NanoPi-NEO2 more uart ports through I2C, so I make a choice to use a sc16is750 module( just like sparkfun sc16is750 ).
    Below is all of my system information:
     
    pi@nanopineo2:~$ uname -a
    Linux nanopineo2 5.4.20-sunxi64 #20.02.1 SMP Mon Feb 17 02:37:37 CET 2020 aarch64 aarch64 aarch64 GNU/Linux
     
    First step ,I edit a device tree overlay for the sc16is750 named sc16is750-i2c.dts as below:
    pi@nanopineo2:/boot/overlay-user$ sudo nano sc16is750-i2c.dts
    /dts-v1/;
    /plugin/;
    / {
        compatible =  "allwinner,sun4i-a10", "allwinner,sun7i-a20", "allwinner,sun8i-h3", "allwinner,sun50i-a64", "allwinner,sun50i-h5";
        fragment@0 {
            /* This fragment is required only if using interrupts */
            target = <&pio>;
            __overlay__ {
                sc16is750_pin_irq: sc16is750_pin_irq {
                    pins = "PA17";
                    function = "irq";
                    bias-pull-up;
                };
            };
        };
        fragment@1 {
            target = <&i2c1>;
            __overlay__ {
                #address-cells = <1>;
                #size-cells = <0>;
                sc16is750: sc16is750@4d {
                    compatible = "nxp,sc16is750";
                    reg = <0x4d>;
                    status = "okay";
                    clocks = <&sc16is750_clk>;
                    gpio-controller;
                    #gpio-cells = <3>;
                    /* Below are optional properties for supporting interrupts */
                    interrupt-controller;
                    #interrupt-cells = <3>;
                    interrupt-parent = <&pio>;
                    interrupts = <0 17 2>; /* PG11 IRQ_TYPE_EDGE_FALLING */
                    pinctrl-names = "default";
                    pinctrl-0 = <&sc16is750_pin_irq>;

                    sc16is750_clk: sc16is750_clk {
                        compatible = "fixed-clock";
                        #clock-cells = <0>;
                        clock-frequency = <14745600>;
                    };
                };
            };
        };

        __overrides__ {
            int_pin = <&sc16is750>,"interrupts:0";
            addr = <&sc16is750>,"reg:0";
        };
    };
     
    Second step, I add the sc16is750-i2c.dts to my /boot/overlay-usr as below:
    pi@nanopineo2:/boot/overlay-user$ sudo armbian-add-overlay sc16is750-i2c.dts
    Compiling the overlay
    Copying the compiled overlay file to /boot/overlay-user/
    Reboot is required to apply the changes
    Afterthen, I checked sc16is750-i2c.dtbo as below:
    pi@nanopineo2:/boot/overlay-user$ fdtdump sc16is750-i2c.dtbo
    **** fdtdump is a low-level debugging tool, not meant for general use.
    **** If you want to decompile a dtb, you probably want
    ****     dtc -I dtb -O dts <filename>
    /dts-v1/;
    // magic:        0xd00dfeed
    // totalsize:        0x5f8 (1528)
    // off_dt_struct:    0x38
    // off_dt_strings:    0x4d0
    // off_mem_rsvmap:    0x28
    // version:        17
    // last_comp_version:    16
    // boot_cpuid_phys:    0x0
    // size_dt_strings:    0x128
    // size_dt_struct:    0x498
    / {
        compatible = "allwinner,sun4i-a10", "allwinner,sun7i-a20", "allwinner,sun8i-h3", "allwinner,sun50i-a64", "allwinner,sun50i-h5";
        fragment@0 {
            target = <0xffffffff>;
            __overlay__ {
                sc16is750_pin_irq {
                    pins = "PA17";
                    function = "irq";
                    bias-pull-up;
                    phandle = <0x00000002>;
                };
            };
        };
        fragment@1 {
            target = <0xffffffff>;
            __overlay__ {
                #address-cells = <0x00000001>;
                #size-cells = <0x00000000>;
                sc16is750@4d {
                    compatible = "nxp,sc16is750";
                    reg = <0x0000004d>;
                    status = "okay";
                    clocks = <0x00000001>;
                    gpio-controller;
                    #gpio-cells = <0x00000003>;
                    interrupt-controller;
                    #interrupt-cells = <0x00000003>;
                    interrupt-parent = <0xffffffff>;
                    interrupts = <0x00000000 0x00000011 0x00000002>;
                    pinctrl-names = "default";
                    pinctrl-0 = <0x00000002>;
                    phandle = <0x00000003>;
                    sc16is750_clk {
                        compatible = "fixed-clock";
                        #clock-cells = <0x00000000>;
                        clock-frequency = <0x00e10000>;
                        phandle = <0x00000001>;
                    };
                };
            };
        };
        __symbols__ {
            sc16is750_pin_irq = "/fragment@0/__overlay__/sc16is750_pin_irq";
            sc16is750 = "/fragment@1/__overlay__/sc16is750@4d";
            sc16is750_clk = "/fragment@1/__overlay__/sc16is750@4d/sc16is750_clk";
        };
        __fixups__ {
            pio = "/fragment@0:target:0", "/fragment@1/__overlay__/sc16is750@4d:interrupt-parent:0";
            i2c1 = "/fragment@1:target:0";
        };
        __local_fixups__ {
            fragment@1 {
                __overlay__ {
                    sc16is750@4d {
                        clocks = <0x00000000>;
                        pinctrl-0 = <0x00000000>;
                    };
                };
            };
        };
    };
     
    After reboot, I check the tty devices:
    pi@nanopineo2:~$ dmesg | grep tty
    [    2.056137] printk: console [ttyS0] disabled
    [    2.076722] 1c28000.serial: ttyS0 at MMIO 0x1c28000 (irq = 26, base_baud = 1500000) is a U6_16550A
    [    2.076773] printk: console [ttyS0] enabled
    [    2.098045] 1c28400.serial: ttyS1 at MMIO 0x1c28400 (irq = 27, base_baud = 1500000) is a U6_16550A
    [    2.119044] 1c28800.serial: ttyS2 at MMIO 0x1c28800 (irq = 28, base_baud = 1500000) is a U6_16550A
    [    2.142198] 1c28c00.serial: ttyS3 at MMIO 0x1c28c00 (irq = 29, base_baud = 1500000) is a U6_16550A
    [    5.873610] serial serial0: tty port ttySC0 registered
     
    Also, I have check the i2c:
    pi@nanopineo2:~$ sudo i2cdetect -y 1
    [sudo] password for pi:
         0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
    00:          -- -- -- -- -- -- -- -- -- -- -- -- --
    10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    30: -- -- -- -- -- -- -- -- -- -- -- -- 3c -- -- --
    40: -- -- -- -- -- -- -- -- -- -- -- -- -- UU -- --
    50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    60: -- -- -- -- -- -- -- -- 68 -- -- -- -- -- -- --
    70: -- -- -- -- -- -- -- --                         
    my sc16is750 address:0x4d
     
    Finally, I check the tty devices:
    pi@nanopineo2:~$ ls -l /dev/ttyS*
    crw------- 1 pi   tty     4, 64 Mar 23 03:21 /dev/ttyS0
    crw-rw---- 1 root dialout 4, 65 Mar 23 03:16 /dev/ttyS1
    crw-rw---- 1 root dialout 4, 66 Mar 23 03:16 /dev/ttyS2
    crw-rw---- 1 root dialout 4, 67 Mar 23 03:16 /dev/ttyS3
     
    pi@nanopineo2:~$ cat /proc/tty/drivers
    /dev/tty             /dev/tty        5       0 system:/dev/tty
    /dev/console         /dev/console    5       1 system:console
    /dev/ptmx            /dev/ptmx       5       2 system
    /dev/vc/0            /dev/vc/0       4       0 system:vtmaster
    unknown              /dev/ttySC    242 0-7 serial
    g_serial             /dev/ttyGS    245 0-3 serial
    serial               /dev/ttyS       4 64-67 serial
    pty_slave            /dev/pts      136 0-1048575 pty:slave
    pty_master           /dev/ptm      128 0-1048575 pty:master
    unknown              /dev/tty        4 1-63 console
     
    So, My question is why I cannot find the /dev/ttySC0?
    Anyone can give me some advice to resolve the problem.
    Thanks.
     
     

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.