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

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

3天内不再提示

基于STM32F1系列的重要宝典RM0008参考手册

STM32单片机 来源:互联网 作者:佚名 2017-09-19 09:27 次阅读

近日有客户反映,他在在使用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,一直都处于不断完善中。在使用它们的过程中如果碰到疑惑的地方,不妨查看下相关数据手册或开发参考手册,做进一步比对确认。如果觉得手册还描述得不够清晰明确的话,可以去找找相应芯片的勘误手册,看看里面有无相关问题的进一步补充描述。

唠叨一堆,抛砖引玉。

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

    关注

    32

    文章

    1094

    浏览量

    128146
  • STM32
    +关注

    关注

    2239

    文章

    10669

    浏览量

    348695
  • 定时器
    +关注

    关注

    23

    文章

    3146

    浏览量

    112027

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

文章出处:【微信号:STM32_STM8_MCU,微信公众号:STM32单片机】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    STM32中文参考手册_V10

    手册STM32微控制器产品的技术参考手册参照2009年12月 RM0008 Reference Manual 英文第10版, 技术参考手册
    发表于 09-15 19:58

    介绍STM32F1串口的初始化及串口中断

    包括对IO、USART和中断的初始化。根据STM32F1x手册RM0008的P166,USART在全双工模式下,发送口TX要配置成复用推挽输出,接收口RX要配置成浮空输入或上拉输入。此外,本文不使用USART的硬件流控制,所谓硬
    发表于 08-16 06:33

    STM32F105xx与STM32F107xx器件数据表和参考手册摘要

    本文档适用于STM32F105xx、STM32F107xx器件的部件号以及本文件所述的器件变体页,提供了有关器件数据表和参考手册 RM0008 的器件勘误表的摘要和描述。
    发表于 11-29 08:13

    STM32F101x4/6、STM32F102x4/6、STM32F103x4/6器件勘误表

    本文档适用于STM32F101x4/6、STM32F102x4/6、STM32F103x4/6器件的零件编号以及本页所述的器件变体。如本页面所述,它给出了关于器件数据手册
    发表于 12-01 06:51

    如何获得STM32L1闪存/eeprom编程手册

    充分受益于本应用笔记中的信息,用户应熟悉 STM32 微控制器系列。● STM32F1 系列参考手册R
    发表于 02-07 07:16

    STM32F1寄存器参考手册

    STM32F1寄存器参考手册中文版
    发表于 10-07 07:50

    stm32f1中文参考手册

    stm32f1中文参考手册,感兴趣的小伙伴们可以看看。
    发表于 07-26 14:58 52次下载

    STM32中文参考手册_V10

    手册STM32微控制器产品的技术参考手册参照2009年12月 RM0008 Reference Manual 英文第10版,技术参考手册
    发表于 09-18 14:55 0次下载

    STM32F10xxx参考手册09h

    。本手册STM32微控制器产品的技术参考手册 参照2009年12月 RM0008 Reference Manual 英文第10版 ,技术参考手册
    发表于 12-19 14:13 4次下载

    STM32F1系列芯片中文参考手册

    STM32F1系列芯片中文参考手册(嵌入式开发培训教程)-STM32F1系列芯片的中文用户手册
    发表于 07-30 09:32 201次下载
    <b class='flag-5'>STM32F1</b><b class='flag-5'>系列</b>芯片中文<b class='flag-5'>参考手册</b>

    STM32中文参考手册

    手册STM32微控制器产品的技术参考手册,参照2009年12月 RM0008 Reference Manual 英文第10版,技术参考手册
    发表于 02-11 15:47 27次下载

    STM32F10X微控制器产品技术参考手册

    手册STM32F10X微控制器产品的技术参考手册,参照2009年12月 RM0008 Reference Manual 英文第10版,技术参考手
    发表于 02-28 10:18 13次下载

    STM32F1系列单片机中文手册

    手册STM32微控制器产品的技术参考手册 参照2009年12月 RM0008 Reference Manual 英文第10版 ,技术参考手册
    发表于 04-13 15:20 27次下载

    RM0440_STM32G4系列单片机参考手册

    RM0440_STM32G4系列单片机参考手册
    发表于 11-23 08:21 10次下载
    <b class='flag-5'>RM0440_STM32</b>G4<b class='flag-5'>系列</b>单片机<b class='flag-5'>参考手册</b>

    RM0008_STM32F101xx,STM32F102xx,STM32F103xx,STM32F105xx和STM32F107xx单片机参考手册

    RM0008_STM32F101xx,STM32F102xx,STM32F103xx,STM32F105xx和STM32F107xx单片机
    发表于 11-23 08:24 14次下载
    <b class='flag-5'>RM0008_STM32</b>F101xx,<b class='flag-5'>STM32</b>F102xx,<b class='flag-5'>STM32</b>F103xx,<b class='flag-5'>STM32</b>F105xx和<b class='flag-5'>STM32</b>F107xx单片机<b class='flag-5'>参考手册</b>