完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
SPI主机使用的是esp32-s3, SPI从机使用的是STM32g070cbt6,
SPI参数: cpol:low cpha:1 edge 频率:从5M-100K均试过,4线连接 miso mosi sck cs 问题详情: 正常esp32先启动,stm32后启动时,正常工作,stm32收发正常, 但当esp32单独重启时,stm32收到的数据就错误了,只有重启stm32后才能正常. 正常时候, 主机发送0xAD stm32收到0xAD ESP32主机重启后, stm32从机接收的所有数据就固定移位x位了(每次esp32重启该x都会变),如发AD, 收到5B stm32重启后, 正常了,esp32发送0xAD, stm32收到0xAD 示波器一直在测得esp32发送的数据没有错, 调试中看到SPI寄存器DR收到的确实是错误的数据 stm32也是新建工程,只使能了spi slave和串口 void SPI1_IRQHandler(void){ /* USER CODE BEGIN SPI1_IRQn 0 */ if (LL_SPI_IsActiveFlag_RXNE(SPI1)) { /* Call function Slave Reception Callback */ SPI1_Rx_Callback(); }}void SPI1_Rx_Callback(){ uint8_t rx = LL_SPI_ReceiveData8(SPI1); osMessagePut(myQueueSPIRxHandle,rx,0);} 请问下这个情况是什么原因,我该怎么解决 最后解决办法: 用了硬件NSS,正常了, 应该是我软件nss没解决好,就不搞软件nss了 |
|
相关推荐
1个回答
|
|
STM32的SPI外设的DR寄存器是移位寄存器,也就是来一个时钟沿一位位移进去的,说明初始化SPI后,正好处于ESP32的发送SPI的流程中,从中间某个clk的数据开始移位的,那当然是都错乱了。
看来你和esp32就用spi通信了,如果有其他方式,io或者串口什么的可以做个协议,初始化完成后esp32再进行发送,如果是整机同时上电,esp32你先延时一会是最简单的方案。 其他建议:
|
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1646 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1566 浏览 1 评论
993 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
692 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1611 浏览 2 评论
1871浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
656浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
526浏览 3评论
542浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
515浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-27 03:02 , Processed in 0.972887 second(s), Total 80, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号