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

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

3天内不再提示

STM32应用相关问答解析

茶话MCU 来源:茶话MCU 作者:茶话MCU 2024-01-02 09:24 次阅读

这里就STM32用户咨询到的几个问题,稍加整理分享出来供君参考。

第1问:我目前使用STM32G0B1,代码里有设计BOOT代码,想在跳转前清理各类使用过的外设寄存器。请问STM32有没有复位所有外设寄存器的函数?

答:其实,每个STM32系列都有相关寄存器和应用函数用来针对指定外设或挂在指定总线上的外设进行批量复位,即令其回归到初始复位状态。以STM32G0系列为例,在STM32HAL库里就有类似下面的各种实现函数。

d7376692-a6ed-11ee-8b88-92fbcf53809c.png

关于这个话题可以参考本公众号另外一篇文章《话说STM32外设复位》,那里有更多详细解读,此处就不再赘述。

第2问:我在使用STM32F730的时候,如果SRAM设置到0x20010000 - 0x2001FFFF之间,DMA传输流程都对,但是SPI输出的数据不对,这是怎么回事?另外,在用USB的bulk传输的时候也是,数据有时是对的,有时候错的。

如果SRAM的缓冲区设置到0x20000000-0x2000FFFF之间的时候,就一切正常。请问这是什么原因?

答:现在问题是,只要代码使用的RAM内存锁定在0x20000000-0x2000FFFF之间时功能都正常,只有使用到0x20010000之后的RAM才有异常。结合他使用的芯片STM32F730,基于ARM Cortex-M7内核的,芯片里有高速L1 Cache。同时,他的代码里还用到了DMA。这样看来,如果他的代码启用了D-Cache,用到2个主设备【CPU和DMA】,如果没有针对D-Cache的使用做合理的配置,就很可能发生数据一致性方面的问题。经用户的进一步反馈,他的代码里也的确使用了D-Cache。

进一步的问题就是,为什么这里不能使用0x20010000之后的区域呢?为探究竟,我们有必要看看STM32F730相关的参考手册。

经查证,0x20000000-0x2000FFFF区间是属于DTCM区,CPU访问它时不使用D-Cache,即CPU每次访问DTCM时都是直接访问,当然DMA是不能使用D-Cache的。这时自然不会产生数据访问的一致性问题。而0x20010000~0x2001FFFF区域是经AXI接口访问的,默认情况下,CPU访问这块区域是可以使用D-Cache的【前提是使能了D-Cache】。

d741ada0-a6ed-11ee-8b88-92fbcf53809c.png

也就是说当我们使用到0x20010000之后的RAM区域时,CPU访问这块可以启用D-Cache。如果DMA也访问这块,若不对该区域做合理存储属性配置或适当操作就可能发生数据一致性问题。此时我们可以对相应RAM区域做MPU配置,将其配置为Shareable 且NonCacheable属性。或在代码里适时地使用针对Cache的清除或无效操作。关于MPU如何配置,这里不做展开,有兴趣的可以进一步了解。本公众号里也有多篇相关文章可供参考阅读。

第3问:在使用STM32 TIMER事件作为触发输出时,那个RESET信号是怎么回事?跟定时器从模式的RESET 模式有什么关系?

d752ecbe-a6ed-11ee-8b88-92fbcf53809c.png

答:这里的RESET事件特指通过软件方式对TIMx_EGR寄存器的UG进行置1操作。该操作可以产生1个触发信号给到其它外设,比方ADC,DAC或其它TIMER。同时这个RESET操作对当前定时器会产生更新效果或复位效果,具体点说就是产生更新事件,当前计数器发生重装从新开始计数。

该RESET操作跟定时器RESET从模式有关系吗?没有任何关系,但有相同的现象或效果。即处于RESET从模式的TIMER收到触发信号时,该从定时器也会产生更新事件、计数器进行重装计数。至于给到处于RESET从模式的TIMER的触发信号,可以是源于前级TIMER的更新事件、计数器使能事件、比较事件产生的,也可以是软件RESET操作产生的。

第4问:在使用STM32 ADC多通道转换时,如果不希望一次性转换完成如何操作?

答: 看情况。如果你选择使用的多个ADC通道,平常转换顺序固定,只是不希望基于扫描模式启动后就一次性转换完毕,而是分次分批转换完成。这时我们可以考虑使用ADC的分组转换模式。可以参考本公众号文章《STM32 ADC间断转换模式应用示例》。

如果你选择使用的多个ADC通道,使用过程中转换顺序随机,只是想每次就某个通道做转换,不同时刻可能使用不同的通道。本质上讲,这其实就是单通道转换,在配置时按单通道配置。需要使用哪个通道时,就针对某个通道配置后再做启动。这点可以参考本公众号文章《ADC多通道随机选择性转换应用示例》。

第5问:在使用STM32片内的Vrefint电压是ADC的参考基准吗?它有什么用?

答:STM32片内的Vrefint电压不是ADC模块的参考基准,STM32片内ADC的参考基准可以是Vref,或VDDA【多数时候VDDA跟VDD是接在一起的】,有些系列还可以是VrefBuf电压。注意不要把Vref、Vrefint、VrefBuf搞混了!事实上经常有人弄混。【早期推出的系列STM32片内没有VrefBuf】

Vrefint电压值一般固定在1.2v左右,波动很小。各STM32芯片数据手册有给出参数范围【下图来自STM32G0系列数据手册】: d76d0b12-a6ed-11ee-8b88-92fbcf53809c.png

至于它有什么用,这要看情况。它只是个备用项、可用项。

我经常拿它来验证ADC功能是否正常,因为其电压可知且比较稳定,无须外边引线。有些场合,Vrefint作为相对稳定的AD输入,反过来监测芯片的VDD,此时ADC模块的参考电压VDDA跟VDD是接在一起。有时Vrefint或其分压可用作片内比较器的输入做其它用途。

审核编辑:汤梓红

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

    关注

    31

    文章

    5342

    浏览量

    120319
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10860

    浏览量

    211715
  • adc
    adc
    +关注

    关注

    98

    文章

    6498

    浏览量

    544576
  • STM32
    +关注

    关注

    2270

    文章

    10900

    浏览量

    355909
  • 函数
    +关注

    关注

    3

    文章

    4331

    浏览量

    62593

原文标题:STM32应用五问五答

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

收藏 人收藏

    评论

    相关推荐

    STM32硬件设计问答

    STM32硬件设计问答专营STM8/32QQ 940436962http://y-ec.taobao.com/
    发表于 07-10 09:28

    【高手问答】第5期——STM32硬件问答 

    `STM32硬件问答高手问答第5期 小编导读:本期高手问答(7月28~8月4日)我们请来了@1402609807为大家解答关于STM32硬件
    发表于 07-28 10:36

    高手问答汇往期回顾

    ——STM32问答********** 问答精华6、Elecfans论坛高手问答第6期—— PCB设计*************问答精华7、
    发表于 08-19 10:22

    【高手问答】第9期——张工带你玩转STM32问答

    张工带你玩转STM32问答高手问答第9期小编导读: 一周一期的高手问答,又在周一与大家相见了。本期(8.25~8.31)的主题是与STM32
    发表于 08-25 10:20

    3G相关问答

    3G相关问答锦 什么是3G牌照? 3G牌照是无线通信与国际互联网等多媒体通信结合的新一代移动通信系统的经营许可权。就好比各行业的营业
    发表于 01-28 11:08 407次阅读

    STM32F10x常见应用解析

    STM32F10x 常见应用解析 大全,感兴趣的可以看看。
    发表于 09-06 16:03 20次下载

    STM32的USB库深入解析

    STM32的USB库深入解析
    发表于 10-15 09:21 89次下载
    <b class='flag-5'>STM32</b>的USB库深入<b class='flag-5'>解析</b>

    分享3个和PCB设计相关的疑难问答

    作为PCB设计人,无论是在学习还是工作中,我们总会遇到各种各样的疑问。有疑问当然要解答!本文和大家分享3个和PCB设计相关的疑难问答,希望对大家的学习和工作有所帮助。
    的头像 发表于 02-10 15:46 1009次阅读

    NVIDIA 知乎精彩问答甄选 | 查看 NVIDIA Omniverse 相关精彩问答

    NVIDIA 带来知乎精彩问答甄选系列,将为您精选知乎上有关 NVIDIA 产品的精彩问答。 本期为问答甄选第十期 ——  查看 NVIDIA Omniverse 相关精彩问题 以下三
    的头像 发表于 08-01 19:55 534次阅读
    NVIDIA 知乎精彩<b class='flag-5'>问答</b>甄选 | 查看 NVIDIA Omniverse <b class='flag-5'>相关</b>精彩<b class='flag-5'>问答</b>

    NVIDIA 知乎精彩问答甄选 | 发掘 NVIDIA 医疗行业相关精彩问答

    NVIDIA 带来知乎精彩问答甄选系列,将为您精选知乎上有关 NVIDIA 产品的精彩问答。 本期为问答甄选第十一期 ——  发掘 NVIDIA 医疗行业相关精彩回答 以下三个知乎甄选
    的头像 发表于 09-06 19:15 640次阅读
    NVIDIA 知乎精彩<b class='flag-5'>问答</b>甄选 | 发掘 NVIDIA 医疗行业<b class='flag-5'>相关</b>精彩<b class='flag-5'>问答</b>

    NVIDIA 知乎精彩问答甄选 | 查看 NVIDIA Jetson 相关精彩问答

    NVIDIA 带来知乎精彩问答甄选系列,将为您精选知乎上有关 NVIDIA 产品的精彩问答。 本期为问答甄选第十二期 ——  查看 NVIDIA Jetson 相关精彩问题 以下两个知
    的头像 发表于 09-14 17:40 580次阅读

    NVIDIA 知乎精彩问答甄选 | 了解更多关于 NVIDIA BlueField DPU 相关精彩问答

    NVIDIA 带来知乎精彩问答甄选系列,将为您精选知乎上有关 NVIDIA 产品的精彩问答。 本期为问答甄选第十三期 ——  分享 NVIDIA BlueField DPU 相关精彩
    的头像 发表于 09-20 19:10 443次阅读

    NVIDIA 知乎精彩问答甄选 | 分享 NVIDIA 助力医学研究的相关精彩问答

    NVIDIA 带来知乎精彩问答甄选系列,将为您精选知乎上有关 NVIDIA 产品的精彩问答。 本期为问答甄选第十七期 ——  分享 NVIDIA 助力医学研究的相关精彩
    的头像 发表于 11-24 19:25 562次阅读
    NVIDIA 知乎精彩<b class='flag-5'>问答</b>甄选 | 分享 NVIDIA 助力医学研究的<b class='flag-5'>相关</b>精彩<b class='flag-5'>问答</b>

    NVIDIA 知乎精彩问答甄选 | 查看关于 NVIDIA Omniverse 的相关精彩问答

    NVIDIA 带来知乎精彩问答甄选系列,将为您精选知乎上有关 NVIDIA 产品的精彩问答。 本期为问答甄选第十八期 ——  查看关于 NVIDIA Omniverse 的相关精彩
    的头像 发表于 12-01 18:40 473次阅读
    NVIDIA 知乎精彩<b class='flag-5'>问答</b>甄选 | 查看关于 NVIDIA Omniverse 的<b class='flag-5'>相关</b>精彩<b class='flag-5'>问答</b>

    NVIDIA 知乎精彩问答甄选 | 探索 AI 如何推动工作流升级相关精彩问答

    NVIDIA 带来知乎精彩问答甄选系列,将为您精选知乎上有关 NVIDIA 产品的精彩问答。 本期为问答甄选第十九期 —— 探索 AI 如何推动工作流升级相关精彩
    的头像 发表于 12-14 16:10 395次阅读
    NVIDIA 知乎精彩<b class='flag-5'>问答</b>甄选 | 探索 AI 如何推动工作流升级<b class='flag-5'>相关</b>精彩<b class='flag-5'>问答</b>