完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我想通过 SPI(使用 IDF)发送特定的 32 位命令。
下面的代码有效(示波器显示)但我需要 cpha = 1。 所以工作代码是: 和不工作,但我需要: 这是行不通的,spi_trans 永远不会完成。在示波器上,传输流是无穷无尽的。我有点困惑为什么会这样?如何发送 cpha = 1 的简单 8 位命令?我错过了什么? 感谢您的帮助。 亲切的问候 弗兰克 代码:全选static void spi_master_write_slave_task(void *arg) { while(true){ ESP_LOGI(TAG, "start write"); spi_trans_t trans = {0}; uint32_t data = 0xAAFFAA55; trans.mosi = &data; trans.bits.val = 0; trans.bits.cmd = 0; trans.bits.mosi = 32; spi_trans(HSPI_HOST, trans); ESP_LOGI(TAG, "end write"); vTaskDelay(1000 / portTICK_RATE_MS); } } 代码:全选 void app_main(void) { ESP_LOGI(TAG, "init spi"); spi_config_t spi_config; spi_config.interface.val = SPI_DEFAULT_INTERFACE; spi_config.intr_enable.val = SPI_MASTER_DEFAULT_INTR_ENABLE; spi_config.interface.bit_tx_order = 0; spi_config.interface.bit_rx_order = 0; spi_config.interface.cpol = 0; spi_config.interface.cpha = 1; // <- infinite loop in spi_trans if I switch to 1 here, 0 works spi_config.intr_enable.val = SPI_MASTER_DEFAULT_INTR_ENABLE; spi_config.mode = SPI_MASTER_MODE; spi_config.clk_div = SPI_2MHz_DIV; spi_config.event_cb = NULL; spi_init(HSPI_HOST, &spi_config); xTaskCreate(spi_master_write_slave_task, "spi_master_write_slave_task", 4096, NULL, 10, NULL); } |
|
相关推荐
1个回答
|
|
根据你提供的代码和描述,似乎你需要调整 SPI 总线的时序设置以支持 CPHA = 1。默认情况下,IDF 使用 CPHA = 0,即数据在时钟的反向边沿上采样,而你需要的是数据在时钟边沿上采样。
要设置 CPHA = 1,请按以下步骤进行操作: 1.创建一个 spi_device_interface_config 结构体并初始化 CPHA 参数,例如: ```c spi_device_interface_config_t devcfg={ .clock_speed_hz=1000000, //时钟速度为1 MHz .mode=2, //要同时启用 CPHA 和 CPOL .spics_io_num=PIN_NUM_CS, //定义 CS 接口引脚 .queue_size=7, }; ``` 2.在 spi_bus_add_device() 调用中将此结构体传递给 SDK,例如: ```c spi_bus_add_device(SPI2_HOST, &devcfg, &spi); ``` 如果你已经尝试这些步骤但仍然遇到问题,你可能需要检查其他因素,例如硬件电路连接和设备驱动程序。 |
|
|
|
只有小组成员才能发言,加入小组>>
968 浏览 1 评论
553浏览 6评论
462浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
447浏览 5评论
448浏览 4评论
418浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-27 05:48 , Processed in 0.877654 second(s), Total 76, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号