你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32作为SPI从设备,中断接收5个数据,偶尔会出错。

[复制链接]
any012 提问时间:2016-6-1 09:47 /
悬赏30ST金币已解决
用STM32的SPI2口,主设备不停的发送0x3a05,0x010a,0x0100,0x0000,0x9d76;
以上5个16位数据为一帧,每帧间有一段时间间隔。

从设备我是这么处理的,利用SPI2的中断接收。
中断程序里,定义个spi2Num作为存放接收数据的位置,如果spi2Num == 0,先判断接收到的数据是不是帧首,如果是帧首的话,spi2Num = 1,且将接收到的这个数据放到接收数组的第一个位置;
然后再次接受中断时,依次根据spi2Num的值放到数组的相应位置,每次接收数据后,spi2Num++;
如果spi2Num > 4,说明已经接收到5个数据了,将spi2Num清零,并置个标志位,主程序里查询这个标志位,再做相应处理(串口将接收数组发送出来)。

现在的问题是,通过串口发送过来的数据,有时候是正确的。
有时候,上电前两次接收到的是正确的,然后都是错误帧。错误帧的第一二个数据都是0x3a05,其他数据依次往后推,最后一个没了。
接收错误时观察SCL和MOSI管脚波形,主机发送的数据是正确的。

以下为产生错误时的MSOI波形图,串口发送的数据,以及工程文件。

scope_0.png

1s定时到。
spirecive[0]: 3a05
spirecive[1]: 10a
spirecive[2]: 100
spirecive[3]: 0
spirecive[4]: 9d76
1s定时到。
spirecive[0]: 3a05
spirecive[1]: 3a05
spirecive[2]: 100
spirecive[3]: 0
spirecive[4]: 9d76
1s定时到。
spirecive[0]: 3a05
spirecive[1]: 10a
spirecive[2]: 100
spirecive[3]: 0
spirecive[4]: 9d76
1s定时到。
spirecive[0]: 3a05
spirecive[1]: 10a
spirecive[2]: 100
spirecive[3]: 0
spirecive[4]: 9d76
1s定时到。

SPI从模式测试.zip (4.53 MB, 下载次数: 69)

最佳答案

查看完整内容

更改了程序,删掉大部分功能。spi2中断接受数据后放到一个30个数据的数组里,接受够30个数据,置个标志位。 主程序里检测到这个标志位后,将30个数据用串口打印出来,如果是3a开头的,前边多加个空行。打印完后,清标志位,继续接受。 spi2RecvTemp[14]:0100 spi2RecvTemp[15]:0000 spi2RecvTemp[16]:9d76 spi2RecvTemp[17]:3a05 spi2RecvTemp[18]:3a05 spi2RecvTemp[19]:010a spi2RecvTemp[20]:0100 spi2RecvTemp[21]:0000 spi ...
收藏 评论5 发布时间:2016-6-1 09:47

举报

5个回答
yonghuzhuce 回答时间:2016-6-1 09:47:12
本帖最后由 yonghuzhuce 于 2016-6-8 10:32 编辑

更改了程序,删掉大部分功能。spi2中断接受数据后放到一个30个数据的数组里,接受够30个数据,置个标志位。
主程序里检测到这个标志位后,将30个数据用串口打印出来,如果是3a开头的,前边多加个空行。打印完后,清标志位,继续接受。

spi2RecvTemp[14]:0100
spi2RecvTemp[15]:0000
spi2RecvTemp[16]:9d76

spi2RecvTemp[17]:3a05

spi2RecvTemp[18]:3a05

spi2RecvTemp[19]:010a
spi2RecvTemp[20]:0100
spi2RecvTemp[21]:0000
spi2RecvTemp[22]:9d76

spi2RecvTemp[23]:3a05
spi2RecvTemp[24]:010a
spi2RecvTemp[25]:0100
spi2RecvTemp[26]:0000
spi2RecvTemp[27]:9d76

spi2RecvTemp[28]:3a05
spi2RecvTemp[29]:010a


spi2RecvTemp[0]:3a05

spi2RecvTemp[1]:3a05
spi2RecvTemp[2]:010a


spi2RecvTemp[3]:3a05
spi2RecvTemp[4]:010a

spi2RecvTemp[5]:3a05
spi2RecvTemp[6]:010a


spi2RecvTemp[7]:3a05
spi2RecvTemp[8]:010a
spi2RecvTemp[9]:0100
spi2RecvTemp[10]:0000
spi2RecvTemp[11]:9d76

spi2RecvTemp[12]:3a05
spi2RecvTemp[13]:010a
spi2RecvTemp[14]:0100
spi2RecvTemp[15]:0000
spi2RecvTemp[16]:9d76

spi2RecvTemp[17]:3a05

spi2RecvTemp[18]:3a05
spi2RecvTemp[19]:010a
spi2RecvTemp[20]:0100
spi2RecvTemp[21]:0000
spi2RecvTemp[22]:9d76

spi2RecvTemp[23]:3a05
spi2RecvTemp[24]:010a


spi2RecvTemp[25]:3a05
spi2RecvTemp[26]:010a
spi2RecvTemp[27]:0100
spi2RecvTemp[28]:0000
spi2RecvTemp[29]:9d76


spi2RecvTemp[0]:3a05


spi2RecvTemp[1]:3a05
spi2RecvTemp[2]:010a
spi2RecvTemp[3]:0100
spi2RecvTemp[4]:0000
spi2RecvTemp[5]:9d76

spi2RecvTemp[6]:3a05
spi2RecvTemp[7]:010a
spi2RecvTemp[8]:0100
spi2RecvTemp[9]:0000
spi2RecvTemp[10]:9d76

spi2RecvTemp[11]:3a05
spi2RecvTemp[12]:010a
spi2RecvTemp[13]:0100
spi2RecvTemp[14]:0000
spi2RecvTemp[15]:9d76

spi2RecvTemp[16]:3a05
spi2RecvTemp[17]:010a
spi2RecvTemp[18]:0100
spi2RecvTemp[19]:0000
spi2RecvTemp[20]:9d76

spi2RecvTemp[21]:3a05
spi2RecvTemp[22]:010a
spi2RecvTemp[23]:0100
spi2RecvTemp[24]:0000
spi2RecvTemp[25]:9d76

spi2RecvTemp[26]:3a05
spi2RecvTemp[27]:010a
spi2RecvTemp[28]:0100
spi2RecvTemp[29]:0000


spi2RecvTemp[0]:3a05

spi2RecvTemp[1]:3a05
spi2RecvTemp[2]:010a
spi2RecvTemp[3]:0100
spi2RecvTemp[4]:0000
spi2RecvTemp[5]:9d76

spi2RecvTemp[6]:3a05
spi2RecvTemp[7]:010a
spi2RecvTemp[8]:0100
spi2RecvTemp[9]:0000
spi2RecvTemp[10]:9d76

spi2RecvTemp[11]:3a05
spi2RecvTemp[12]:010a
spi2RecvTemp[13]:0100
spi2RecvTemp[14]:0000
spi2RecvTemp[15]:9d76

spi2RecvTemp[16]:3a05
spi2RecvTemp[17]:010a
spi2RecvTemp[18]:0100
spi2RecvTemp[19]:0000
spi2RecvTemp[20]:9d76

spi2RecvTemp[21]:3a05
spi2RecvTemp[22]:010a
spi2RecvTemp[23]:0100
spi2RecvTemp[24]:0000

spi2RecvTemp[25]:3a05
spi2RecvTemp[26]:010a
spi2RecvTemp[27]:0100
spi2RecvTemp[28]:0000
spi2RecvTemp[29]:9d76


spi2RecvTemp[0]:3a05

spi2RecvTemp[1]:3a05
spi2RecvTemp[2]:010a
spi2RecvTemp[3]:0100
spi2RecvTemp[4]:0000
spi2RecvTemp[5]:9d76

spi2RecvTemp[6]:3a05
spi2RecvTemp[7]:010a
spi2RecvTemp[8]:0100
spi2RecvTemp[9]:0000
spi2RecvTemp[10]:9d76

spi2RecvTemp[11]:3a05
spi2RecvTemp[12]:010a
spi2RecvTemp[13]:0100
spi2RecvTemp[14]:0000
spi2RecvTemp[15]:9d76

spi2RecvTemp[16]:3a05
spi2RecvTemp[17]:010a
spi2RecvTemp[18]:0100
spi2RecvTemp[19]:0000
spi2RecvTemp[20]:9d76

spi2RecvTemp[21]:3a05
spi2RecvTemp[22]:010a
spi2RecvTemp[23]:0100


spi2RecvTemp[24]:3a05
spi2RecvTemp[25]:010a
spi2RecvTemp[26]:0100
spi2RecvTemp[27]:0000
spi2RecvTemp[28]:9d76

spi2RecvTemp[29]:3a05


spi2RecvTemp[0]:3a05


spi2RecvTemp[1]:3a05
spi2RecvTemp[2]:010a
spi2RecvTemp[3]:0100
spi2RecvTemp[4]:0000
spi2RecvTemp[5]:9d76

spi2RecvTemp[6]:3a05
spi2RecvTemp[7]:010a
spi2RecvTemp[8]:0100
spi2RecvTemp[9]:0000
spi2RecvTemp[10]:9d76

spi2RecvTemp[11]:3a05
spi2RecvTemp[12]:010a
spi2RecvTemp[13]:0100
spi2RecvTemp[14]:0000
spi2RecvTemp[15]:9d76

spi2RecvTemp[16]:3a05
spi2RecvTemp[17]:010a
spi2RecvTemp[18]:0100
spi2RecvTemp[19]:0000
spi2RecvTemp[20]:9d76

spi2RecvTemp[21]:3a05
spi2RecvTemp[22]:010a
spi2RecvTemp[23]:0100


spi2RecvTemp[24]:3a05
spi2RecvTemp[25]:010a
spi2RecvTemp[26]:0100
spi2RecvTemp[27]:0000
spi2RecvTemp[28]:9d76

spi2RecvTemp[29]:3a05


spi2RecvTemp[0]:3a05


spi2RecvTemp[1]:3a05
spi2RecvTemp[2]:010a
spi2RecvTemp[3]:0100
spi2RecvTemp[4]:0000
spi2RecvTemp[5]:9d76

spi2RecvTemp[6]:3a05
spi2RecvTemp[7]:010a


spi2RecvTemp[8]:3a05
spi2RecvTemp[9]:010a
spi2RecvTemp[10]:0100
spi2RecvTemp[11]:0000
spi2RecvTemp[12]:9d76

spi2RecvTemp[13]:3a05
spi2RecvTemp[14]:010a
spi2RecvTemp[15]:0100
spi2RecvTemp[16]:0000
spi2RecvTemp[17]:9d76

spi2RecvTemp[18]:3a05
spi2RecvTemp[19]:010a
spi2RecvTemp[20]:0100
spi2RecvTemp[21]:0000
spi2RecvTemp[22]:9d76

spi2RecvTemp[23]:3a05
spi2RecvTemp[24]:010a
spi2RecvTemp[25]:0100
spi2RecvTemp[26]:0000
spi2RecvTemp[27]:9d76

spi2RecvTemp[28]:3a05
spi2RecvTemp[29]:010a


spi2RecvTemp[0]:3a05

spi2RecvTemp[1]:3a05
spi2RecvTemp[2]:010a
spi2RecvTemp[3]:0100
spi2RecvTemp[4]:0000
spi2RecvTemp[5]:9d76

spi2RecvTemp[6]:3a05
spi2RecvTemp[7]:010a


spi2RecvTemp[8]:3a05
spi2RecvTemp[9]:010a
spi2RecvTemp[10]:0100
spi2RecvTemp[11]:0000
spi2RecvTemp[12]:9d76

spi2RecvTemp[13]:3a05
spi2RecvTemp[14]:010a
spi2RecvTemp[15]:0100
spi2RecvTemp[16]:0000
spi2RecvTemp[17]:9d76

spi2RecvTemp[18]:3a05
spi2RecvTemp[19]:010a
spi2RecvTemp[20]:0100
spi2RecvTemp[21]:0000
spi2RecvTemp[22]:9d76

spi2RecvTemp[23]:3a05
spi2RecvTemp[24]:010a
spi2RecvTemp[25]:0100
spi2RecvTemp[26]:0000
spi2RecvTemp[27]:9d76

spi2RecvTemp[28]:3a05
spi2RecvTemp[29]:010a


spi2RecvTemp[0]:3a05


spi2RecvTemp[1]:3a05
spi2RecvTemp[2]:010a
spi2RecvTemp[3]:0100
spi2RecvTemp[4]:0000
spi2RecvTemp[5]:9d76

spi2RecvTemp[6]:3a05
spi2RecvTemp[7]:010a


spi2RecvTemp[8]:3a05
spi2RecvTemp[9]:010a
spi2RecvTemp[10]:0100
spi2RecvTemp[11]:0000

spi2RecvTemp[12]:3a05
spi2RecvTemp[13]:010a
spi2RecvTemp[14]:0100
spi2RecvTemp[15]:0000
spi2RecvTemp[16]:9d76

spi2RecvTemp[17]:3a05
spi2RecvTemp[18]:010a
spi2RecvTemp[19]:0100
spi2RecvTemp[20]:0000
spi2RecvTemp[21]:9d76

spi2RecvTemp[22]:3a05
spi2RecvTemp[23]:010a
spi2RecvTemp[24]:0100
spi2RecvTemp[25]:0000
spi2RecvTemp[26]:9d76

spi2RecvTemp[27]:3a05
spi2RecvTemp[28]:010a
spi2RecvTemp[29]:0100


spi2RecvTemp[0]:3a05

spi2RecvTemp[1]:3a05
spi2RecvTemp[2]:010a
spi2RecvTemp[3]:0100
spi2RecvTemp[4]:0000
spi2RecvTemp[5]:9d76

spi2RecvTemp[6]:3a05
spi2RecvTemp[7]:010a


spi2RecvTemp[8]:3a05
spi2RecvTemp[9]:010a
spi2RecvTemp[10]:0100
spi2RecvTemp[11]:0000

spi2RecvTemp[12]:3a05
spi2RecvTemp[13]:010a
spi2RecvTemp[14]:0100
spi2RecvTemp[15]:0000
spi2RecvTemp[16]:9d76

spi2RecvTemp[17]:3a05
spi2RecvTemp[18]:010a
spi2RecvTemp[19]:0100
spi2RecvTemp[20]:0000
spi2RecvTemp[21]:9d76

spi2RecvTemp[22]:3a05
spi2RecvTemp[23]:010a
spi2RecvTemp[24]:0100
spi2RecvTemp[25]:0000
spi2RecvTemp[26]:9d76

spi2RecvTemp[27]:3a05
spi2RecvTemp[28]:010a
spi2RecvTemp[29]:0100


spi2RecvTemp[0]:3a05

spi2RecvTemp[1]:3a05
spi2RecvTemp[2]:010a
spi2RecvTemp[3]:0100
spi2RecvTemp[4]:0000
spi2RecvTemp[5]:9d76

spi2RecvTemp[6]:3a05
spi2RecvTemp[7]:010a


spi2RecvTemp[8]:3a05
spi2RecvTemp[9]:010a
spi2RecvTemp[10]:0100
spi2RecvTemp[11]:0000

spi2RecvTemp[12]:3a05
spi2RecvTemp[13]:010a
spi2RecvTemp[14]:0100
spi2RecvTemp[15]:0000

spi2RecvTemp[16]:3a05
spi2RecvTemp[17]:010a
spi2RecvTemp[18]:0100
spi2RecvTemp[19]:0000
spi2RecvTemp[20]:9d76

spi2RecvTemp[21]:3a05
spi2RecvTemp[22]:010a
spi2RecvTemp[23]:0100
spi2RecvTemp[24]:0000
spi2RecvTemp[25]:9d76

spi2RecvTemp[26]:3a05
spi2RecvTemp[27]:010a
spi2RecvTemp[28]:0100
spi2RecvTemp[29]:0000


spi2RecvTemp[0]:3a05


spi2RecvTemp[1]:3a05
spi2RecvTemp[2]:010a
spi2RecvTemp[3]:0100
spi2RecvTemp[4]:0000
spi2RecvTemp[5]:9d76

spi2RecvTemp[6]:3a05
spi2RecvTemp[7]:010a


spi2RecvTemp[8]:3a05
spi2RecvTemp[9]:010a
spi2RecvTemp[10]:0100
spi2RecvTemp[11]:0000

spi2RecvTemp[12]:3a05
spi2RecvTemp[13]:010a
spi2RecvTemp[14]:0100
spi2RecvTemp[15]:0000

spi2RecvTemp[16]:3a05
spi2RecvTemp[17]:010a
spi2RecvTemp[18]:0100
spi2RecvTemp[19]:0000
spi2RecvTemp[20]:9d76

spi2RecvTemp[21]:3a05
spi2RecvTemp[22]:010a
spi2RecvTemp[23]:0100
spi2RecvTemp[24]:0000
spi2RecvTemp[25]:9d76

spi2RecvTemp[26]:3a05
spi2RecvTemp[27]:010a
spi2RecvTemp[28]:0100
spi2RecvTemp[29]:0000


spi2RecvTemp[0]:3a05
spi2RecvTemp[1]:010a
spi2RecvTemp[2]:0100
spi2RecvTemp[3]:0000
spi2RecvTemp[4]:9d76

spi2RecvTemp[5]:3a05
spi2RecvTemp[6]:010a
spi2RecvTemp[7]:0100
spi2RecvTemp[8]:0000
spi2RecvTemp[9]:9d76

spi2RecvTemp[10]:3a05
spi2RecvTemp[11]:010a
spi2RecvTemp[12]:0100
spi2RecvTemp[13]:0000
spi2RecvTemp[14]:9d76

spi2RecvTemp[15]:3a05
spi2RecvTemp[16]:010a
spi2RecvTemp[17]:0100
spi2RecvTemp[18]:0000
spi2RecvTemp[19]:9d76

spi2RecvTemp[20]:3a05
spi2RecvTemp[21]:010a
spi2RecvTemp[22]:0100
spi2RecvTemp[23]:0000
spi2RecvTemp[24]:9d76

spi2RecvTemp[25]:3a05
spi2RecvTemp[26]:010a
spi2RecvTemp[27]:0100
spi2RecvTemp[28]:0000
spi2RecvTemp[29]:9d76


spi2RecvTemp[0]:3a05
spi2RecvTemp[1]:010a
spi2RecvTemp[2]:0100
spi2RecvTemp[3]:0000
spi2RecvTemp[4]:9d76

spi2RecvTemp[5]:3a05
spi2RecvTemp[6]:010a
spi2RecvTemp[7]:0100
spi2RecvTemp[8]:0000
spi2RecvTemp[9]:9d76

spi2RecvTemp[10]:3a05
spi2RecvTemp[11]:010a
spi2RecvTemp[12]:0100
spi2RecvTemp[13]:0000
spi2RecvTemp[14]:9d76

spi2RecvTemp[15]:3a05
spi2RecvTemp[16]:010a
spi2RecvTemp[17]:0100
spi2RecvTemp[18]:0000
spi2RecvTemp[19]:9d76

spi2RecvTemp[20]:3a05
spi2RecvTemp[21]:010a
spi2RecvTemp[22]:0100

spi2RecvTemp[23]:3a05
spi2RecvTemp[24]:010a
spi2RecvTemp[25]:0100
spi2RecvTemp[26]:0000
spi2RecvTemp[27]:9d76

spi2RecvTemp[28]:3a05
spi2RecvTemp[29]:010a


spi2RecvTemp[0]:3a05
spi2RecvTemp[1]:010a
spi2RecvTemp[2]:0100
spi2RecvTemp[3]:0000
spi2RecvTemp[4]:9d76
spi2RecvTemp[5]:9d76

spi2RecvTemp[6]:3a05
spi2RecvTemp[7]:010a
spi2RecvTemp[8]:0100
spi2RecvTemp[9]:0000
spi2RecvTemp[10]:9d76

spi2RecvTemp[11]:3a05
spi2RecvTemp[12]:010a
spi2RecvTemp[13]:0100
spi2RecvTemp[14]:0000
spi2RecvTemp[15]:9d76

spi2RecvTemp[16]:3a05
spi2RecvTemp[17]:010a
spi2RecvTemp[18]:0100
spi2RecvTemp[19]:0000
spi2RecvTemp[20]:9d76

spi2RecvTemp[21]:3a05
spi2RecvTemp[22]:010a
spi2RecvTemp[23]:0100
spi2RecvTemp[24]:0000
spi2RecvTemp[25]:9d76

spi2RecvTemp[26]:3a05
spi2RecvTemp[27]:010a
spi2RecvTemp[28]:0100

看前半部分,好象是有规律的,接受的前两个数据,都是0x3a05。
前两帧有错误,后边开始接受正确了。
我就猜想,可能真的是主设备发送的数据有时候出了问题,联系发送了两个帧首?
看到后半段,貌似大部分又正确了,结果中间有部分丢失后边的数据。
现在只保留了串口中断,SPI中断,定时器中断。
串口只在接受满30个数据并置了标志位后才发送数据,此时虽然有SPI中断,但并不保存数据到数组里。
SPI接受数据时可能影响的只有定时器中断了,不过已经把SPI中断的优先级设最高了。
一会试试关掉定时器。

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

any012 回答时间:2016-6-7 15:48:22
将程序简化了下,结果还是有问题。
主函数部分
  1. int main(void)
  2. {
  3.         Init();
  4.         TIM_Cmd(TIM3, ENABLE);                                                        //¿ªÆô¶¨Ê±Æ÷
  5.        
  6.         while(1)
  7.         {
  8.                 if(COMP_OK())
  9.                 {
  10.                         LVDS_EN(0);
  11.                         if(spi2RecivOk)
  12.                         {
  13.                                 spi2RecvNum = 0;
  14.                                 spi2RecivOk = 0;
  15.                                 SPI_I2S_SendData(SPI2, spi2SendBuff[0]);
  16.                         }
  17.                 }
  18.                 else
  19.                 {
  20.                         if(GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_7) == 0)
  21.                         {
  22.                                 LVDS_EN(1);
  23.                                 SPI_I2S_SendData(SPI2, spi2SendBuff[0]);
  24.                         }
  25.                 }
  26.         }
  27. }
复制代码


SPI中断部分
  1. void SPI2_IRQHandler(void)
  2. {
  3.         static u16 spi2Temp;
  4.         spi2Temp = SPI_I2S_ReceiveData(SPI2);

  5.         if(spi2RecvNum == 0)
  6.         {
  7.                 if((spi2Temp & 0xFF00) == 0x3a00)
  8.                 {
  9.                         SPI_I2S_SendData(SPI2, spi2SendBuff[1]);
  10.                         spi2RecvNum = 1;
  11.                 }
  12.                 else
  13.                         SPI_I2S_SendData(SPI2, spi2SendBuff[0]);
  14.         }
  15.         else
  16.         {
  17.                 spi2RecvBuff[spi2RecvNum] = spi2Temp;
  18.                 spi2RecvNum++;
  19.                 if(spi2RecvNum > 5)
  20.                 {
  21.                         spi2RecivOk = 1;
  22.                 }
  23.                 else
  24.                         SPI_I2S_SendData(SPI2, spi2SendBuff[spi2RecvNum]);
  25.         }

  26. SPI从模式测试V1_0.zip (2.88 MB, 下载次数: 61)
  27. }
复制代码


any012 回答时间:2016-6-7 15:52:05
spi中断.png

主循环.png

any012 回答时间:2016-6-7 16:27:11
附图为该设备连续发送两数数据的波形图。
根据图形可看出,发送第一帧是: 0x3a05,0x010a,0x010a,0x0100,0x0000,第二帧全是0x3a05。然后依次循环...
scope_0.png
scope_1.png
scope_2.png


any012 回答时间:2016-6-15 09:24:14
改成下面这样就没事了。主要是进入SPI中断后,SPI发送数据尽量靠前一点。也不知道为什么会这样。
在接收完帧首以后的中断处理里,就是else语句,需要将SPI发送语句放在紧靠else语句的位置。
这样的话,原来想只用spi2RecvNum这个变量控制接收和发送的数据位,现在不那么好实现了,于是又加了个变量spi2SendNum。

[mw_shl_code=c,true]void SPI2_IRQHandler(void)
{
        static u8 n;
        static u16 spi2Temp;
        spi2Temp = SPI_I2S_ReceiveData(SPI2);
       
        if(spi2RecvOk == 0)
        {
                if(spi2RecvNum == 0)
                {
                        if((spi2Temp & 0xff00)== 0x3a00)
                        {
                                SPI_I2S_SendData(SPI2, spi2SendBuff[1]);
                                spi2RecvBuff[0] = spi2Temp;
                                spi2RecvNum = 1;
                                spi2SendNum = 2;                               
                        }
                }
                else
                {
                        SPI_I2S_SendData(SPI2, spi2SendBuff[spi2SendNum]);
                        spi2RecvBuff[spi2RecvNum] = spi2Temp;
                        spi2RecvNum++;
                        if(spi2RecvNum > 4)
                                spi2RecvOk = 1;
                        spi2SendNum += 1;
                        spi2SendNum %= 5;
                }
        }       
}[/mw_shl_code]

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2 赞一个!

查看全部评分

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版