微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 硬件工程师文库 > 基于STM32F1系列的重要宝典RM0008参考手册

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

时间:08-19 来源:STM32单片机 点击:

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

I2C1使用PB6和PB7口,定时器TIM3使用PB0\PB1\PB4\PB5做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那个地方有黄色警

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top