esp32 spi 正常一个标准流程
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | uint8_t cmd[10] = {0x55, 0x00, 0xB0, 0x99, 0x00, 0x00, 0x02, 0x00, 0x08, 0x00}; cmd[9] = getLRCx(&cmd[1], 8); char sendbuf[10]; char recvbuf[10]; memcpy (sendbuf, cmd, 10); // vSetSSN(0); // vSetMOSI(1); // vSetMISO(1); // vSetSCK(1); vSetSSN(0); vTaskDelay(pdMS_TO_TICKS(100)); spi_transaction_t SPITransaction; memset (&SPITransaction, 0, sizeof (spi_transaction_t)); SPITransaction.length = 10 * 8; SPITransaction.tx_buffer = sendbuf; SPITransaction.rx_buffer = recvbuf; esp_err_t ret = spi_device_transmit(dev._SPIHandle, &SPITransaction); assert (ret == ESP_OK); if (_DEBUG_) ESP_LOGI(TAG, "W25Q64_readStatusReg2=%x %x %x" , recvbuf[0], recvbuf[1], recvbuf[2]); vTaskDelay(pdMS_TO_TICKS(5)); // vTaskDelay(100); vSetSSN(1); vTaskDelay(pdMS_TO_TICKS(10)); vSetSSN(0); vTaskDelay(pdMS_TO_TICKS(100)); uint8_t cmd2[1] = {0x00}; char sendbuf2[1]; char recvbuf2[1]; memcpy (sendbuf2, cmd2, 1); /* spi_transaction_t SPITransaction2; memset(&SPITransaction2, 0, sizeof(spi_transaction_t)); SPITransaction2.length = 1 * 8; SPITransaction2.tx_buffer = sendbuf2; SPITransaction2.rx_buffer = recvbuf2; ret = spi_device_transmit(dev._SPIHandle, &SPITransaction2); */ spi_transaction_t recv2; memset (&recv2, 0, sizeof (recv2)); recv2.length = 1 * 8; recv2.rxlength = 1 * 8; recv2.rx_buffer = recvbuf2; ret = spi_device_polling_transmit(dev._SPIHandle, &recv2); memcpy (recvbuf2,recv2.rx_buffer,1); assert (ret == ESP_OK); if (_DEBUG_) ESP_LOGI(TAG, "W25Q64_readStatusReg2=%x" , recvbuf2[0]); |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
2020-09-06 mylocale
2020-09-06 物证比对
2019-09-06 判断Xen虚拟机随想
2019-09-06 安全工具箱
2019-09-06 安全sysmon