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]