关于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,集成电路总线)是一种两线制通信形式,主要用来在短距离.电路板间的应用中 ...
随机推荐
- ExtJS 布局-Absolute布局(Absolute layout)
更新记录: 2022年5月31日 发布本篇 1.说明 使用xy配置项设置子组件在父容器中绝对位置,本质是将子组件的CSS的position设置为absolute,然后使用x和y配置项映射到CSS的to ...
- CF141E Clearing Up 题解
思路分析 自认为是一道很好的思维题. 直接看上去的想法是: 跑一个生成树,每一次加的边颜色交替进行,直到拉出生成树. 仔细想想,发现可能无法保证最后是一棵树而不是森林,也是说输出都是 \(-1\) . ...
- 虚拟机启动时报’A start job is running for /etc/rc.local .. Compatibility错误。
虚拟机启动时报'A start job is running for /etc/rc.local .. Compatibility错误. 问题已经存在很长时间了,但是不影响ssh登录,遂置之未理. 经 ...
- 常用的Linux命令和Git的必要配置
常用的Linux命令平时一定要多使用这些基础的命令! 1.cd : 改变目录. 2.cd . . 回退到上一个目录,直接cd进入默认目录 3.pwd : 显示当前所在的目录路径. 4.ls(ll): ...
- Drone-比Jenkins更轻量化的持续集成部署工具
Drone 简介 Drone 是一个基于Docker容器技术的可扩展的持续集成引擎,由GO语言编写,可用于自动化测试与构建,甚至发布.每个构建都在一个临时的Docker容器中执行,使开发人员能够完全控 ...
- SpringMVC-01
1. 概述 1.1 概念 SpringMVC是一种基于Java实现MVC模型的轻量级Web框架 优点 使用简单,开发便捷(相比于Servlet) 灵活性强 项目请求响应架构演进: 软件三层 软件三层 ...
- 前 K 个高频元素问题
前 K 个高频元素问题 作者:Grey 原文地址: 前 K 个高频元素问题 题目描述 LeetCode 347. Top K Frequent Elements 思路 第一步,针对数组元素封装一个数据 ...
- 树莓派Raspiberry 编译Linux实时内核PREEMPT-RT 实战
树莓派4B 实时内核(Preempt_RT)的配置和编译https://blog.csdn.net/zlp_zky/article/details/114994444 基本按照这个blog来操作. 几 ...
- Sharding-jdbc 5.1.2案例
简介 sharding-jdbc案例,版本5.1.2 springboot + mybatis-plus + sharding-jdbc 项目地址:sharding-jdbc-example 模块说明 ...
- 【MySQL 8】Generated Invisible Primary Keys(GIPK)
从MySQL 8.0.30开始,MySQL支持在GIPK模式下运行时生成不可见的主键.在这种模式下运行时,对于任何在没有显式主键的情况下创建的InnoDB表,MySQL服务器会自动将生成的不可见主键 ...