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条回答
McuPlayer
1楼-- · 2019-12-16 22:04
要速度DMA啊,至少也用中断吧
OneRain
2楼-- · 2019-12-17 02:24
kebaojun305 发表于 2018-12-6 11:58
代码一直都是最高优化 写的 和跑的。


我和你一样,平时都是开最高优化。。。好的代码是抗优化得。。。
mangoes
3楼-- · 2019-12-17 03:52
使用DMA + SPI可以获取比较高的数据吞吐量
prince2010
4楼-- · 2019-12-17 07:31
 精彩回答 2  元偷偷看……
Eric2013
5楼-- · 2019-12-17 07:53
发送阶段等待TXE,发送完毕后等RXNE即可,你试试。

  1. /* SPI_SR位定义 */
  2. #define RXNE    0x01
  3. #define TXE      0x02
  4. #define BSY      0x80

  5. /*
  6. *********************************************************************************************************
  7. *        函 数 名: SendBuf
  8. *        功能说明: 通过SPI接口发送多个字节
  9. *        形    参: buf 数据地址
  10. *                  sz  发送数据大小
  11. *        返 回 值: __TRUE
  12. *********************************************************************************************************
  13. */
  14. static BOOL SendBuf (U8 *buf, U32 sz)
  15. {
  16.         U32 i;

  17.         for (i = 0; i < sz; i++)
  18.         {
  19.                 SPI_SelectHard->DR = buf[i];
  20.                 /* 等待发送完成 */
  21.                 while (!(SPI_SelectHard->SR & TXE));
  22.                 SPI_SelectHard->DR;
  23.         }
  24.        
  25.         /* 等待接收完成 */
  26.         while (SPI_SelectHard->SR & (BSY | RXNE))
  27.         {
  28.                 SPI_SelectHard->DR;
  29.         }
  30.         return (__TRUE);
  31. }
复制代码
laoshuhunya
6楼-- · 2019-12-17 10:30
prince2010 发表于 2018-12-6 18:15
一般要注意些什么?

如果开启高优化后软件不能运行,大部分和“volatile”有关。
先把优化开到最高,有问题再一步步解决,可以参考下图来查找问题可能的原因:
  

C 程序中的怪异现象.png (1.28 MB, 下载次数: 0)

下载附件

C程序中的怪异现象

2018-12-6 19:32 上传

一周热门 更多>