为什么SPI CLK间隔时间这么长呢?求高手解答

[复制链接]
3476|12
 楼主| a868247 发表于 2012-12-20 10:01 | 显示全部楼层 |阅读模式
uint16_t SPI_ReadWriteByte(uint16_t TxData)
{
while((SPI1->SR&1<<1) ==0);                                 //等待发送区空      
SPI1->DR =TxData;                                          //发送一个byte
while((SPI1->SR&1<<0) ==0);                                 //等待接收完一个byte               
return SPI1->DR;
}

主函数
while(1)
{
    SPI_ReadWriteByte(0x5555);
  }

我16M SPI时钟,为什么间隔发送时间这么长呢,按道理SPI发送时,也同时接收。收完应该就再发下个数据中间判断时间不用这么长吧
spi_clk.jpg
 楼主| a868247 发表于 2012-12-20 17:17 | 显示全部楼层
木有人回答?
uet_cache 发表于 2012-12-20 17:31 | 显示全部楼层
这时间不长吧,你的单位都是US级的,已经很快了。那个时间应该是语句切换和执行时间。
airwill 发表于 2012-12-20 20:47 | 显示全部楼层
恐怕是这个语句的问题!
while((SPI1->SR&1<<1) ==0);   
不妨写成
while((SPI1->SR&(1<<1)) ==0);
再试试.
 楼主| a868247 发表于 2012-12-24 17:09 | 显示全部楼层
airwill 发表于 2012-12-20 20:47
恐怕是这个语句的问题!
while((SPI1->SR&1

《 优先级比 & 高!并也在程序试了!确实没影响!
seawwh 发表于 2012-12-24 22:23 | 显示全部楼层
代码的主体为函数,函数的进入和退出都回需要时间的,建议这样测试一下:
注意: 调整一下优化级别。
vu16  TT;
while {
  while((SPI1->SR&1<<1) ==0);                           //等待发送区空      
  SPI1->DR =0x5566;                                          //发送一个byte
  while((SPI1->SR&1<<0) ==0);                           //等待接收完一个byte   
  TT=SPI1->DR ;         
}

 楼主| a868247 发表于 2012-12-25 09:38 | 显示全部楼层
seawwh 发表于 2012-12-24 22:23
代码的主体为函数,函数的进入和退出都回需要时间的,建议这样测试一下:
注意: 调整一下优化级别。
vu16  TT; ...

这样确实优化了点,现在间隔缩短到1US。
捡漏王子 发表于 2012-12-25 10:58 | 显示全部楼层
学习了
seawwh 发表于 2012-12-25 13:32 | 显示全部楼层
建议使用SPI 的DMA 发送数据,会提高速率的。
seawwh 发表于 2012-12-25 13:33 | 显示全部楼层
建议使用SPI 的DMA 发送数据,会提高速率的。
 楼主| a868247 发表于 2012-12-25 13:39 | 显示全部楼层
seawwh 发表于 2012-12-24 22:23
代码的主体为函数,函数的进入和退出都回需要时间的,建议这样测试一下:
注意: 调整一下优化级别。
vu16  TT; ...

这样确实优化了,间隔时间缩小了400NS,但现在还有1US存在
 楼主| a868247 发表于 2012-12-27 17:27 | 显示全部楼层
seawwh 发表于 2012-12-25 13:33
建议使用SPI 的DMA 发送数据,会提高速率的。

我是周期性的 。也不好用DMA循环采集吧!如果是单次采集,每次初始化DMA,那时候太长了!
seawwh 发表于 2012-12-31 15:20 | 显示全部楼层
对于周期性的采集,使用DMA 自动重复传送可以无需CPU干预自动进行,利用DMA的完成中断通知CPU即可。
需要使用2个DMA通道,分别对SPI Tx 和SPI Rx
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

97

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部