完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
详细描述,请参考:https://blog.csdn.net/weichushun/articl ... /123128016
如何增加ESP32-S2 以太网SPI接口的CS建立时间? (1) 问题现象: 偶尔出现_[0;31mE (6321) dm9051.mac: buffer size too small, needs 16444_[。只有降低SPI频率到20MHz才ok。 (2) 问题分析: 通过示波器测量,发现DM9051的cs建立时间和保持时间很紧张,其它信号质量和时序ok,需要增加cs的建立时间和保持时间来试试。 (3) 问题解决: 根据esp32-s2_technical_reference_manual_cn.pdf, 实际测试时发现spi_device_interface_config_t结构体.cs_ena_pretrans不能大于0,否则系统反复重启。 Spi_master.h文件spi_device_interface_config_t uint16_t cs_ena_pretrans; ///< Amount of SPI bit-cycles the cs should be activated before the transmission (0-16). This only works on half-duplex transactions. uint8_t cs_ena_posttrans; ///< Amount of SPI bit-cycles the cs should stay active after the transmission (0-16) cs_ena_pretrans—确实有限制,是什么原因导致的?SPI总线接口本身是没有这个限制的,我们用其它单片机试过DM9051的SPI跑40MHz没任何问题。 请问如何使能SPI_CS_SETUP,实现增加CS的建立时间? |
|
相关推荐
1个回答
|
|
|
要增加ESP32-S2以太网SPI接口的CS(Chip Select)建立时间,可以按照以下步骤进行操作:
1. **理解问题**:首先,我们需要理解问题的本质。根据你提供的信息,DM9051以太网芯片的CS信号建立时间和保持时间可能不足以满足其正常工作要求,导致偶尔出现缓冲区大小不足的错误。 2. **修改SPI配置**:ESP32-S2的SPI接口可以通过修改SPI配置来调整CS信号的建立时间和保持时间。这通常涉及到修改SPI的时序参数。 3. **查找相关文档**:在进行修改之前,需要查阅ESP32-S2的官方文档,了解如何调整SPI时序参数。这通常涉及到修改SPI的初始化代码。 4. **修改SPI初始化代码**:在ESP-IDF框架中,你可以通过修改`spi_device_interface_config_t`结构体中的`pre_cb`(预处理回调函数)来实现自定义的CS信号处理。例如: ```c spi_device_interface_config_t devcfg = { .command_bits = 0, .address_bits = 0, .dummy_bits = 0, .clock_speed_hz = 10 * 1000 * 1000, // 调整SPI时钟频率 .duty_cycle_pos = 0, .cs_ena_pretrans = 2, // 增加CS建立时间 .cs_ena_posttrans = 2, // 增加CS保持时间 .input_delay_ns = 0, .flags = SPI_DEVICE_NO_DUMMY, .queue_size = 7, .pre_cb = my_pre_cb, // 自定义预处理回调函数 .post_cb = 0, }; ``` 5. **自定义预处理回调函数**:在`my_pre_cb`函数中,你可以实现自定义的CS信号处理逻辑,例如通过延时来增加CS的建立时间和保持时间。 ```c void my_pre_cb(spi_transaction_t *t) { // 这里可以添加延时函数,例如: vTaskDelay(pdMS_TO_TICKS(10)); // 延时10ms } ``` 6. **测试和验证**:修改完SPI配置后,需要重新编译并烧录到ESP32-S2上,然后进行测试以验证是否解决了问题。 7. **调整和优化**:如果问题仍然存在,可能需要进一步调整SPI时序参数或尝试其他解决方案。 请注意,以上步骤仅供参考,具体实现可能因项目和硬件配置的不同而有所差异。在进行修改时,请确保遵循ESP32-S2的官方文档和规范。 |
|
|
|
|
只有小组成员才能发言,加入小组>>
479 浏览 0 评论
1006 浏览 0 评论
1716 浏览 0 评论
请问一下我想用ESP8685直接替换ESP8266而不用写程序,可以让ESP8685直接通过之前ESP8266的外挂的flash运行程序吗
1375 浏览 1 评论
1258 浏览 1 评论
为blufi_device设置自定义名称,但是无法修改,为什么?
1295浏览 4评论
请问ESP32-S2-WROOM怎么获得ESP32-S2外接FLASH的唯一序列号?
945浏览 3评论
2396浏览 3评论
ESP-IDF的VScode插件的build按钮点击会报错的原因?
2585浏览 3评论
ESP-Jumpstart例程中第5个工程:5_cloud连接报错是哪里的问题?
1077浏览 2评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-17 19:16 , Processed in 0.697350 second(s), Total 74, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
539
