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
    +关注

    关注

    2313

    文章

    11195

    浏览量

    374623
  • SPI
    SPI
    +关注

    关注

    17

    文章

    1900

    浏览量

    102118
  • GPIO
    +关注

    关注

    16

    文章

    1333

    浏览量

    56447

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

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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    DS3234:高精度SPI总线实时时钟的卓越之选

    DS3234:高精度SPI总线实时时钟的卓越之选 在电子设备中,实时时钟(RTC)是确保设备准确计时的关键组件。DS3234作为一款低功耗、高精度的SPI总线实时
    的头像 发表于 03-24 16:00 208次阅读

    深入剖析DS1347:低功耗SPI实时时钟的卓越之选

    深入剖析DS1347:低功耗SPI实时时钟的卓越之选 在电子设备的设计中,实时时钟(RTC)是一个至关重要的组件,它能够为系统提供精确的时间信息。今天,我们将深入探讨Maxim Integrated
    的头像 发表于 03-24 10:00 159次阅读

    SPI的最高时钟频率是多少?

    SPI的最高时钟频率是多少?对于这个问题芯源MCU的SPI的最高时钟频率是12MHz。虽然主机模式下,SPI的SCK频率可以配置为PCLK/
    发表于 12-16 07:54

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

    )通信协议,这意味着总线中的只有一支中心设备能发起通信。当SPI主设备想读/写从设备时,它首先拉低从设备对应的SS线(SS是低电平有效),接着开始发送工作脉冲到时钟线上,在相应的脉冲时
    发表于 12-10 06:04

    SPI的多机通信

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

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

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

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

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

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

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

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

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

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

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

    请问hal库的硬件spi,怎么修改spi时钟的占空比?

    请问hal库的硬件spi,该怎么修改spi时钟的占空比呀?
    发表于 07-28 07:50

    当波特率设置为高时,SPI 时钟延长,数据丢失问题怎么解决?

    我在TRAVEO™ II (CYT4BF) MCU 上遇到了 SPI 通信问题。 设置详细信息: SPI模式:主控 时钟频率:5 MHz 时钟
    发表于 07-28 06:59

    使用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 1367次阅读
    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 1371次阅读
    第十七章 <b class='flag-5'>SPI</b>