esp-idf/examples/peripherals/spi_slave_hd/segment_mode
2024-09-05 10:56:30 +08:00
..
seg_master refa(spi): clean up esp_dma_xxx memory allocation code 2024-09-05 10:56:30 +08:00
seg_slave feat(driver_spi): add esp32c61 spi master, slave, slave_hd support 2024-08-27 20:49:13 +08:00
README.md feat(spi_slave_hd): p4 update examples and document 2023-11-07 16:01:44 +08:00

SPI Slave Halfduplex: Segment Mode Examples

(See the README.md file in the 'examples' directory for more information about IDF examples.)

These two projects illustrate the SPI Slave Halfduplex Segment Mode.

  • seg_slave shows one of the ways to use the SPI Slave Halfduplex driver. There are 2 tasks repeating to receive/send transactions from/to SPI Master respectively.
  • seg_master shows how to use the ESP Serial Slave Link APIs to communicate with SPI Slave Halfduplex driver. It receives/sends transactions from/to slave a few times.

How to use example

Hardware Required

These two projects are supposed to be flashed onto two seperate boards and jumped together via correctly connected SPI pins defined in both of the app_main.c files. Once they are connected and flashed, they will use the SPI Master and SPI Slave Halfduplex drivers to communicate with each other.

Following is the connection between 2 ESP32S2 boards:

Signal Master Slave
MOSI GPIO11 GPIO11
MISO GPIO13 GPIO13
SCLK GPIO12 GPIO12
CS GPIO10 GPIO10

Feel free to change the GPIO settings by editing the macro definations on the top of the app_main.c

Build and Flash

Run idf.py -p PORT flash monitor to build, flash and monitor the project.

(To exit the serial monitor, type Ctrl-].)

See the Getting Started Guide for full steps to build, flash and monitor projects.

Example Output

seg_master

---------SLAVE INFO---------

Slave MAX Send Buffer Size:       5000
Slave MAX Receive Buffer Size:    120
I (328) SEG_MASTER: RECEIVING......
Transaction No.0 from slave, length: 4640
I (338) SEG_MASTER: SENDING......
I (348) SEG_MASTER: RECEIVING......
Transaction No.1 from slave, length: 3299
I (348) SEG_MASTER: SENDING......
I (358) SEG_MASTER: RECEIVING......
Transaction No.2 from slave, length: 4836
I (368) SEG_MASTER: SENDING......
I (368) SEG_MASTER: RECEIVING......
Transaction No.3 from slave, length: 3333
I (378) SEG_MASTER: SENDING......
I (378) SEG_MASTER: RECEIVING......
Transaction No.4 from slave, length: 4965
I (388) SEG_MASTER: SENDING......
I (388) SEG_MASTER: RECEIVING......
Transaction No.5 from slave, length: 3042
I (398) SEG_MASTER: SENDING......
I (408) SEG_MASTER: RECEIVING......
Transaction No.6 from slave, length: 4892
I (408) SEG_MASTER: SENDING......
I (418) SEG_MASTER: RECEIVING......
Transaction No.7 from slave, length: 3585
I (428) SEG_MASTER: SENDING......
I (428) SEG_MASTER: RECEIVING......
Transaction No.8 from slave, length: 3348
I (438) SEG_MASTER: SENDING......
I (438) SEG_MASTER: RECEIVING......
Transaction No.9 from slave, length: 4985
I (448) SEG_MASTER: SENDING......
I (448) SEG_MASTER: RECEIVING......
Transaction No.10 from slave, length: 3710
...

seg_slave

77 bytes are received:
this is master's transaction 0
109 bytes are received:
this is master's transaction 1
83 bytes are received:
this is master's transaction 2
97 bytes are received:
this is master's transaction 3
47 bytes are received:
this is master's transaction 4
89 bytes are received:
this is master's transaction 5
80 bytes are received:
this is master's transaction 6
96 bytes are received:
this is master's transaction 7
83 bytes are received:
this is master's transaction 8
110 bytes are received:
this is master's transaction 9
113 bytes are received:
this is master's transaction 10
...

Troubleshooting

For any technical queries, please open an issue on GitHub. We will get back to you.