diff --git a/docs/helios64/img/spi/spi_on_uext.png b/docs/helios64/img/spi/spi_on_uext.png new file mode 100755 index 0000000..369a3dc Binary files /dev/null and b/docs/helios64/img/spi/spi_on_uext.png differ diff --git a/docs/helios64/spi.md b/docs/helios64/spi.md new file mode 100644 index 0000000..5953a35 --- /dev/null +++ b/docs/helios64/spi.md @@ -0,0 +1,83 @@ +!!! notice + ***Preliminary Info*** + +RK3399 has SPI controller with following features: + +- 6 on-chip SPI controllers + +- Support master and slave mode, software-configurable + +- DMA-based or interrupt-based operation + +- Embedded two 32x16bits FIFO for TX and RX operation respectively + +On Helios64 the bus are divided into three types: unused, system (internal bus) and user application (external) + +| Bus | Usage | Remarks | +|-----|-------|-----------| +| 0 | Not Used | | +| 1 | System | Bootable SPI Flash | +| 2 | External | User Application | +| 3 | Not Used | | +| 4 | Not Used | | +| 5 | System | Reserved for Production use only | + + +## Internal Bus + +| Bus | Chip Select | Device | Remarks | +|-----|-------------|---------|---------| +| 1 | 0 | W25Q128JV | Bootable SPI Flash | +| 5 | 0 | W25X20CL | SATA Controller ROM | + + +### Bootable SPI Flash + +Helios64 is equipped with [Winbond W25Q128JV 3V 128M-Bit Serial Flash Memory](https://www.winbond.com/hq/product/code-storage-flash-memory/serial-nor-flash/?__locale=en&partNo=W25Q128JV) +as a Bootable SPI NOR Flash. + +This flash contains + +- preloader & bootloader + +| Binaries | Offset | Remarks | +|----------|--------|---------| +| Preloader | 0x0040 | U-Boot TPL & SPL | +| Bootloader | 0x4000 | U-Boot & ATF | + +- electronic nameplate data in Security Register + + +## External Bus + +| Bus | Chip Select | Remarks | +|-----|-------------|---------| +| 2 | 0 | User Application | + +SPI Bus for user application is exposed on [UEXT Connector (P2)](/helios64/uext) + +![!UEXT](/helios64/img/spi/spi_on_uext.png) + +| Pin | Signal Name | +|-----|-------------| +| 7 | MISO | +| 8 | MOSI | +| 9 | SCK | +| 10 | SSEL | + +The pin voltage level is 3.3V + + +## Usage in Linux + +### Enable SPIDEV in device tree + +To make SPI device accessible by user space application, we need to create a device tree node. +After the node has been created, user application can access the device at + +`/dev/spidev5.0` + +!!! note + *To Be Updated* + + diff --git a/mkdocs.yml b/mkdocs.yml index 2bf9e6f..6cbe23a 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -80,6 +80,7 @@ nav: - I2C : 'helios64/i2c.md' - LED : 'helios64/led.md' - USB : 'helios64/usb.md' + - SPI : 'helios64/spi.md' - UEXT : 'helios64/uext.md' - Front Panel : 'helios64/front-panel.md' - Helios4: