esp32的SPI实时采集

heipppppp
Posts: 10
Joined: Thu Sep 23, 2021 9:52 am

esp32的SPI实时采集

Postby heipppppp » Mon Dec 27, 2021 2:55 am

我通过SPI和外接的AD 芯片实现通信,可以对AD值进行读取
现在想以10us的速度(100KHz)进行采样,我尝试了
:( 使用10us的定时器,但是会导致看门狗复位,如果使用延时函数则不会触发看门狗,但是无法达到100K的采样率
请问大家有什么好的建议吗?
:!: 定时器方式失败,因为esp32的周期性esp_timer会对最小计时器周期施加50us的限制,也就是说我想使用10us是无法实现的
:?: 现在我想通过pwm控制spi的片选信号,在PWM下降沿时进行一次AD采集,这就需要使用LEDC—PWM的计数中断,但是技术手册上只有寄存器的设置,我应该如何在代码中使用这些寄存器呢

electronicm
Posts: 3
Joined: Tue Feb 08, 2022 1:05 am

Re: esp32的SPI实时采集

Postby electronicm » Tue Feb 08, 2022 6:22 am

请问有解决么?遇到了类似问题 :(

heipppppp
Posts: 10
Joined: Thu Sep 23, 2021 9:52 am

Re: esp32的SPI实时采集

Postby heipppppp » Tue Feb 08, 2022 7:09 am

定时器确实无法实现,看门狗的问题我是直接关闭了看门狗,PWM计数中断我使用的是PWM输出脉冲,PCNT计数中断,但是通过示波器发现每次中断产生后(即产生PWM下降沿)到启动spi采集会出现18-20us的延迟,官方给出的回答是:
  1. [ESP]因为 spi_device_transmit 需要这么长时间启动spi传输,如果一次只传输一点数据,速度将很慢。看看能不能改成连续传输
,目前正在尝试连续传输

diyilala
Posts: 13
Joined: Wed Apr 20, 2022 3:22 am

Re: esp32的SPI实时采集

Postby diyilala » Sat Aug 06, 2022 9:18 am

呜呜呜,蹲一手,遇到了和你一样的问题

Lifeihai
Posts: 9
Joined: Sat Dec 18, 2021 6:49 am

Re: esp32的SPI实时采集

Postby Lifeihai » Tue May 09, 2023 2:42 am

用原厂的驱动程序是绝对不可能的~你需要自己去写底层,原厂驱动程序呢,方便,但效率极低~我记得原厂驱动spi启动一次传输要耗时500us,spi自己写驱动可以做到不到1us,不过有很多注意事项。

Moon-Haze
Posts: 2
Joined: Fri May 10, 2024 5:14 am

Re: esp32的SPI实时采集

Postby Moon-Haze » Thu Aug 01, 2024 9:49 am

我也遇到同样的问题,spi的效率太低了,想要重写spi驱动,ll库又没有什么文档资料参考。

Who is online

Users browsing this forum: No registered users and 158 guests