如何增加ESP32-S2 以太网SPI接口的CS建立时间?

weichushun
Posts: 10
Joined: Sat Jun 20, 2020 5:16 am

如何增加ESP32-S2 以太网SPI接口的CS建立时间?

Postby weichushun » Fri Feb 25, 2022 2:55 am

详细描述,请参考: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的建立时间?
Attachments
如何增加ESP32-S2 以太网SPI接口的CS建立时间?.docx
(241.31 KiB) Downloaded 401 times

ESP_Yake
Posts: 109
Joined: Mon Mar 06, 2017 12:23 pm

Re: 如何增加ESP32-S2 以太网SPI接口的CS建立时间?

Postby ESP_Yake » Mon Feb 28, 2022 2:13 am

Hi,
重启原因是一个assert么?cs_ena_pretrans 在头文件中已经说明只能在半双工下面工作。
另外, SPI 使用 20M 我认为基本已经满足 DM9051 的需求,这个 SPI 以太网卡是 10M 的

weichushun
Posts: 10
Joined: Sat Jun 20, 2020 5:16 am

Re: 如何增加ESP32-S2 以太网SPI接口的CS建立时间?

Postby weichushun » Sun Mar 13, 2022 2:45 am

DM9051不是支持10M的。
Support 10BASE-T and 100BASE-TX and 100M Fiber interface。

用STM32 SPI是可以50MHz的。是ESP32-S2的SPI接口有限制吗?
我看ESP32-S2的内部SPI接口接FLASH和PSRAM,都是工作在80MHz。

weichushun
Posts: 10
Joined: Sat Jun 20, 2020 5:16 am

Re: 如何增加ESP32-S2 以太网SPI接口的CS建立时间?

Postby weichushun » Sun Mar 13, 2022 4:31 am

访问时序上看DM9051也是半双工,前面有1字节CMD,后面才是读写数据。

Who is online

Users browsing this forum: No registered users and 139 guests