完善资料让更多小伙伴认识你,还能领取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的官方文档和规范。 |
|
|
|
只有小组成员才能发言,加入小组>>
1138 浏览 1 评论
576浏览 6评论
477浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
461浏览 5评论
462浏览 4评论
436浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 13:27 , Processed in 0.598758 second(s), Total 44, Slave 38 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号