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

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

3天内不再提示

两块STM32之间SPI通讯进行的注意事项

汽车玩家 来源:嵌入式大杂烩 作者:嵌入式大杂烩 2020-04-04 17:24 次阅读

之前分享过的SPI通讯实例:STM32硬件SPI主从通信实例,是基于一块STM32的两个SPI通讯。如果要进行两块STM32之间的SPI通讯,需要注意一些什么呢?

两块STM32之间的SPI通讯平时用的比较少,之前我也没有用过,网上也查了很多资料,没有找到现成的,能直接用的例子(做软件的不就是copy吗=v=)。

所以只能自己来实现了,本以为与在同一片STM32上做SPI主、从机通信一样,以为挺简单的,但是实际做起来还是遇到了不少问题,比如出现数据移位、多出了一些数据等问题。下面简单分享一下实现过程:

一、整体框图及说明

这里使用STM32F429IGT6作为主机,STM32F103ZET6作为从机,都配置为全双工。本例要实现的功能就是主、从机之间的数据互传。

主机往从机发送的数据为:

两块STM32之间SPI通讯进行的注意事项

从机往主机发送的数据为:

两块STM32之间SPI通讯进行的注意事项

二、关键代码

主机关键代码:

两块STM32之间SPI通讯进行的注意事项

从机关键代码:

两块STM32之间SPI通讯进行的注意事项

可见,主机与从机的代码大多都一样。只是从机多了一步启动传输的操作,这一步很关键,少了这一步传输就不正常。这是为了制造主机发送的同时也要接收到数据的条件。这一点参考手册里也有相关说明:

两块STM32之间SPI通讯进行的注意事项

两块STM32之间SPI通讯进行的注意事项

此处,要营造这样的条件,必须先启动从机,然后再启动主机。只有保证主机发送的同时有接收到数据,才能保证其时序的正常,否则可能会产生数据错位,或者会产生多余数据等情况。

三、调试

我们平时在做实际的开发时,一般很难做到把所有代码写完,跑一遍就能成功,都是需要进行各个子模块的调试,一步一步来,确保各个子模块都没有问题之后,整体跑起来自然就比较稳定。

一些经验丰富的软件工程师常会教导一些年轻的软件工程师:在接到一个开发任务之前,先不要急着码代码,首先需要明确你这项任务的需求是什么,把任务分解成各个模块,然后在电脑上或纸上画出整体框图,确保框图的正确性之后,再根据框图来编写代码、调试。

此处,我们要调试SPI主从通信,自然也是这样分模块进行调试的:

确认主机是否能正确发送数据

确认从机是否能正确发送数据(返回数据给从机)

确认从机是否接收到主机发过来的数据

确认主机是否接收到从机发过来的数据

若这几个点明确了,都没问题之后。就可以明确我们的SPI主、从机的基本通讯没有问题了,之后就可以进行我们的协议方面处理了(本例中没有这一部分)。下面分别看一些这几个点:

1、确认主机是否能正确发送数据

方法:使用逻辑分析仪捕捉主机的MOSI、SCK这两条信号线,查看其波形。实际测得地结果如下:

两块STM32之间SPI通讯进行的注意事项

其中,白色为SCK信号线波形,橙色为MOSI信号线波形。显然,从MOSI波形可以看出其与我们主机发送的数据一致,自然就可以确认主机发送数据没问题了。

此处,细心的朋友可能会发现时钟线波形的两个数据交互处的高电平总是宽一些,这里我们的SPI传输数据的位数设置为8bit,则每一个数据对应的第8位对应的时钟信号的高电平总会长一些;若我们的SPI传输数据的位数配置为16位,则第16位对应的时钟信号的高电平总会长一些。

出现这个现象其实与我们的代码是有一定关系的。实际测试中发现是因为我们用while循环来做逻辑处理的问题,想办法把while等待替换为if判断,就可以改善这个问题。但是考虑到这并不会影响我们的数据,并且另一方面还有助于我们分析波形,所以使用while。

2、确认从机是否能正确发送数据(返回数据给从机)

使用逻辑分析仪来捕捉MISO的波形,其波形如下(此处只捕捉了数据波形):

两块STM32之间SPI通讯进行的注意事项

显然,我们的从机发送数据也是没问题的。

3、确认从机是否接收到主机发过来的数据

这里使用在线调试的方法检测从机的接收buf,结果如下:

两块STM32之间SPI通讯进行的注意事项

显然,从机收到的数据与主机发送的数据一致,说明从机接收也是没有问题的。由于手头里只有一个仿真器,所以也就没有同时监测主机的接收buf,监视主机的接收buf与监视从机的方法是一样的。

四、调试过程需要注意的问题

1、两块板子一定要共地。

2、两块板子的MOSI与MISO不需要交叉连接。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • STM32
    +关注

    关注

    2239

    文章

    10665

    浏览量

    348518
  • SPI
    SPI
    +关注

    关注

    17

    文章

    1610

    浏览量

    89539
收藏 人收藏

    评论

    相关推荐

    请问STM32对过滤器编号时有哪些注意事项

    STM32对过滤器编号时有哪些注意事项
    发表于 04-12 08:23

    STM32ADC中断的使用注意事项和优化建议

    使用中断是提高系统性能和精确度的关键。本文将详细介绍STM32ADC中断的使用注意事项和优化建议。 注意事项: 1. 合理选择中断触发方式:STM32ADC可以通过软件触发(软件启动转
    的头像 发表于 01-12 15:17 727次阅读

    芯片金线包封胶的使用注意事项是什么?

    芯片金线包封胶的使用注意事项是什么?金线包封胶是一种高性能、高粘度的密封胶,广泛应用于电子、电器、汽车等领域。它具有良好的防水、防潮、防震等性能,能够保护产品内部零件不受环境影响,提高产品的使用寿命
    的头像 发表于 01-05 11:29 430次阅读
    芯片金线包封胶的使用<b class='flag-5'>注意事项</b>是什么?

    DC电源模块有哪些注意事项和使用技巧?

    DC电源模块有哪些注意事项和使用技巧?
    的头像 发表于 12-25 13:59 231次阅读
    DC电源模块有哪些<b class='flag-5'>注意事项</b>和使用技巧?

    霍尔元件使用的注意事项

    其使用寿命,有一些注意事项需要牢记。本文将详细介绍霍尔元件使用的注意事项。 一、安装注意事项 1. 霍尔元件需要正确安装在电路板上,确保其与周围元件之间的间距适宜,以避免信号干扰。 2
    的头像 发表于 12-18 14:56 468次阅读

    电流互感器的使用注意事项

    当谈到电流互感器的使用时,有一些重要的注意事项需要我们牢记。在本文中,我们将探讨这些注意事项,为您提供详细和全面的信息。
    的头像 发表于 12-15 10:34 552次阅读
    电流互感器的使用<b class='flag-5'>注意事项</b>

    中8位MCU EEPROM使用注意事项

    中颖8位MCU EEPROM使用注意事项
    的头像 发表于 09-27 15:34 485次阅读
    中8位MCU EEPROM使用<b class='flag-5'>注意事项</b>

    维谛通信电源NetSure731A61-S4安全注意事项

    有限公司产品安装、操作的人员必须经严格培训,掌握系统正确的操作方法及各种安全注意事项后方可进行设备的各项操作。在进行本公司产品、设备的各项操作时,必须遵守相关行业
    的头像 发表于 09-01 16:27 741次阅读
    维谛通信电源NetSure731A61-S4安全<b class='flag-5'>注意事项</b>

    直线模组的运行注意事项

    直线模组的运行注意事项
    的头像 发表于 08-21 17:36 887次阅读
    直线模组的运行<b class='flag-5'>注意事项</b>

    安全光栅选择注意事项

    安全光栅选择注意事项
    的头像 发表于 07-14 10:24 540次阅读
    安全光栅选择<b class='flag-5'>注意事项</b>

    使用注意事项

    使用注意事项
    发表于 07-07 19:04 0次下载
    使用<b class='flag-5'>注意事项</b>

    安全光幕选型方法以及注意事项

    安全光幕选型方法以及注意事项
    的头像 发表于 07-06 13:59 457次阅读
    安全光幕选型方法以及<b class='flag-5'>注意事项</b>

    安全光幕选型方法以及注意事项

    安全光幕选型方法以及注意事项
    的头像 发表于 06-28 14:35 451次阅读
    安全光幕选型方法以及<b class='flag-5'>注意事项</b>

    SPI协议如何通过IO口模拟,有哪些注意事项

    SPI协议如何通过IO口模拟,有哪些注意事项,如何根据芯片手册配置SPI参数,具体例子如何用SPI进行液晶屏的应用???求各位前辈指点
    发表于 06-26 06:44

    RS485通讯注意事项

    RS485通讯注意事项: rs485和rs232通讯协议现在用的越来越普遍,那么在使用的过程中有什么注意事项呢,今天琳琳姐就带您了解一下 注意事项
    发表于 05-24 14:48