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

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

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

本文记录了在STM32项目中遇到的PB5和PB12外设功能冲突问题。当PB5重映射为SPI1_MOSI并开启I2C1时,会导致SPI1功能失效。官方勘误手册指出SPI1 MOSI和I2C1 SMBA、TIM3_CH2与I2C1 SMBA存在冲突。解决方法是在使用SPI或TIM3功能时关闭I2C1的时钟。此外,PB12管脚也有类似冲突。建议在设计时避免使用这些管脚,或采用软件模拟I2C以避免问题。
最低0.47元/天 解锁文章
6258

被折叠的 条评论
为什么被折叠?



