【嵌入式初学】初次使用GPIO模拟I2C通信-错误记录

文章讲述了在使用STM32f103c8t6进行软件I2C通信时,由于对IO引脚功能理解不足,导致在不同引脚如PB3和PB4上尝试I2C通信失败。作者发现这些引脚的默认功能并非用于普通IO,而是Jlink烧录,解决方法是选择PB13和PB14等默认作为普通IO的引脚,确保正确配置IO口以实现I2C通信。
摘要由CSDN通过智能技术生成

硬件:STM32f103c8t6、OLED、MPU6050

记录:软件I2C的IO口引脚选择错误


正常运行:

在用GPIO口做软件I2C通信,使用MPU6050时,最开始mpu6050的SCL和SDA端连接的是PB6和PB7两个引脚,一切都正常使用。

更换引脚:

然后看到教程中说软件I2C通信可以任意选择两个IO口引脚做SCL和SDA,因此就重新把mpu6050连接到了PB3和PB4两个引脚,但I2C通信失败了,OLED显示的加速度数据恒为1。

错误原因:

一开始查看引脚功能表时,看到PB6和PB7正好是板子I2C硬件通信的引脚,就认为软件I2C的引脚选择也要是具备有I2C外设的IO口,所以后续又在PB10和PB11上进行了测试,发现软件I2C正常使用,但为什么大家使用软件i2c的时候又说io的选择很多呢?

于是搜索了好多GPIO软件模拟I2C的帖子,大家都没有专门的说明IO的选择,最后在下面的帖子中有了启发

STM32F103C8T6引脚图及引脚功能说明及避坑指南-腾讯云开发者社区-腾讯云 (tencent.com)

帖子作者也遇到了使用IO做输入输出时出现错误

也就是说使用引脚时要注意IO引脚在板子上的默认功能是什么,比如我后面更换引脚到PB3和PB4,这两个引脚的默认功能是Jlink烧录使用端口,不是默认作为普通IO使用的,所以回出现I2C输入输出通信失败的情况。

在最后,我又更换引脚到PB13、PB14来测试,因为PB13、PB14默认是普通IO口,所以I2C正常通信。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值