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

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

3天内不再提示

提高SPI时钟时通信异常的案例分享

茶话MCU 来源:ST MCU 信息交流 2020-07-13 11:41 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

有人采用STM32H743ZI芯片的SPI外设跟ADC器件通信,发现一旦SPI的SCK时钟超过25MHz时,比如50Mhz,就会发生读取数据失败,并提示Busy忙信息或ERR错误信息。反正只要串行时钟不超过25Mhz,收发都很正常。

但是STM32H743芯片手册上明白地说了SPI时钟最高可达150MHz,这会是什么原因呢?

根据他所提到的异常现象初步判断,不论他的硬件方面还是软件配置方面都应该没有很大的问题,不然根本没法通信。像这种情况有可能是下面几种原因之一或组合原因【当然不仅限于这些】:

第一种情况就是通信速率明显提高时,由于通信速率加快,而接收处理的相关代码本身所用时间相对固定,这样可能导致不能及时读走数据而发生溢出,尤其是基于查询方式或中断方式接收处理时。这时我们可以考虑对接收代码做进一步的精简优化,压缩接收处理时间,或者改用DMA方式进行数据的收发。

第二种情况就是当通信速率明显提高时,跟外设复用的GPIO输出速率档位的配置没有跟上来。以本案例来说,当我们将SPI的时钟上到50MHz甚至更高时,若相应的GPIO的输出速率配置还维持在相对低速水平,与实际输出需求不相匹配时往往就会出现异常。

关于这个配置,如果使用STM32CubeMx配置的话就非常简单,通过菜单选择即可完成。如下图所示:

第三种情况就是当通信速率明显提高时,即使相应的GPIO输出能力配置也匹配了,但有些情况下还是有可能出通信异常的问题。我们知道,当GPIO输出速率越来越高的时候,GPIO模块带来的噪声也越大,作为通信口时其信号质量也会随着通信速率的提升而变差,当然,此时芯片所需的功耗也随之增大。对于很多STM32系列芯片,当GPIO输出速率达到一定程度时,建议开启片内GPIO补偿单元。【下面截图是两个STM32系列关于GPIO补偿单元的介绍文字】

该GPIO补偿单元的作用就是通过控制IO口的输出斜率,降低GPIO的噪声对整个电源的影响并尽力改善信号质量,所以当我们基于STM32芯片实现较高速率的通信时,比方50Mhz甚至上百兆的SPI或USB通信时,如果芯片有GPIO补偿单元的话,建议将其开启。顺便提醒下,使用GPIO补偿单元的话,往往对电源电压有相应要求,具体依手册而定。

下面是分别基于STM32F4和STM32F7系列的HAL库相关开启GPIO补偿单元的函数。

至于本案例异常的真正原因是什么呢?后来经确认属于上面提到的第二种情况,GPIO输出速率挡位选择与实际输出需求不匹配,稍加调整配置就好。

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

    关注

    2305

    文章

    11120

    浏览量

    371138
  • SPI
    SPI
    +关注

    关注

    17

    文章

    1866

    浏览量

    99802
  • GPIO
    +关注

    关注

    16

    文章

    1313

    浏览量

    55724

原文标题:提高SPI时钟时通信异常的案例分享

文章出处:【微信号:stmcu832,微信公众号:茶话MCU】欢迎添加关注!文章转载请注明出处。

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

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

    根。ISOSPI协议具有差分通信的特点,有助于提高远程通信的抗噪性和鲁棒性。AEK-COM-ISOSPI1加密狗承载有L9963T收发器,可配置为SPI总线的从机或主机,并支持8位至6
    的头像 发表于 10-24 15:48 387次阅读
    AEK-COM-ISOSPI1技术解析:<b class='flag-5'>SPI</b>隔离<b class='flag-5'>通信</b>在汽车电子中的应用

    电能质量在线监测装置时钟模块自动同步异常的常见类型有哪些?

    电能质量在线监测装置时钟模块自动同步异常,核心可按 同步方式(PTP/GPS/NTP)分类 ,每种方式的异常类型均集中在 “链路、配置、硬件、环境” 四大维度,且各有典型表现。以下是具体分类及特征
    的头像 发表于 10-22 14:15 198次阅读

    蜂鸟SOC的SPI外设:如何修改SPI时钟相位和时钟极性

    如标题所示,我们分享关于蜂鸟SOC的SPI外设中,SPI时钟相位和时钟极性 SPI时钟相位和
    发表于 10-20 09:36

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

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

    使用BLE(CYW20829)作为SPI slave和MCU(TC387)作为SPI master,调试SPI通信时遇到的问题求解

    使用函数cyhal_spi_slave_write向master发送数据时,没有等待master拉低片选取并生成时钟信号,导致接收数据异常。 尝试:使用Cy_GPIO_读取CS引脚,直到该引脚被拉低
    发表于 07-01 08:28

    TI的ADS129x器件SPI 时钟极性CPOL和时钟相位 CPHA的正确设置模式

    TI的ADS129x器件SPI 时钟极性CPOL和时钟相位 CPHA的正确设置模式
    的头像 发表于 06-18 16:36 939次阅读
    TI的ADS129x器件<b class='flag-5'>SPI</b> <b class='flag-5'>时钟</b>极性CPOL和<b class='flag-5'>时钟</b>相位 CPHA的正确设置模式

    第十七章 SPI

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

    串行通信接口SPI与QSPI的区别

    在嵌入式系统的世界里,选择正确的通信技术可以对项目的性能和可扩展性产生重大影响。让我们比较两个流行的串行通信接口:SPI(串行外设接口)和QSPI(四路SPI)。
    的头像 发表于 04-09 15:24 2538次阅读
    串行<b class='flag-5'>通信</b>接口<b class='flag-5'>SPI</b>与QSPI的区别

    【CW32模块使用】0.96寸SPI单色屏

    硬件SPI与软件SPI相比,硬件SPI是靠硬件上面的SPI控制器,所有的时钟边缘采样,时钟发生,
    的头像 发表于 03-29 17:29 2905次阅读
    【CW32模块使用】0.96寸<b class='flag-5'>SPI</b>单色屏

    使用SPI进行通信,STM32F4做从机,通信时数据异常怎么解决?

    使用SPI进行通信,STM32F4做从机,通信时数据异常SPI2中SR寄存器会出现0xc0,0xc1,0x80的
    发表于 03-14 12:14

    DDP4422的SPI通信异常的原因?

    您好!我们的项目使用到了DDP4422的SPI接口SSP_PORT1,DDP4422作为主与C787芯片进行通信。 DDP向C787写数据是正常的;但读数据时,读到的数据不正确。我这边尝试
    发表于 02-27 07:54

    SPI通信总线概述和Verilog实现

    SPI = Serial Peripheral Interface,是串行外围设备接口,是一种高速,全双工,同步的通信总线。
    的头像 发表于 02-07 14:28 1987次阅读
    <b class='flag-5'>SPI</b><b class='flag-5'>通信</b>总线概述和Verilog实现

    iic协议与spi协议的区别

    I2C协议与SPI协议的区别 1. 通信方式 I2C :是一种多主机、多从机的通信协议,使用两条线(数据线SDA和时钟线SCL)进行通信
    的头像 发表于 02-05 11:28 4649次阅读

    通信控制器驱动异常原因,怎么解决

    在现代计算机系统中,通信控制器驱动扮演着至关重要的角色,它们负责在计算机操作系统与各种通信设备之间建立和维护通信链路。然而,有时通信控制器驱动可能会出现
    的头像 发表于 01-29 14:33 2429次阅读

    KeyStone架构串行外设接口(SPI)手册

    SPI(Serial Peripheral Interface)是一种高速、全双工、同步的串行通信协议,它允许微控制器与一个或多个外围设备进行通信SPI
    发表于 12-16 10:33 0次下载