关于stm32f10xRB系列的PB5和PB12外设冲突问题
上周在公司做了一个项目,调试一个mcu,本以为很简单的调试一下裸机驱动,但是调试过程中遇到了一些问题让我觉得比较有意思,记录一下。
1、关于stm32的SMBUS功能的介绍
由于笔者也没有玩过smbus,只是在stm32的参考手册上看到过关于它的介绍,就直接放出stm32参考手册上的官方说明,更详细的介绍大家可以直接去看stm32的参考手册。

2、关于外设功能冲突的介绍
之所以要介绍SMBus功能,是因为这两根管脚的默认功能都是SMBus,笔者当时做项目的时候,使用的是pb5管脚重映射功能为SPI的MOSI功能。但是调试的时候发现我的硬件I2C1功能一开启,I2C1和SPI1功能都会异常,让硬件打过信号发现我的PB5管脚一直为高电平状态,功能异常。

后面我发现,一旦我将pb5管脚重映射为SPI1_MOSI后,开启I2C1的时钟时,就会导致SPI1功能失效,后面笔者查询了一下官方的勘误手册,才发现这个在勘误手册上已经有了说明。

there is a conflict between the SPI1 MOSI and the I2C1 SMBA signals (even if SMBA is not used).
there is a conflict between the TIM3_CH2 signal and the I2C1 SMBA signal (even if SMBA is not used)
这两句话很关键,它的意思是:
SPI1 MOSI和I2C1 SMBA信号冲突(即使不使用SMBA)。
TIM3_CH2信号与I2C1 SMBA信号冲突(即使不使用SMBA)。
后面官方给出的解决办法就是说在使用它的SPI MOSI功能和TIM3_CH2功能的时候需要将i2c时钟关闭,也就是说如果使用PB5管脚的重映射功能的时候,I2C1是不可以被开启的,它的外设时钟也需要关闭。
笔者怀疑是因为PB5自身默认功能I2C1_SMBA受到I2C时钟的影响导致其他功能无法使用,我尝试寻找关闭I2C1_SMBA的方法,没有找到,看来这个问题是设计芯片的时候就有的配置,笔者查询了另一根默认功能为I2C2_SMBA的管脚PB12,也在勘误手册上找到了有关解释,虽然PB12管脚没有重映射功能,但是他的复用功能很多。

后面查询了勘误手册,果然是有记录的。

也是同样的意思,开启I2C2时钟以后其他功能无法使用。
笔者后面发现这个问题以后就使用了软件模拟I2C来解决这个问题,但是实际上如果大家想要使用硬件I2C的话,一定要关注这两根管脚,尽量避开冲突,以免引起不必要的麻烦。笔者后面也发现不光是stm32f103RB这一款mcu有这个问题,常用的c8t6等也有,大家可以多多关注他们的勘误手册。
关于stm32f10xRB系列的PB5和PB12外设冲突问题的更多相关文章
- TMS320C54x系列DSP的CPU与外设——第1章 绪论
第1章 绪论 TMS320C54x DSP是TMS320系列DSP产品中的定点数字信号处理器.C54x DSP满足了实时嵌入式应用的一些要求,例如通信方面的应用. C54x的中央处理单元(CPU)具有 ...
- TMS320C54x系列DSP的CPU与外设——第3章 存储器
第3章 存储器 本章介绍了TMS320C54x DSP存储器的构成和操作.一般来说,C54x器件共有192K 16位字的存储窨,这个空间分成3个专用的部分:64K字程序.64K字数据和64K字I/O ...
- TMS320C54x系列DSP的CPU与外设——第2章 TMS320C54x DSP体系结构总体介绍
第2章 TMS320C54x DSP体系结构总体介绍 本章介绍TMS320C54x DSP体系结构的概况,包括中央处理单元(CPU).存在器和片内外设. C54x DSP采用了高级的改进哈佛结构,用8 ...
- TMS320C54x系列DSP的CPU与外设——第5章 数据寻址
第5章 数据寻址 C54x DSP提供7种基本寻址方式. ■ Immediate addressing uses the instruction to encode a fixed value. ...
- TMS320C54x系列DSP的CPU与外设——第8章 流水线
第8章 流水线 本章描述了TMS320C54x DSP流水线的操作,列出了对不同寄存器操作时的流水线延迟周期.(对应英语原文第7章) 8.1 流水线操作 TMS320C54x DSP有一个6段的指令流 ...
- 第21章 DMA—直接存储区访问—零死角玩转STM32-F429系列
第21章 DMA—直接存储区访问 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/fi ...
- Zynq7000系列之芯片系统结构概述
相比较经典的FPGA,Zynq7000系列最大的特点是将处理系统PS和可编程资源PL分离开来,固化了PS系统的存在,实现了真正意义上的SOC(System On Chip). 1. Zynq7000 ...
- 【STM32学习笔记1】基于固件库的STM32_MDK工程模版
文章包含STM32固件库介绍和工程模板搭建两方面内容. 一.STM32固件库介绍 要建立工程模板,首先要对STM32的固件库有所了解.STM32的固件可以从ST官网下载,网址为:http://www. ...
- MSP MCU I2C入门指南
这是一份介绍性指南,指导你如何用超低功耗MSP微控制器 (MCU) 开始一个与I2C通信有关的项目: 简介 I2C(或称为I2C,集成电路总线)是一种两线制通信形式,主要用来在短距离.电路板间的应用中 ...
随机推荐
- C#项目中常见的目录和文件
本文迁移自Panda666原博客,原发布时间:2021年4月17日. Bin 目录 bin是英文binary的缩写, 字面意思是二进制,意指用来存放编译后的结果.C#/VB编译器编译后的程序二进制文件 ...
- pytorch 中 repeat 和 expend 的功能和区别
功能 均是用于扩展张量的维度 区别 tensor.expand(*sizes) 将张量中单维度(singleton dimensions,即张量在某个维度上为1的维度,exp(1,2,3),其中在第一 ...
- SQL server设置连接数
SQLServer查看及设置最大连接数 很多时候自己本地开发会遇到 ,打开几个连接正常访问 之后就报错误,这时候需要调整sqlserver 最大连接数. 1. 查询最大连接数 SELECT val ...
- SpringBoot 集成缓存性能之王 Caffeine
使用缓存的目的就是提高性能,今天码哥带大家实践运用 spring-boot-starter-cache 抽象的缓存组件去集成本地缓存性能之王 Caffeine. 大家需要注意的是:in-memeory ...
- Codeforces Round #804 (Div. 2)
题目链接 A The Third Three Number Problem 题意 给你一个n,让你求满足的a,b,c. 如果不存在则输出-1. 思路 显然任意a,b,c是不可能得到奇数. 只考虑偶数 ...
- RASP | 远程Java应用的RASP调试教程
远程Java应用的RASP调试教程 介绍 Java RASP是基于Java Agent技术实现的,而Java Agent代码无法独立启动,必须依赖于一个Java运行时程序才能运行. 如何调试一个Jav ...
- Ajax:异步的JS和XML
1.Ajax1) AJAX 是 Asynchronous JavaScript And XML 的简称.直译为,异步的JS和XML.2) AJAX的实际意义是,不发生页面跳转.异步载入内容并改写页面内 ...
- ReentrantLock 公平锁源码 第1篇
ReentrantLock 1 这篇还是接着ReentrantLock的公平锁,没看过第0篇的可以先去看上一篇https://www.cnblogs.com/sunankang/p/16456342. ...
- 云ATM架构设计
云ATM架构设计 启动程序(Start.java) public class Start { public static void main(String[] args) { MainView vie ...
- 发明Linux的帕特里克
Slackware Linux 是目前市场存活时间最长的 Linux 发行版之一,它基于一个叫做 SLS(Soft Landing Systems)的 Linux 项目而设计,易于使用和稳定. Sla ...