完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我遇到了一个我无法解决的问题,而且我的想法也用完了……
我正在使用带有 ESP32Wrover 模块的独特硬件。我正在使用带有 arduino 和 idf 框架的 Platformio,platformio 5.3.0 版本(Arduino v2.0.6 和 ESP-IDF 到 v4.4.3)。 需要实现以下功能: 1. 具有网络服务器功能的以太网 2. 具有 20MHz SPI 时钟的时间关键型 SPI 测量、x4 突发测量、片选扩展、18us 周期。阅读必须是连续的。 3. 两通道PWM信号~8kHz频率启用100ms禁用900ms(用MCPWM实现) 所有功能都已单独实现并运行良好。为了进行确定性操作,我将所有与测量相关的内容分配给核心 1上的中断被禁用,core1 上的看门狗被禁用,delay() 函数从未被调用,所有函数和变量都在 RAM 中(使用 DMA_ATTR 和 IRAM_ATTR 属性)。 core0 做以太网的事情,core1 做测量。Core1 具有用于过滤测量数据的附加算法。但是,如果 SPI 测量正在运行或 PWM 信号在输出端处于活动状态,以太网就会断开(设备无法获取 IP 地址,并且会反复连接/断开连接)。如果禁用 SPI 测量和 MCPWM,则以太网可以正常工作。 如果我在 core1 上使用以下代码,并定期调用它: 代码:全选 SPI2->data_buf[0] = *txBuf; // Start transfer spi_ll_master_user_start(SPI2); while (SPI2->cmd.usr); // Wait for SPI bus ready *rxBuf = (uint16_t) SPI2->data_buf[0]; 以太网坏了。或者,如果我只是定期调用 spi_ll_master_user_start() 函数并等待 SPI2->cmd.usr,而不打扰 data_buf[],我仍然会损坏以太网操作...如果我从 core1 中删除此代码,则以太网可以正常工作。 可能是什么问题? |
|
相关推荐
1个回答
|
|
SPI 是否与以太网 mac 共享任何资源?核心1是否保留了任何导致故障的内部总线?
|
|
|
|
只有小组成员才能发言,加入小组>>
166个成员聚集在这个小组
加入小组1143 浏览 1 评论
582浏览 6评论
480浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
465浏览 5评论
466浏览 4评论
441浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 17:51 , Processed in 0.632267 second(s), Total 45, Slave 40 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号