tmedicci opened a new pull request, #17219:
URL: https://github.com/apache/nuttx/pull/17219

   ## Summary
   
   * risc-v/espressif/spi: Update common source code functions
     - Updates the common source code for the SPI peripheral used by 
Espressif's RISC-Vs SoCs. This enables newer SoCs to be supported in the future 
while maintaining backwards compatibility.
   
   ## Impact
   
   Impact on user: No.
   
   Impact on build: No.
   
   Impact on hardware: Not yet: newer Espressif SoCs can be supported on NuttX 
following this change.
   
   Impact on documentation: No.
   
   Impact on security: No.
   
   Impact on compatibility: No. It's totally backwards compatible.
   
   ## Testing
   
   Please note that this MR changes SPI master, SPI slave and SPI bitbang 
support. Then, testing is specific by each functionality. SPI master is tested 
by attaching the MISO and MOSI pins internally. SPI slave (when available) is 
tested along with the SPI bitbang (acting as the master), attaching bitbang's 
MOSI ping to slave's MISO and bitbang's MISO to slave's MOSI.
   
   The different test scenarios are all described in the following section.
   
   ### Building
   
   #### SPI master auto-test
   
   This is the first test scenario that tests SPI master by attaching its MOSI 
and MISO pins internally.
   
   ##### ESP32-C6
   
   ###### non-DMA
   ```
   make -j distclean && ./tools/configure.sh esp32c6-devkitc:spi && 
kconfig-tweak --set-val ESPRESSIF_SPI2_MOSIPIN 2 && kconfig-tweak --set-val 
ESPRESSIF_SPI2_MISOPIN 2 && make olddefconfig &&  make flash 
ESPTOOL_PORT=/dev/ttyUSB0 && picocom -b 115200 /dev/ttyUSB0
   ```
   ###### DMA
   ```
   make -j distclean && ./tools/configure.sh esp32c6-devkitc:spi && 
kconfig-tweak --set-val ESPRESSIF_SPI2_MOSIPIN 2 && kconfig-tweak --set-val 
ESPRESSIF_SPI2_MISOPIN 2 && kconfig-tweak -e ESPRESSIF_DMA && kconfig-tweak -e 
ESPRESSIF_SPI2_DMA && kconfig-tweak --set-val ESPRESSIF_SPI2_DMATHRESHOLD 0 && 
make olddefconfig && make flash ESPTOOL_PORT=/dev/ttyUSB0 && picocom -b 115200 
/dev/ttyUSB0
   ```
   
   ##### ESP32-H2
   
   ###### non-DMA
   
   ```
   make -j distclean && ./tools/configure.sh esp32h2-devkit:spi && 
kconfig-tweak --set-val ESPRESSIF_SPI2_MOSIPIN 5 && kconfig-tweak --set-val 
ESPRESSIF_SPI2_MISOPIN 5 && make olddefconfig && make flash 
ESPTOOL_PORT=/dev/ttyUSB0 && picocom -b 115200 /dev/ttyUSB0
   ```
   
   ###### DMA
   
   ```
   make -j distclean && ./tools/configure.sh esp32h2-devkit:spi && 
kconfig-tweak --set-val ESPRESSIF_SPI2_MOSIPIN 5 && kconfig-tweak --set-val 
ESPRESSIF_SPI2_MISOPIN 5 && kconfig-tweak -e ESPRESSIF_DMA && kconfig-tweak -e 
ESPRESSIF_SPI2_DMA && kconfig-tweak --set-val ESPRESSIF_SPI2_DMATHRESHOLD 0 && 
make olddefconfig && make flash ESPTOOL_PORT=/dev/ttyUSB0 && picocom -b 115200 
/dev/ttyUSB0
   ```
   
   ##### ESP32-C3
   
   ###### non-DMA
   
   ```
   make -j distclean && ./tools/configure.sh esp32c3-generic:spi && 
kconfig-tweak --set-val ESPRESSIF_SPI2_MOSIPIN 2 && kconfig-tweak --set-val 
ESPRESSIF_SPI2_MISOPIN 2 && make olddefconfig && make flash 
ESPTOOL_PORT=/dev/ttyUSB0 && picocom -b 115200 /dev/ttyUSB0
   ```
   
   ###### DMA
   
   ```
   make -j distclean && ./tools/configure.sh esp32h2-devkit:spi && 
kconfig-tweak --set-val ESPRESSIF_SPI2_MOSIPIN 2 && kconfig-tweak --set-val 
ESPRESSIF_SPI2_MISOPIN 2 && kconfig-tweak -e ESPRESSIF_DMA && kconfig-tweak -e 
ESPRESSIF_SPI2_DMA && kconfig-tweak --set-val ESPRESSIF_SPI2_DMATHRESHOLD 0 && 
make olddefconfig && make flash ESPTOOL_PORT=/dev/ttyUSB0 && picocom -b 115200 
/dev/ttyUSB0
   ```
   
   #### SPI slave + SPI bitbang (master)
   
   This is the second test scenario that uses the SPI bitbang (as master) to 
test the SPI slave.
   
   ##### ESP32-C6
   
   ###### non-DMA
   ```
   make -j distclean && ./tools/configure.sh esp32c6-devkitc:spislv && 
kconfig-tweak --set-val ESPRESSIF_SPI2_CLKPIN 6 && kconfig-tweak --set-val 
ESPRESSIF_SPI2_CSPIN 15 && kconfig-tweak --set-val ESPRESSIF_SPI2_MISOPIN 4 && 
kconfig-tweak --set-val ESPRESSIF_SPI2_MOSIPIN 5 && kconfig-tweak -d 
ESPRESSIF_DMA && kconfig-tweak -d ESPRESSIF_SPI2_DMA && kconfig-tweak -e 
ESPRESSIF_SPI_BITBANG && kconfig-tweak --set-val ESPRESSIF_SPI_BITBANG_CLKPIN 6 
&& kconfig-tweak --set-val ESPRESSIF_SPI_BITBANG_CSPIN 15 && kconfig-tweak 
--set-val ESPRESSIF_SPI_BITBANG_MISOPIN 4 && kconfig-tweak --set-val 
ESPRESSIF_SPI_BITBANG_MOSIPIN 5 && kconfig-tweak -e SYSTEM_SPITOOL && make 
olddefconfig && make flash ESPTOOL_PORT=/dev/ttyUSB0 && picocom -b 115200 
/dev/ttyUSB0
   ```
   
   ###### DMA
   
   ```
   make -j distclean && ./tools/configure.sh esp32c6-devkitc:spislv && 
kconfig-tweak --set-val ESPRESSIF_SPI2_CLKPIN 6 && kconfig-tweak --set-val 
ESPRESSIF_SPI2_CSPIN 15 && kconfig-tweak --set-val ESPRESSIF_SPI2_MISOPIN 4 && 
kconfig-tweak --set-val ESPRESSIF_SPI2_MOSIPIN 5 && kconfig-tweak -e 
ESPRESSIF_DMA && kconfig-tweak -e ESPRESSIF_SPI2_DMA && kconfig-tweak --set-val 
ESPRESSIF_SPI2_DMATHRESHOLD 0 && kconfig-tweak -e ESPRESSIF_SPI_BITBANG && 
kconfig-tweak --set-val ESPRESSIF_SPI_BITBANG_CLKPIN 6 && kconfig-tweak 
--set-val ESPRESSIF_SPI_BITBANG_CSPIN 15 && kconfig-tweak --set-val 
ESPRESSIF_SPI_BITBANG_MISOPIN 4 && kconfig-tweak --set-val 
ESPRESSIF_SPI_BITBANG_MOSIPIN 5 && kconfig-tweak -e SYSTEM_SPITOOL && make 
olddefconfig && make flash ESPTOOL_PORT=/dev/ttyUSB0 && picocom -b 115200 
/dev/ttyUSB0
   ```
   
   ### Running
   
   For all devices, the following commands are used:
   
   #### SPI master auto-test
   ```
   spi exch -x 10 00112233445566778899
   ```
   
   #### SPI slave + SPI bitbang (master) 
   
   ```
   spislv -x 2 abba &
   spi exch -b 3 -x 2 effe
   ```
   
   ### Results
   
   For all devices, the expected results are:
   
   #### SPI master auto-test
   ```
   nsh> spi exch -x 10 00112233445566778899
   Sending:     00 11 22 33 44 55 66 77 88 99 
   Received:    00 11 22 33 44 55 66 77 88 99
   ```
   
   #### SPI slave + SPI bitbang (master) 
   
   ```
   nsh> spislv -x 2 abba &
   spislv [2:100]
   nsh> Slave: Queuing 2 bytes for sending to master: AB BA 
   nsh> spi exch -b 3 -x 2 effe
   Sending:     EF FE 
   Received:    AB BA 
   Data received from master (2 bytes): EF FE
   ```


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to