esp32 spi_slave

#define GPIO_MOSI 35 #define GPIO_MISO 37 #define GPIO_SCLK 36 #define RCV_HOST SPI3_HOST #include <stdio.h> #include <string.h> #include "freertos/FreeRTOS.h" #include "freertos/task.h" #include "esp_log.h" #include <driver/gpio.h> #include <driver/spi_master.h> #include <driver/spi_slave.h> #include "nvs_flash.h" #include "w25q64.h" void app_main(void) { esp_err_t err; // Initialize NVS. err = nvs_flash_init(); if (err == ESP_ERR_NVS_NO_FREE_PAGES) { // can happen if truncated/partition size changed ESP_ERROR_CHECK(nvs_flash_erase()); err = nvs_flash_init(); } ESP_ERROR_CHECK(err); // configuration for the SPI bus spi_bus_config_t buscfg={ .mosi_io_num = GPIO_MOSI, .miso_io_num = GPIO_MISO, .sclk_io_num = GPIO_SCLK, .quadwp_io_num = -1, .quadhd_io_num = -1, // .flags = SPICOMMON_BUSFLAG_IOMUX_PINS .flags = SPICOMMON_BUSFLAG_GPIO_PINS }; // configuration for the SPI slave interface spi_slave_interface_config_t slvcfg={ .mode = 3, //CPOL=1, CPHA=1 .spics_io_num = -1, .queue_size = 3, .flags = SPI_SLAVE_BIT_LSBFIRST }; // initialize SPI slave interface err = spi_slave_initialize(RCV_HOST, &buscfg, &slvcfg, SPI_DMA_CH_AUTO); // can't disable DMA. no comms if you do... spi_slave_transaction_t spi_slave_trans; WORD_ALIGNED_ATTR uint8_t recvbuf[20]; WORD_ALIGNED_ATTR uint8_t sendbuf[20]; while(1) { memset(recvbuf, 0x55, 20); //Set up a transaction of 20 bytes to send/receive spi_slave_trans.length = 20*8; spi_slave_trans.tx_buffer = sendbuf; spi_slave_trans.rx_buffer = recvbuf; spi_slave_transmit(RCV_HOST, &spi_slave_trans, portMAX_DELAY); uint8_t rx_checksum = 0; for (uint8_t byte_cnt = 0; byte_cnt < 18; byte_cnt++) { // calculate checksum rx_checksum += recvbuf[byte_cnt]; } printf("%02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x (calc %d) rx_checksum: %d \n", recvbuf[0], recvbuf[1], recvbuf[2], recvbuf[3], recvbuf[4], recvbuf[5], recvbuf[6], recvbuf[7], recvbuf[8], recvbuf[9], recvbuf[10], recvbuf[11], recvbuf[12], recvbuf[13], recvbuf[14], recvbuf[15], recvbuf[16], recvbuf[17], recvbuf[18], recvbuf[19], (recvbuf[18]<<8)+(recvbuf[19]), rx_checksum ); //vTaskDelayMs(1000); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
2020-09-05 采煤机
2020-09-05 艾体威尔pos 终端
2020-09-05 xinguodu POS机
2020-09-05 MSYS2
2020-09-05 cario可以将字符字形转换为png文件
2020-09-05 gtk+ 2.0
2019-09-05 密码机