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/13 05:32]
nick
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 the usage of SPI on [[products:sbc:common:applications:gpio:40pin-header|40-Pin Header]].+|           ^  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    | :::               | :::              |
  
-===== SPI Information ===== +===== Enable SPI =====
- +
-|            SPI    PIN & GPIO(#number)                                                                                                            ^  DT Overlays Node  ^  Device Node     ^ +
-^  VIM3/3L  |  SPI_B  |  SPIB_SS(15) - GPIOH_6 (#433)\\ SPIB_SCLK(16) - GPIOH_7 (#434)\\ SPIB_MISO(35) - GPIOH_5(#432)\\ SPIB_MOSI(37) - GPIOH_4(#431)  |  spi1              |  /dev/spidev1.1 +
-^  VIM4            |                                                                                                                                                    |                  | +
- +
- +
-===== Enabel SPI =====+
  
 In order to use the SPI, you need to enable the SPI function via [[products:sbc:common:configurations:device-tree-overlay|Device Tree Overlay]]. In order to use the SPI, you need to enable the SPI function via [[products:sbc:common:configurations:device-tree-overlay|Device Tree Overlay]].
  
-<tabbox VIM1/2/3/3L/Edge1>+<tabbox VIM3/3L/Edge1>
  
 Edit ''/boot/env.txt'' to add the SPI node to ''overlays'' node if it doesn't exist. Edit ''/boot/env.txt'' to add the SPI node to ''overlays'' node if it doesn't exist.
Line 37: Line 41:
 /dev/spidev1.1 /dev/spidev1.1
 ``` ```
 +
 +<tabbox VIM3 with 5.15 kernel>
 +
 +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> <tabbox VIM4>
  
-TODO.+Edit ''/boot/dtb/amlogic/kvim4.dtb.overlay.env'' to add spi node to ''fdt_overlays'' node if it doesn't exist.
  
-</tabbox> 
  
 +e.g. Enable ''SPI_A'', you need to add ''spi0'' to node ''fdt_overlays'' if it doesn't exist.
  
-===== Disable SPI to Use GPIO =====+```shell 
 +fdt_overlays=spi0
  
-If you want to use normal GPIO instead of SPI, you can remove the SPI node in device tree overlays configration file. +```
  
 +After reboot, you will see the SPI device node.
  
-===== Demo Source Code =====+```shell 
 +$ ls /dev/spidev1.0  
 +/dev/spidev1.0 
 +``` 
 +<tabbox VIM1S>
  
-**Get test code.**+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 87: 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 536: Line 598:
 ``` ```
  
-**Compile test code.**+Compile test code:
  
 ```shell ```shell
Line 542: Line 604:
 ``` ```
  
-===== Demonstrate ===== +===== Test demonstration =====
  
-**Prepare text file.**+Prepare input text file:
  
 ```shell ```shell
Line 551: Line 612:
 ``` ```
  
-**Run ''spidev_test''.**+Connect PIN36(MOSI), PIN37(MISO) then run ''spidev_test'':
  
 ```shell ```shell
Line 560: Line 621:
 ``` ```
  
-**Check output data.**+Check output data:
  
 ```shell ```shell
Last modified: 2023/11/07 05:07 by nick