最近在调8266和stm32通讯,stm32做主机,8266做从机,然后用一个io作为miso数据的中断线,8266
填充好数据就把io拉一下,stm32外部中断里面执行
spi_tx_buf[0] = 0x03;
spi_tx_buf[1] = 0x00;
HAL_SPI_TransmitReceive_DMA(&hspi1,spi_tx_buf,spi_rx_buf,34);
把数据接收回来。
8266端,把官方spitest移植了一下,发现STM32 spi 时钟12Mhz时候可以正常通讯,然后把spi中断函数中的全部打印去掉,发现就进入不了SPI_SLV_RD_BUF_DONE中断了(有变量标志,发送数据时候置位,进入中断清0,再次发送时候发现标准非0打印错误信息退出)。后面调节过
//SET_PERI_REG_MASK(SPI_CTRL2(SpiNum_HSPI),(0x2&SPI_MISO_DELAY_NUM)<<SPI_MISO_DELAY_NUM_S) ;
//SET_PERI_REG_MASK(SPI_CTRL2(SpiNum_HSPI),(0x2&SPI_MOSI_DELAY_NUM)<<SPI_MOSI_DELAY_NUM_S) ;
数据线延迟,效果也是一样,通讯失败没有进入中断,偶尔第二次调用发送函数时候会进入SPI_SLV_WR_BUF_DONE中断或者状态中断。怀疑还是时序有点不对
有人调试过么,wifi 速度测试能够达到1.6-1.9MB/s。spi透传应该可以达到1MB/s
淘宝好像有spi 的 8266模块,是怎么实现的呢
离线
逻辑上没问题,应该先单独调通两边的spi(回环,自发自收),确认时序是否一致,最后再接起来调试
最近编辑记录 checkout (2019-12-24 23:20:23)
离线
逻辑上没问题,应该先单独调通两边的spi(回环,自发自收),确认时序是否一致,最后再接起来调试
感谢回复,我发现stm32的 spi时钟调成3MHz就可以了,调成6MHZ或者12Mhz都不行。难道8266最高只能3Mhz么,手册上好像是写slave可以达到10Mhz的。不知道还有哪个地方有问题,spi的连接目前8266模块是贴在板子上,而不是杜邦线。应该可以排除线过长导致的问题
离线
esp8266上传不是很快
离线
esp8266上传不是很快
嗯,上传我应用不快。主要是下载。现在问题是STM32 的SPI大于3Mhz,8266接收就乱,不能够正确响应0x03 读命令和数据,没有进入读成功的中断
离线
官方的sdk声称spi透传可以到达M字节以上速率的,不知你用的时哪个例子?
官方github例子
可以参考:stm32通过spi连接esp8266的hspi 开发
离线
官方的sdk声称spi透传可以到达M字节以上速率的,不知你用的时哪个例子?
官方github例子
可以参考:stm32通过spi连接esp8266的hspi 开发
用的是nonos的例子,这个rtos在中断处理有参考的地方。先去尝试一下
离线
官方对NONOS SDK不再更新了,建议还是用RTOS SDK方便
用的是nonos的例子,这个rtos在中断处理有参考的地方。先去尝试一下
离线
你难道不怀疑主机stm32可能速度有问题呢,而且你调来跳去也是改的32的速度。
离线