STM32的SPI速度怎么这么慢?

2019-12-14 13:23发布

本帖最后由 prince2010 于 2018-12-6 10:08 编辑

代码如下——

        SPI1_CS0_Enable();
        for(i = 0; i < 1000; i++)
        {
            SPI1->DR = DataIn;
            while(!(SPI1->SR & SPI_I2S_FLAG_RXNE)); //等待一个字节接收完
            DataOut = SPI1->DR;  //返回SPI1接收的数据
        }
        SPI1_CS0_Disable();

系统时钟72MHz,可是用示波器观察,循环体就这么几句代码,字节间发送间隔竟然达到1us!!!

大家帮忙看看

补充:以下是SPI 时钟引脚的波形。


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
26条回答
prince2010
1楼-- · 2019-12-15 09:16
 精彩回答 2  元偷偷看……
prince2010
2楼-- · 2019-12-15 14:22
cloudboy 发表于 2018-12-6 09:46
楼主不用奇怪,把反汇编打开来看看,再看看优化等级,另外一些总线寄存器访问并不是单、双周期的,可能要等 ...

平时基本不敢开优化,我刚试了以下(O3,Optimize for Time),直接跑不起来了。

不知道优化需要注意什么?
prince2010
3楼-- · 2019-12-15 16:45
不知道是代码执行效率的问题,还是SPI硬件的问题?
prince2010
4楼-- · 2019-12-15 21:16
这儿有篇类似的帖子——

http://bbs.21ic.com/icview-1211954-1-1.html
hyz_avr
5楼-- · 2019-12-15 22:36
一个循环里面多发送几次看看是不是也一样的.
cloudboy
6楼-- · 2019-12-16 02:14
 精彩回答 2  元偷偷看……

一周热门 更多>