Khadas Docs

Amazing Khadas, always amazes you!

User Tools

Site Tools


products:sbc:common:applications:gpio:spi

Differences

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

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Last revision Both sides next revision
products:sbc:common:applications:gpio:spi [2022/07/04 22:26]
hyphop ↷ Links adapted because of a move operation
products:sbc:common:applications:gpio:spi [2023/11/07 05:07]
nick [Enable SPI]
Line 1: Line 1:
-====== SPI ====== 
  
-===== Introduction =====+===== SPI Reference table =====
  
-This document mainly introduces SPI. You will learn how to enable SPI and local loopback testing of SPI.+|           ^  SPI    ^ Pin  ^ Pin name      GPIO name  ^  DT overlay node  ^  Device node     ^ 
 +^  VIM3/3L  |  SPI_B  |  15  | SPIB_SS      |  GPIOH_6    |  spi1              /dev/spidev1.1  | 
 +| :::       | :::      16  | SPIB_SCLK    |  GPIOH_7    | :::               | :::              | 
 +| :::       | :::      35  | SPIB_MISO    |  GPIOH_5    | :::               | :::              | 
 +| :::       | :::      37  | SPIB_MOSI    |  GPIOH_4    | :::               | :::              | 
 +^  VIM4      SPI_A  |  25  |  SPI_A_SCLK  |  GPIOT_20    spi0              /dev/spidev1.0  | 
 +| :::       | :::      26  |  SPI_A_SS0    GPIOT_21   | :::               | :::              | 
 +| :::       | :::      36  |  SPI_A_MOSI  |  GPIOT_18   | :::               | :::              | 
 +| :::       | :::      37  |  SPI_A_MISO  |  GPIOT_19   | :::               | :::              | 
 +^  VIM1S    |  SPI_A  |  29  |  SPI_A_MOSI  |  GPIOZ_1    | :::               | :::              | 
 +| :::       | :::      31  |  SPI_A_CLK    GPIOZ_2    | :::               | :::              | 
 +| :::       | :::      32  |  SPI_A_MISO  |  GPIOZ_0    | :::               | :::              | 
 +| :::       | :::      33  |  SPI_A_SS0    GPIOZ_3    | :::               | :::              |
  
-===== Hardware Connection =====+===== Enable SPI =====
  
-Connect the physical pins ''PIN35'' and ''PIN37'' using a DuPont line.+In order to use the SPI, you need to enable the SPI function via [[products:sbc:common:configurations:device-tree-overlay|Device Tree Overlay]].
  
-===== System Configuration =====+<tabbox VIM3/3L/Edge1>
  
-The default SPI is disabled. If you need to use SPI, you can enable it through the overlays function. +Edit ''/boot/env.txt'' to add the SPI node to ''overlays'' node if it doesn't exist.
-```sh +
-$ sudo vim /boot/env.txt +
-``` +
-Modify the overlays part, remove ''pwm_f'' and ''uart3'', and open SPI.+
  
-```diff +Take VIM3 as an example to enable ''SPI_B'', you need to add ''spi1'' node to ''overlays'' node if it doesn't exist. 
-- overlays=uart3 pwm_f i2c3 os08a10 + 
-overlays=i2c3 os08a10 spi1+```shell 
 +overlays=spi1
 ``` ```
  
-Reboot to effect. +<WRAP important 
- +As SPI pins are also used for other function, e.g. UART_C, PWM_Fso that you also need to remove node ''uart3'' and ''pwm_f''.
-<WRAP info +
-For Overlays documentationplease refer to [[products:sbc:vim4:configurations:device-tree-overlay|Device Tree Overlay]].+
 </WRAP> </WRAP>
  
-SPI configures a loopback test device by default. 
  
-```sh+After reboot, you will see the spi device node. 
 + 
 +```shell
 $ ls /dev/spidev1.1 $ ls /dev/spidev1.1
 /dev/spidev1.1 /dev/spidev1.1
 ``` ```
  
-===== Demo Source Code =====+<tabbox VIM3 with 5.15 kernel>
  
-Get test code+Edit ''/boot/dtb/amlogic/kvim3.dtb.overlay.env'' to add spi node to ''fdt_overlays'' node if it doesn't exist. 
 + 
 + 
 +e.g. Enable ''SPI_A'', you need to add ''spi0'' to node ''fdt_overlays'' if it doesn't exist. 
 + 
 +```shell 
 +fdt_overlays=spi0 
 + 
 +``` 
 + 
 +After reboot, you will see the SPI device node. 
 + 
 +<tabbox VIM3L with 5.15 kernel> 
 + 
 +Edit ''/boot/dtb/amlogic/kvim3l.dtb.overlay.env'' to add spi node to ''fdt_overlays'' node if it doesn't exist. 
 + 
 + 
 +e.g. Enable ''SPI_A'', you need to add ''spi0'' to node ''fdt_overlays'' if it doesn't exist. 
 + 
 +```shell 
 +fdt_overlays=spi0 
 + 
 +``` 
 + 
 +After reboot, you will see the SPI device node. 
 + 
 +<tabbox VIM4> 
 + 
 +Edit ''/boot/dtb/amlogic/kvim4.dtb.overlay.env'' to add spi node to ''fdt_overlays'' node if it doesn't exist. 
 + 
 + 
 +e.g. Enable ''SPI_A'', you need to add ''spi0'' to node ''fdt_overlays'' if it doesn't exist. 
 + 
 +```shell 
 +fdt_overlays=spi0 
 + 
 +``` 
 + 
 +After reboot, you will see the SPI device node. 
 + 
 +```shell 
 +$ ls /dev/spidev1.0  
 +/dev/spidev1.0 
 +``` 
 +<tabbox VIM1S> 
 + 
 +Edit ''/boot/dtb/amlogic/kvim1s.dtb.overlay.env'' to add spi node to ''fdt_overlays'' node if it doesn't exist. 
 + 
 + 
 +e.g. Enable ''SPI_A'', you need to add ''spi0'' to node ''fdt_overlays'' if it doesn't exist. 
 + 
 +```shell 
 +fdt_overlays=spi0 
 + 
 +``` 
 + 
 +After reboot, you will see the SPI device node. 
 + 
 +```shell 
 +$ ls /dev/spidev1.0  
 +/dev/spidev1.0 
 +``` 
 + 
 +</tabbox> 
 + 
 +===== Disable SPI ===== 
 + 
 +If you want to use normal GPIO instead of SPI, you can remove the SPI node in [[products:sbc:common:configurations:device-tree-overlay|Device Tree Overlay]].  
 + 
 + 
 +===== Demo Source Code =====
  
 ```c spidev_test.c ```c spidev_test.c
Line 72: Line 149:
 } }
  
-static const char *device = "/dev/spidev1.1";+static const char *device = "/dev/spidev1.0";
 static uint32_t mode; static uint32_t mode;
 static uint8_t bits = 8; static uint8_t bits = 8;
Line 521: Line 598:
 ``` ```
  
-Compile test code+Compile test code:
  
-```sh+```shell
 $ gcc -o spidev_test spidev_test.c $ gcc -o spidev_test spidev_test.c
 ``` ```
  
-===== Demonstrate =====+===== Test demonstration =====
  
 +Prepare input text file:
  
-Prepare a TST text file. +```shell
- +
-```sh+
 $ echo "Amazing Khadas!" > ./spi_in.txt $ echo "Amazing Khadas!" > ./spi_in.txt
 ``` ```
  
-Run ''spidev_test''.+Connect PIN36(MOSI), PIN37(MISO) then run ''spidev_test'':
  
-```sh+```shell
 $ ./spidev_test -i spi_in.txt -o ./spi_out.txt $ ./spidev_test -i spi_in.txt -o ./spi_out.txt
 spi mode: 0x0 spi mode: 0x0
Line 545: Line 621:
 ``` ```
  
-Check output data. +Check output data
-```sh+ 
 +```shell
 $ cat ./spi_out.txt $ cat ./spi_out.txt
 Amazing Khadas! Amazing Khadas!
 ``` ```
Last modified: 2023/11/07 05:07 by nick