STM32_SPI主从通信

发布者:科技律动最新更新时间:2021-01-13 来源: eefocus关键字:主从通信 手机看文章 扫描二维码
随时随地手机看文章

今天讲解“STM32F103 SPI主从通信”,原本计划将这部分内容定在后面(第二阶段)来讲解,满足一位网友的问题“关于两块MCU的SPI通讯”,所以今天特地提前讲解了。


由于昨天讲解的是“SPI读写Flash”,MCU是作为SPI通信中的主机,今天主要讲解SPI通信的从机,我将我测试的主机和从机的代码分别打包供大家下载测试。


今天提供并讲解的软件工程,基于昨天的软件工程“SPI读写Flash”修改而来。若有疑问,请关注微信公众号“EmbeddDeveloper”获取更多信息。

 

今天的软件工程下载地址(360云盘 - 密码见微信):

主机:https://yunpan.cn/cPIJguDkjntYI  访问密码 7bb6

从机:https://yunpan.cn/cPIJfZxr7D5Sk  访问密码 fd5a

 

STM32F10x的资料可以在我360云盘下载:

https://yunpan.cn/crBUdUGdYKam2   访问密码 ca90

 

测试原理及现象:主机间隔500ms发送10个字符(0-9),从机开启SPI中断接收数据,接收满10字节数据,置标志位gSPI_FlagOver有效,并变化LED,通过串口打印接收到的数据。

 

关于“STM32F103 SPI通信从机部分” 我把重要的几点在下面分别讲述,若不明白,请关注微信公众号“EmbeddDeveloper”查阅或留言。

 

一、RCC时钟配置

 

该函数位于在bsp.c文件下面;

使能RCC时钟:RCC_APB2Periph_SPI1

 

二、引脚配置

 

该函数位于在spi.c文件下面;

这里是对SPI所使用引脚进行配置。

注意:

SPI作为从机,MOSI作为从机接收而不是MISO,“今天的重点”我还会强调这点。

 

三、SPI配置

 

该函数位于在spi.c文件下面;

对SPI进行配置。

配置的每一条语句都有注释,请看源代码.

强调一点:SPI_CPOL_Low时钟空闲为低,这个引脚容易受干扰导致通信故障。

 

四、SPI中断控制器配置

 

该函数位于在bsp.c文件下面;

因为开启了中断接收数据,这里必须配置中断控制器

 

五、SPI中断处理

 

该函数位于在stm32f10x_it.c文件下面;

文章开始就说明了:接收满10字节数据,置标志位gSPI_FlagOver有效。该函数就是这个意思。

 

六、主函数应用

 

该函数位于在main.c文件下面;

这就是文章开头“测试原理及现象”的描述,就不多说了。

 

六、今天的重点提示

A.主从连接方式:

这里对于开始学习的朋友来说,有点不理解(因为基本上都知道串口的通信,主机Tx对应从机Rx),还以为“主机的MOSI”连接的是“从机的MISO”,其实这里是和串口的区别之一(当然还有其他,这里不讲解)。具体请看参考手册。

 

 

B.常见问题

之前有写过关于SPI主从通信的实例。但是,我今天专门找了两套板子来测试,刚开始,通信始终有问题(从机不停地在接收0x00数据),结果发现两板子之间没有共地,找了根线接上,数据没有不停地接收了。


但新的问题又来了,开始接收的数据正确,一旦出错了一位,后面接收到的数据都不对了。我是不停的查看代码,开始始终怀疑代码有问题,但把代码该了无数次(不知道好多次)之后,手册看了几遍,上网也查了很久,还是一样的现象,结果,我用示波器测试了一下通信的时钟(SCK),频率有几M, 波形间隔大概只有100ns,我就怀疑问题出在通信的线上,线太长了(估计有四五十厘米),果不然,使用短点的通信线,问题就好了。


说实话,一个不起眼的问题,可能会耗掉你无数的时间,这里我将我走过的弯路告诉大家,希望不要走这条弯路,今后的分享中我也会将一些容易出错的地方拿到这里讲解。


关键字:主从通信 引用地址:STM32_SPI主从通信

上一篇:STM32F10x_SPI(硬件接口 + 软件模拟)读写Flash(25Q16)
下一篇:STM32F10x_ADC三通道逐次转换(单次、单通道软件触发)

推荐阅读最新更新时间:2024-11-04 01:45

STM32F10x_硬件I2C主从通信(轮询发送,中断接收)
Ⅰ、写在前面 关注我分享文章的朋友应该知道我在前面讲述过(软件、硬件)I2C主机控制从机EEPROM的例子。在I2C通信主机控制程序是比较常见的一种,可以说在实际项目中,很多应用都会使用到I2C通信。但在实际项目中作为I2C从机的应用相对要少的多,本文主要讲述关于【STM32F10x_硬件I2C主从通信】中STM32作为从机的例子。 在学习本问内容之前,如果对I2C协议还不太了解的朋友请先去了解一下I2C协议,或看我之前关于I2C通信的文章(我微信公众号和博客都有)。 关于STM32硬件I2C作为从机的文章网上很少(我在写本文之前也在百度、谷歌等网站上搜索了解过),我猜测大概的原因主要是两点:1.使用该功能的人比较少; 2
[单片机]
STM32F10x_硬件I2C<font color='red'>主从</font><font color='red'>通信</font>(轮询发送,中断接收)
简述MCS-51系列单片机主从结构多机通信原理
简述MCS-51系列单片机主从结构多机通信原理,设有一台主机与三台从机通信,其中一台从机通信地址号为01H,请叙述主机呼叫从机并向其传送一个字节数据的过程。(请给出原理图) 答: 原理图如上图所示,假设主机呼叫01H从机,首先呼叫:主机发送地址帧0000 00011(TB8)此时各从机的SM2位置1,且收到的RB8=1,故激活RI。各从机将接收到的地址与地机地址比较,结果1#机被选中,则其SM2清零;0#、2#机不变。接着传数;主机发送数据帧,×××× ×××× 0 ,此时1#机SM2=0, RB8=0 则激活RI,而0#,2#机SM2=1,RB8=0则不激活RI,然后数据进入1#机的缓冲区
[单片机]
简述MCS-51系列单片机<font color='red'>主从</font>结构多机<font color='red'>通信</font>原理
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved