STM32
直播中

李进锋

7年用户 888经验值
私信 关注
[问答]

SPI怎么连续发送啊?

  SPI怎么连续发送啊。。我测试最小的两次发送间距也要5ms啊、、怎么达到us级别啊。。或者怎么能有效的减小间距啊。。。要是我采样10000次。中间加求平均的话,人不得被搞死啊

while(1)
{
   LED1=0;
  CS =0;
  delay_us(2);
  SPI2_ReadWriteByte(0xAAAA);
    adcx=AD_Value;
//  LCD_ShowxNum(156,130,adcx,5,16,0);//显示ADC的值
  CS =1;

  }



为什么加了句LCD显示的。。SPI发送就延时毫秒级别啊..


回帖(1)

王萍

2024-5-17 18:17:03
要实现SPI的连续发送并减小发送间距,可以尝试以下几个方法:

1. 优化代码:检查代码中是否有不必要的延时或循环,尽量简化代码逻辑,减少不必要的操作。

2. 使用DMA(Direct Memory Access):如果你的硬件支持DMA,可以使用DMA来实现SPI数据的自动传输,这样可以减少CPU的负担,提高传输速度。

3. 调整SPI时钟频率:尝试提高SPI的时钟频率,以减少每次传输所需的时间。但请注意,提高时钟频率可能会影响通信的稳定性,需要根据实际情况进行调整。

4. 减少LCD显示的频率:如果LCD显示对实时性要求不高,可以尝试降低显示频率,以减少对SPI传输的影响。

5. 使用中断:将SPI传输和LCD显示操作放入中断服务程序中,这样可以在主循环中腾出更多的时间来处理其他任务。

6. 使用多线程或任务调度:如果你的系统支持多线程或任务调度,可以将SPI传输和LCD显示分配给不同的线程或任务,以实现并行处理。

关于你提到的LCD显示导致SPI发送延时的问题,可能是因为LCD显示操作占用了大量CPU资源,导致SPI传输被阻塞。可以尝试上述方法来优化代码,提高传输速度。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分