0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

STM32_ SPI主从通信

黄工的嵌入式技术圈 来源:黄工的嵌入式技术圈 2020-04-08 10:54 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

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

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

每天提供下载的“软件工程”都是在硬件板子上进行多次测试、并保证没问题才上传至360云盘。

今天的软件工程下载地址(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,通过串口打印接收到的数据。

关于“STM32F103SPI通信从机部分”我把重要的几点在下面分别讲述,若不明白,请关注微信公众号“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
    +关注

    关注

    2313

    文章

    11195

    浏览量

    374660
  • SPI
    SPI
    +关注

    关注

    17

    文章

    1900

    浏览量

    102133
  • 主从通信
    +关注

    关注

    0

    文章

    7

    浏览量

    3648
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    SPI通信协议深度解析

    SPI(Serial Peripheral Interface)是一种全双工同步串行通其核心信号引脚包括:
    的头像 发表于 04-22 09:27 385次阅读
    <b class='flag-5'>SPI</b><b class='flag-5'>通信</b>协议深度解析

    使用SPI给两块板子相互通信主从设备该如何选择呢?

    使用SPI给两块板子相互通信主从设备该如何选择呢?
    发表于 01-20 07:11

    SPI 支持单线半双工通信模式

    SPI 支持单线半双工通信模式,在该模式下,主机和从机通过一条双向数据线进行数据通信,主机使用 MOSI,从机使用 MISO,未使用的其他 SPI 信号线可供其它功能使用。设置控制寄存
    发表于 12-12 07:52

    通信协议IIC与SPI最全对比分析

    现今,在低端数字通信应用领域,我们随处可见IIC(Inter-Integrated Circuit)和 SPI(Serial Peripheral Interface)的身影。原因是这两种通信
    发表于 12-10 06:04

    SPI的多机通信

    SPI支持多机通信模式。在该模式下,主机的从机选择 CS 引脚应配置为输入,与其他主机的总线申请信号相连,用于检测 SPI 总线是否发生冲突。如果某一主机的从机选择 CS 引脚被拉为低电平,说明有
    发表于 12-08 06:47

    SPI、I2C、I2S、UART:通信协议解释

            在嵌入式开发中,最常用的几种通信接口无非就是SPI、I2C、I2S、UART。名字看起来差不多,但应用场景和特性却大不相同。为什么都叫串行通信,结构却不一样?为什么有的能传音频,有的
    的头像 发表于 11-18 10:53 719次阅读

    RVMCU课堂「15」: 手把手教你玩转RVSTAR—SPI总线通信

    SPI原理简介 ​SPI是一种主从式的总线通信,通常是“一主一从”或“一主多从”,但如果能保证系统中任意时刻只有一个处于激活状态的主设备,也可以通过时分实现一条总线
    发表于 10-31 07:00

    AEK-COM-ISOSPI1技术解析:SPI隔离通信在汽车电子中的应用

    加密狗可以通过SPI与SPC5、Stellar和STM32微控制器系列连接。AEK-COM-ISOSPI1用于电池管理系统(BMS)和通过SPI协议的隔离通信
    的头像 发表于 10-24 15:48 991次阅读
    AEK-COM-ISOSPI1技术解析:<b class='flag-5'>SPI</b>隔离<b class='flag-5'>通信</b>在汽车电子中的应用

    基于STEVAL-BMS1T的隔离式SPI通信技术解析与应用指南

    STMicroelectronics STEVAL-BMS1T SPI转隔离式SPI加密狗支持将SPI信号转换为隔离式SPI信号,从而将必要的电线数量从四根减至两根。ISOSPI协议提
    的头像 发表于 10-16 14:01 812次阅读
    基于STEVAL-BMS1T的隔离式<b class='flag-5'>SPI</b><b class='flag-5'>通信</b>技术解析与应用指南

    spi硬件主从机,从机接收失败的原因?怎么解决?

    #include \"master_slave.h\" #define MASTER_BUS_NAME\"spi2\" #define
    发表于 10-10 08:10

    数字电压表设计教程之SPI协议详解

    SPI(Serial Peripheral Interface)是串行外设接口的缩写,SPI是一种高速、主从模式、全双工、同步的串行通信总线,由摩托罗拉公司(Motorola)于 20
    的头像 发表于 09-06 10:08 4618次阅读
    数字电压表设计教程之<b class='flag-5'>SPI</b>协议详解

    SPI通信笔记:基础+动图+时序图+总结,一文吃透!

    SPI现在已经成为MCU和外围设备之间最常用的通信方式了。它是一种同步、全双工、主从式的通信接口。工作原理其实很直接:主机产生时钟信号,从机跟着这个时钟同步收发数据。允许双向传输,可以
    的头像 发表于 07-29 14:15 8304次阅读
    <b class='flag-5'>SPI</b><b class='flag-5'>通信</b>笔记:基础+动图+时序图+总结,一文吃透!

    无线通信的隐形冠军:泽耀科技SPI射频模块硬核解析

    硬核设计匠心通信WIRELESSCOMMUNICATION在物联网设备蓬勃发展的今天,无线通信模块已成为各类智能硬件的“神经末梢”。而其中,基于SPI接口的射频模块因其灵活的控制方式和高效的传输性能
    的头像 发表于 06-24 11:05 1795次阅读
    无线<b class='flag-5'>通信</b>的隐形冠军:泽耀科技<b class='flag-5'>SPI</b>射频模块硬核解析

    适用TI ADS1299器件的ADS129x设备SPI通信问题调试步骤教程

    适用TI ADS1299器件的ADS129x设备SPI通信问题调试步骤教程
    的头像 发表于 06-18 16:19 2624次阅读
    适用TI ADS1299器件的ADS129x设备<b class='flag-5'>SPI</b><b class='flag-5'>通信</b>问题调试步骤教程

    第十七章 SPI

    本篇文章介绍了W55MH32的SPI接口,可工作于SPI或I2S模式,支持半 / 全双工、主从操作,具可编程时钟极性/相位等特征。阐述了主从模式配置、DMA
    的头像 发表于 05-28 17:29 1371次阅读
    第十七章 <b class='flag-5'>SPI</b>