OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5857|回复: 8

STM32f4和F1的双机SPI通信 目前成功一半了 出现一些问题,还请大神速点

[复制链接]

8

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2015-6-23
在线时间
8 小时
发表于 2017-12-1 17:26:24 | 显示全部楼层 |阅读模式
50金钱
目前在做STM32双机通信,只不过我的是F4和F1通信,现在只是双方发送和接收单字节没有问题,但是在发送数组时出现了如图所示的问题,代码见附件。只放了主程序。
主机(F4):
#include "stm32f4xx.h"
#include "usart.h"
#include "delay.h"
#include "spi.h"
u8 we[]={0x80,0x10,0x54,0x55,0x44,0x41,0x14,0x47};
u8 i;
int main(void)
{
        uart_init(115200);
        delay_init(168);
        SPI1_Init();
  SPI1_SetSpeed(SPI_BaudRatePrescaler_64);
        u16 val;
  while(1)
        {

       
                SPI_CS=0;

                for(i=0;i<8;i++)
          {
                val=SPI1_ReadWriteByte(we);
                printf("%x\r\n",val);
                //delay_ms(100);
                        }
                SPI_CS=1;
               
//                SPI_CS=0;
//               
//          }
//                SPI_CS=1;
        }
}
从机F1:

#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "spi.h"
u16 Slave_Temp;
u8 i;
u8 we[]={0x80,0x10,0x54,0x55,0x44,0x41,0x14,0x47};
int main(void)
{               

        delay_init();                               
        uart_init(115200);         
         NVIC_Configuration();
         SPI2_Init();       
        // SPI2_SetSpeed(SPI_BaudRatePrescaler_256);
        while(1)
                {

               
                if(SPI_CS!=1)
                {
                for(i=0;i<8;i++)
                {  
                delay_ms(1);       
    Slave_Temp=SPI1_ReadWriteByte(we);
    //SPI2_WriteByte(0x25);               
          printf("%x\r\n",Slave_Temp);
               
                }
                }
       
       
}

}

出现了以下现象:

从机数据

从机数据
这是从机                           

主机数据

主机数据
这是主机


SPI通信.zip

12.26 MB, 下载次数: 361

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

8

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2015-6-23
在线时间
8 小时
 楼主| 发表于 2017-12-1 17:32:12 | 显示全部楼层
目前,我自己怀疑是时钟上的问题,因为我改变SPI的速度的话,结果就会改变
回复

使用道具 举报

8

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2015-6-23
在线时间
8 小时
 楼主| 发表于 2017-12-2 14:31:38 | 显示全部楼层
自顶  麻烦各位大神 看一看
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2017-12-3 01:14:32 | 显示全部楼层
别在接收循环里面printf
回复

使用道具 举报

8

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2015-6-23
在线时间
8 小时
 楼主| 发表于 2017-12-4 08:52:06 | 显示全部楼层
原子哥 还是不行呀 问题依旧呀 F4的SPI1时钟 和F1的SPI2时钟不一样 会不会影响呀  
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2017-12-5 01:42:10 | 显示全部楼层
空空禅师 发表于 2017-12-4 08:52
原子哥 还是不行呀 问题依旧呀 F4的SPI1时钟 和F1的SPI2时钟不一样 会不会影响呀

波特率要一样,时钟可以不一样。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

0

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
104
金钱
104
注册时间
2018-1-16
在线时间
37 小时
发表于 2018-5-2 23:07:19 | 显示全部楼层
楼主问题解决了吗,我也碰到了相似的问题,求交流
回复

使用道具 举报

1

主题

8

帖子

0

精华

新手入门

积分
8
金钱
8
注册时间
2018-8-20
在线时间
2 小时
发表于 2018-8-20 17:35:17 | 显示全部楼层
楼主解决了吗,我也碰到了相似的问题,求交流,求例程
回复

使用道具 举报

12

主题

53

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
284
金钱
284
注册时间
2013-9-24
在线时间
52 小时
发表于 2019-8-9 13:12:59 | 显示全部楼层
正点原子 发表于 2017-12-5 01:42
波特率要一样,时钟可以不一样。

SPI上的时钟只受主机的控制,我从机波特率从未改变,主机怎么变都可以。只是主机重新上电后数据就会错误,从机再重新上电就可以了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-26 08:58

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表