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 | 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 recv; memset (&recv, 0, sizeof (recv)); recv.length = 10 * 8; recv.rxlength = 10 * 8; recv.rx_buffer = recvbuf; esp_err_t ret = spi_device_polling_transmit(dev._SPIHandle, &recv); spi_transaction_t SPITransaction; memset (&SPITransaction, 0, sizeof (spi_transaction_t)); SPITransaction.length = 10 * 8; SPITransaction.tx_buffer = sendbuf; SPITransaction.rx_buffer = recvbuf; ret = spi_device_transmit(dev._SPIHandle, &SPITransaction); assert (ret == ESP_OK); vTaskDelay(pdMS_TO_TICKS(5)); // vTaskDelay(100); vSetSSN(1); vTaskDelay(pdMS_TO_TICKS(10)); vSetSSN(0); vTaskDelay(pdMS_TO_TICKS(100)); if (_DEBUG_) ESP_LOGI(TAG, "W25Q64_readStatusReg2=%x %x %x" , recvbuf[0], recvbuf[1], recvbuf[2]); uint8_t cmd2[1] = {}; char sendbuf2[1]; char recvbuf2[100]; 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); assert (ret == ESP_OK); if (_DEBUG_) ESP_LOGI(TAG, "W25Q64_readStatusReg2=%x %x %x" , recvbuf2[0], recvbuf2[1], recvbuf2[2]); |
【推荐】国内首个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