Activarea port-urilor seriale suplimentare

De la YO3ITI
Salt la: navigare, căutare

Discuția care urmează privește aproape în exclusivitate Raspberry Pi 4 deoarece astea sunt plăcile pe care le posed. Pentru modelele anterioare, activarea port-urilor seriale suplimentare este un pic mai complicată și o voi descrie cu altă ocazie.

Activarea

Se face adăugând următoarele secvențe în /boot/config.txt:

<syntaxhighlight lang="shell"> enable_uart=1 dtoverlay=uart5 dtoverlay=uart4 dtoverlay=uart3 dtoverlay=uart2 </syntaxhighlight>

Ordinea nu are nici o importanță:

  • enable_uart=1 activează interfața serială; se poate configura prin intermediul raspi-config;
  • Se adaugă linia dtoverlay=uart# pentru fiecare port serial care trebuie activat, unde # este numărul UART.
  • După orice modificare în /boot/config.txt trebuie dat reboot

Comenzi utile

Afișarea funcțiilor pinilor:

<syntaxhighlight lang="shell"> $ raspi-gpio funcs </syntaxhighlight> Va afișa: <syntaxhighlight lang="shell" highlight=14-17> GPIO, DEFAULT PULL, ALT0, ALT1, ALT2, ALT3, ALT4, ALT5 0, UP, SDA0, SA5, PCLK, SPI3_CE0_N, TXD2, SDA6 1, UP, SCL0, SA4, DE, SPI3_MISO, RXD2, SCL6 2, UP, SDA1, SA3, LCD_VSYNC, SPI3_MOSI, CTS2, SDA3 3, UP, SCL1, SA2, LCD_HSYNC, SPI3_SCLK, RTS2, SCL3 4, UP, GPCLK0, SA1, DPI_D0, SPI4_CE0_N, TXD3, SDA3 5, UP, GPCLK1, SA0, DPI_D1, SPI4_MISO, RXD3, SCL3 6, UP, GPCLK2, SOE_N_SE, DPI_D2, SPI4_MOSI, CTS3, SDA4 7, UP, SPI0_CE1_N, SWE_N_SRW_N, DPI_D3, SPI4_SCLK, RTS3, SCL4 8, UP, SPI0_CE0_N, SD0, DPI_D4, I2CSL_CE_N, TXD4, SDA4 9, DOWN, SPI0_MISO, SD1, DPI_D5, I2CSL_SDI_MISO, RXD4, SCL4 10, DOWN, SPI0_MOSI, SD2, DPI_D6, I2CSL_SDA_MOSI, CTS4, SDA5 11, DOWN, SPI0_SCLK, SD3, DPI_D7, I2CSL_SCL_SCLK, RTS4, SCL5 12, DOWN, PWM0_0, SD4, DPI_D8, SPI5_CE0_N, TXD5, SDA5 13, DOWN, PWM0_1, SD5, DPI_D9, SPI5_MISO, RXD5, SCL5 14, DOWN, TXD0, SD6, DPI_D10, SPI5_MOSI, CTS5, TXD1 15, DOWN, RXD0, SD7, DPI_D11, SPI5_SCLK, RTS5, RXD1 16, DOWN, -, SD8, DPI_D12, CTS0, SPI1_CE2_N, CTS1 17, DOWN, -, SD9, DPI_D13, RTS0, SPI1_CE1_N, RTS1 18, DOWN, PCM_CLK, SD10, DPI_D14, SPI6_CE0_N, SPI1_CE0_N, PWM0_0 19, DOWN, PCM_FS, SD11, DPI_D15, SPI6_MISO, SPI1_MISO, PWM0_1 20, DOWN, PCM_DIN, SD12, DPI_D16, SPI6_MOSI, SPI1_MOSI, GPCLK0 21, DOWN, PCM_DOUT, SD13, DPI_D17, SPI6_SCLK, SPI1_SCLK, GPCLK1 22, DOWN, SD0_CLK, SD14, DPI_D18, SD1_CLK, ARM_TRST, SDA6 23, DOWN, SD0_CMD, SD15, DPI_D19, SD1_CMD, ARM_RTCK, SCL6 24, DOWN, SD0_DAT0, SD16, DPI_D20, SD1_DAT0, ARM_TDO, SPI3_CE1_N 25, DOWN, SD0_DAT1, SD17, DPI_D21, SD1_DAT1, ARM_TCK, SPI4_CE1_N 26, DOWN, SD0_DAT2, -, DPI_D22, SD1_DAT2, ARM_TDI, SPI5_CE1_N 27, DOWN, SD0_DAT3, -, DPI_D23, SD1_DAT3, ARM_TMS, SPI6_CE1_N 28, NONE, SDA0, SA5, PCM_CLK, -, MII_A_RX_ERR, RGMII_MDIO 29, NONE, SCL0, SA4, PCM_FS, -, MII_A_TX_ERR, RGMII_MDC 30, DOWN, -, SA3, PCM_DIN, CTS0, MII_A_CRS, CTS1 31, DOWN, -, SA2, PCM_DOUT, RTS0, MII_A_COL, RTS1 32, DOWN, GPCLK0, SA1, -, TXD0, SD_CARD_PRES, TXD1 33, DOWN, -, SA0, -, RXD0, SD_CARD_WRPROT, RXD1 34, UP, GPCLK0, SOE_N_SE, -, SD1_CLK, SD_CARD_LED, RGMII_IRQ 35, UP, SPI0_CE1_N, SWE_N_SRW_N, -, SD1_CMD, RGMII_START_STOP, - 36, UP, SPI0_CE0_N, SD0, TXD0, SD1_DAT0, RGMII_RX_OK, MII_A_RX_ERR 37, DOWN, SPI0_MISO, SD1, RXD0, SD1_DAT1, RGMII_MDIO, MII_A_TX_ERR 38, DOWN, SPI0_MOSI, SD2, RTS0, SD1_DAT2, RGMII_MDC, MII_A_CRS 39, DOWN, SPI0_SCLK, SD3, CTS0, SD1_DAT3, RGMII_IRQ, MII_A_COL 40, DOWN, PWM1_0, SD4, -, SD1_DAT4, SPI0_MISO, TXD1 41, DOWN, PWM1_1, SD5, -, SD1_DAT5, SPI0_MOSI, RXD1 42, DOWN, GPCLK1, SD6, -, SD1_DAT6, SPI0_SCLK, RTS1 43, DOWN, GPCLK2, SD7, -, SD1_DAT7, SPI0_CE0_N, CTS1 44, NONE, GPCLK1, SDA0, SDA1, -, SPI0_CE1_N, SD_CARD_VOLT 45, NONE, PWM0_1, SCL0, SCL1, -, SPI0_CE2_N, SD_CARD_PWR0 46, UP, SDA0, SDA1, SPI0_CE0_N, -, -, SPI2_CE1_N 47, UP, SCL0, SCL1, SPI0_MISO, -, -, SPI2_CE0_N 48, UP, SD0_CLK, -, SPI0_MOSI, SD1_CLK, ARM_TRST, SPI2_SCLK 49, UP, SD0_CMD, GPCLK0, SPI0_SCLK, SD1_CMD, ARM_RTCK, SPI2_MOSI 50, UP, SD0_DAT0, GPCLK1, PCM_CLK, SD1_DAT0, ARM_TDO, SPI2_MISO 51, UP, SD0_DAT1, GPCLK2, PCM_FS, SD1_DAT1, ARM_TCK, SD_CARD_LED 52, UP, SD0_DAT2, PWM0_0, PCM_DIN, SD1_DAT2, ARM_TDI, - 53, UP, SD0_DAT3, PWM0_1, PCM_DOUT, SD1_DAT3, ARM_TMS, - </syntaxhighlight>

Afișarea selectivă a funcțiilor pinilor

Dacă vreau să văd care este alocarea funcțiilor pentru primele 15 GPIO-uri:

<syntaxhighlight lang="shell"> $ sudo raspi-gpio get 0-15 </syntaxhighlight>

Care va afișa:

<syntaxhighlight lang="shell" highlight=13-16> GPIO 0: level=1 fsel=0 func=INPUT pull=UP GPIO 1: level=1 fsel=0 func=INPUT pull=UP GPIO 2: level=1 fsel=4 alt=0 func=SDA1 pull=UP GPIO 3: level=1 fsel=4 alt=0 func=SCL1 pull=UP GPIO 4: level=1 fsel=0 func=INPUT pull=UP GPIO 5: level=1 fsel=0 func=INPUT pull=UP GPIO 6: level=1 fsel=0 func=INPUT pull=UP GPIO 7: level=1 fsel=1 func=OUTPUT pull=UP GPIO 8: level=1 fsel=1 func=OUTPUT pull=UP GPIO 9: level=0 fsel=4 alt=0 func=SPI0_MISO pull=DOWN GPIO 10: level=0 fsel=4 alt=0 func=SPI0_MOSI pull=DOWN GPIO 11: level=0 fsel=4 alt=0 func=SPI0_SCLK pull=DOWN GPIO 12: level=1 fsel=3 alt=4 func=TXD5 pull=NONE GPIO 13: level=1 fsel=3 alt=4 func=RXD5 pull=UP GPIO 14: level=1 fsel=2 alt=5 func=TXD1 pull=NONE GPIO 15: level=1 fsel=2 alt=5 func=RXD1 pull=UP </syntaxhighlight>

Atenție ! Numărul GPIO-ului nu are nici o legătură cu poziția fizică a pin-ului pe header !

  • Pentru UART0 GPIO14->pin8 (TXD1) iar GPIO15->pin10 (RXD1);
  • Pentru UART5 GPIO12->pin32 (TXD5) iar GPIO13->pin33 (RXD5); vezi imaginea de mai jos:

RPi4 pinout

Link-uri externe