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

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

3天内不再提示

深度解析STM32外设配置冲突问题

GReq_mcu168 来源:未知 作者:胡薇 2018-09-30 17:29 次阅读

近日有客户反映,他在在使用STM32F103C8T6的时候遇到如下问题:

I2C1使用PB6和PB7口,定时器TIM3使用PB0PB1PB4PB5做4路PWM。但在使用的过程中,如果只初始化定时器就没有任何问题,但是一旦初始化I2C1,那么定时器的通道2(PB5)就不能产生PWM波,而是保持高电平。

客户查阅手册得知PB5的默认复用功能是I2C1的SMBA引脚,但是它的I2C1是初始化为I2C模式的,并不是初始化为SMBAS模式,而且同样的方式在F0上测试是可用的。它本来用的是标准库开发的,然后尝试使用STM32CubeMx进行硬件配置,使用HAL库新建工程,还是存在同样的问题。

就上面的问题,查看了其有关I2C1和TIM3d的pwm初始化的部分代码,并未发现不对的地方。首先重点怀疑I2C1的配置是否有误,担心客户在配置I2C1时配置成了SMBAS模式。借助于库代码,进一步跟踪下去查看底层的寄存器配置,相关寄存器操作也没有发现问题。

这里TIM3的PWM输出的几个管脚有涉及到重映射【REMAP】,从数据手册的管脚分配上来看,如果不开启I2C1的SMBA模式,不应该存在冲突问题。

这边再次使用STM32CubeMx基于STM32F103C8进行同样配置,结果跟客户上面反馈的一样。不开启I2C1时,TIM3的所有管脚功能正常;开启I2C1后,TIM3的部分管脚PB5功能异常。感觉问题可能出在跟TIM3的remap这个地方。打开基于STM32F1系列的重要宝典---参考手册RM0008,查看核对有关TIM3的管脚复用REMAP功能介绍的地方。

现在客户执行的是TIM3的部分管脚重映射功能【partial remap】,从上面表格来看,目前的代码配置是没有问题的。毕竟目前如果不开启I2C1的话TIM3也没什么异常,所以过来查看这个地方,心里也没怎么期望从这里找出明显错误,倒是期待从附近能否找到些额外的提示或提醒。这不,表格的下方用了小一号文字明确提示:上述REMAP操作仅适用于64脚、100脚和144脚封装的芯片.现在客户用的芯片是STM32F103C8,管脚数为48,换言之,它是不支持TIM3的复用功能脚的REMAP操作的。到此,问题应该说找到原因了。

过不了几天,客户又发邮件过来继续就该问题咨询。他问,既然说48脚芯片STM32F1不支持TIM3的REMAP操作,那为什么做了REMAP操作后,如果不开启I2C1,TIM3的4个脚的PWM功能很正常;或者说即使同时开启了I2C1,PB4的功能还是正常REMAP过来了,只是PB5功能异常。希望我这边给出进一步解释。

站在用户的角度有人会发出类似疑问很正常。其实,既然手册明确规定48脚的STM32F1芯片不支持TIM3功能脚的REMAP,它自有其原因和道理。你违背手册之规定来操作,结果的正确性就不能得到保障。有时REMAP没问题,不代表任何时候进行REMAP没问题。就像讨论某个命题,局部、个别情形成立,并不能说它恒成立。打个形象的比方,A今年10岁,B今年20岁。即B比A大10岁,B今年的年龄是A的2倍。显然,两个结论站在今年都成立,到了明年,后面的2倍论就不成立了。

在ST MCU的应用过程中,还经常出现类似违背手册规定的操作以及由此导致的疑问。比方说,有人发现使用STM32芯片内部的flash时,似乎可以使用到手册规定以外的空间。用户这样使用,芯片的功能或特性是不能得到保障的,作为厂家只能保证芯片手册规定区域的品质。又比方,我们知道ST MCU绝大部分芯片都带有UID,可有些人发些即使手册明确没有UID的芯片,他们似乎发现这类芯片还是有UID甚至加以利用,询问这样是怎么回事或者说是否可靠。同样,对于类似情形作为厂家也只能保证手册规定的特性。超出手册规定以外的应用,只能用户自己负责。

好,继续回到上面的话题

我们从芯片应用的参考手册上应该说找到了明确的规定或答案。我们还可以查看下基于该芯片有无更为详尽的勘误表。后来在官方网站找到了相应的勘误手册【注:勘误手册往往基于芯片型号,即一个系列可能有多个勘误手册】,我们在勘误手册里也看到关于上面问题的详细描述,可应视为对参考手册的进一步补充。

到此,问题原因基本明了。或许还会有人问,上面提到使用STM32CubeMx进行过工程配置,配置过程并未发现异常,或者说配置过程中没有遇到上面阻碍。既然参考手册规定不允许STM32F103C8芯片的TIM3 remap操作,在开启i2c1时,通过cubeMx配置TIM3的REMAP功能时应该出现非法提示才对啊?

我使用的CUBEMX的版本是4.22.0,在开启I2C1的同时,并按照TIM3的部分REMAP配置时不能说没有给出提醒,只能说提醒得不够明确。该提醒可能容易被人忽视,然后可以一路配置下去。

STM32CubeMx配置如下图,在I2C1那个地方有黄色警示,鼠标放过去的时候是有文字提示的【不一定每个人会留意到】:

可以说CubeMx还是有不够严谨或者说考虑不周的地方。如果在开启I2C1情况下,当用户试图配置PB5作为输出时直接红色警告拒绝TIM3的remap就好了。但这样,可能又会影响到另外一类用户人群,他们根本不在乎PB5怎样,只关注PB4能用作PWM输出就好。有点众口难调的味道,参考手册在明确不支持STM32F1系列48脚的TIM3的REMAP操作的同时,结合勘误手册做了应用补充,以尽可能满足不同的应用需求。

毕竟STM32CubeMX工程浩大,肯定还有需要完善的地方,尤其类似的细节问题。不过,我们相信会越来越完善。不管怎样,所以,任何时候我们不能完全将芯片手册丢在一边。比如,我们知道ST官方出了基于各个STM32系列的固件库,库里各类示例工程极大方便了大家的学习和研发。不难想象,这些固件库工程也都比较庞大,难免会有bug,一直都处于不断完善中。在使用它们的过程中如果碰到疑惑的地方,不妨查看下相关数据手册或开发参考手册,做进一步比对确认。如果觉得手册还描述得不够清晰明确的话,可以去找找相应芯片的勘误手册,看看里面有无相关问题的进一步补充描述。

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

    关注

    114

    文章

    5146

    浏览量

    213410
  • STM32
    +关注

    关注

    2266

    文章

    10872

    浏览量

    354828

原文标题:浅谈一个STM32外设配置冲突问题

文章出处:【微信号:mcu168,微信公众号:硬件攻城狮】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    STM32为什么要先开启外设时钟?

    相信很多朋友都曾遇到过这种坑,我最初学习STM32的时候同样也遇到过。下面,我就来说说为什么我们要先开启STM32外设模块时钟,再对其外设模块初始化
    的头像 发表于 10-20 14:10 4435次阅读
    <b class='flag-5'>STM32</b>为什么要先开启<b class='flag-5'>外设</b>时钟?

    STM32基于标准外设库的外部中断配置

    本文介绍了STM32基于标准外设库的外部中断配置,以及基于参考手册如何更加寄存器配置外部中断
    的头像 发表于 11-02 14:13 1744次阅读
    <b class='flag-5'>STM32</b>基于标准<b class='flag-5'>外设</b>库的外部中断<b class='flag-5'>配置</b>

    使用STM32F429的DMA多个外设都使用到同样的DMA_STREAM的时候,就会发生冲突怎么解决?

    最近在使用STM32F429的DMA时候,发现一个问题,当多个外设都使用到同样的DMA_STREAM的时候,就会发生冲突(后面配置的DMA可用,前面
    发表于 04-24 07:13

    冲突深度睡眠信息

    意味着后者是正确的,因为好像GPIO绑在我的加速度计上不再让我从深度睡眠中醒来。我只有深睡眠这个问题,因为CysYSPMLeSEP()在没有问题的情况下工作,我看到我的AccEL在1600赫兹中断。我是否误解了其中的一个应用笔记,因为它们似乎有冲突的信息?非常感谢您的帮助
    发表于 10-08 10:32

    stm32外设配置步骤怎么记

    stm32外设配置步骤怎么记,pass:其他组合设备也可依照同样的思路搭建pass:本实验基于stm32f107+CubeMx+Keil 实现本文只对HID和CDC组合设备生成做讲解,
    发表于 08-05 08:03

    如何使用STM32CubeMX配置STM32L431RCT6的USART外设

    本篇详细的记录了如何使用STM32CubeMX配置STM32L431RCT6的 USART 外设,接收 GPS 模块的数据并解析。1. 准备
    发表于 02-08 06:41

    S32DS_config管脚配置工具与外设工具冲突

    1.管脚配置工具与外设工具冲突?那就是红色标签1和红色标签2,一定要二选一吗?红色标签 4 部分与标签 2 相关,红色标签 3 与标签 2 相关,对吗?以及为什么标签 4 部分中的 board
    发表于 03-28 08:39

    C语言深度解析

    C语言深度解析,本资料来源于网络,对C语言的学习有很大的帮助,有着较为深刻的解析,可能会对读者有一定的帮助。
    发表于 09-28 07:00

    STM32的优越外设介绍

    STM32的优越外设介绍,官方文章,需要的看看
    发表于 11-02 10:32 33次下载

    STM32 管脚作为不同外设的 输入/出 端时的模式配置

    OR IN_FLOTING ,而配置计时器捕获通道时呢?下面我为你整理,STM32 管脚作为不同外设的输入/出 端时的模式配置
    发表于 05-09 14:36 11次下载

    最全STM32外设资料汇总

    最全STM32外设资料汇总。STM32外设指的是单片机外围模块,常见的STM32外设有:IO、T
    发表于 12-08 14:49 2.9w次阅读

    STM32标准外设库的文件结构解析

    STM32标准外设库之前的版本也称固件函数库或简称固件库,是一个固件函数包,它由程序、数据结构和宏组成,包括了微控制器所有外设的性能特征。
    发表于 10-17 15:55 7594次阅读
    <b class='flag-5'>STM32</b>标准<b class='flag-5'>外设</b>库的文件结构<b class='flag-5'>解析</b>

    STM32L4系列二、STM32CubeMX 图形配置工具基本操作过程

    减轻开发工作,时间和费用。STM32CubeMX几乎覆盖了 STM32 全系列芯片。具有如下特性:1)直观的选择 MCU 型号,可指定系列、封装、外设数量等条件;2)微控制器图形化配置
    发表于 12-01 14:06 7次下载
    <b class='flag-5'>STM32</b>L4系列二、<b class='flag-5'>STM32</b>CubeMX 图形<b class='flag-5'>配置</b>工具基本操作过程

    STM32f429外部中断配置解析基于HAL库

    STM32f429外部中断配置解析基于HAL库
    发表于 12-16 16:58 9次下载
    <b class='flag-5'>STM32</b>f429外部中断<b class='flag-5'>配置</b><b class='flag-5'>解析</b>基于HAL库

    IP地址配置冲突导致路由振荡怎么办?

    IP地址配置冲突导致路由振荡怎么办? 标题:解决IP地址配置冲突导致的路由振荡 引言: 在网络中,IP地址配置
    的头像 发表于 11-09 09:24 851次阅读