找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 987|回复: 9
打印 上一主题 下一主题
收起左侧

软件i2c和硬件i2c区别

[复制链接]
跳转到指定楼层
楼主
ID:1146034 发表于 2025-3-22 15:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一般软件i2c和硬件i2c有什么区别啊?
软件i2c在cube里面配置了就直接使用hal库封装好了的代码吗?
硬件要自己写时序,i2cstart、stop这些吗?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:74687 发表于 2025-3-23 09:18 | 只看该作者
硬件I2C必须选用芯片I2C的PIN脚,在开发的时候有些PIN须用复用一下,然后调用芯片方提供的库函数就可以了。

软件模拟I2C,PIN脚一般选普通的GPIO,然后开发的时候,需要自己写时序。
回复

使用道具 举报

板凳
ID:462827 发表于 2025-3-23 10:41 | 只看该作者
区别就是软件I2C很容易地变换要使用的GPIO口,灵活性大;硬件的I2C就只能是固定的GPIO口(可以切换另外的组),速率会比软件模拟的高。按需选择吧
回复

使用道具 举报

地板
ID:1109793 发表于 2025-3-23 15:02 | 只看该作者
大概是你正好写反了
回复

使用道具 举报

5#
ID:401564 发表于 2025-3-23 15:24 | 只看该作者
硬件IIC与软件IIC前面已经有人说了,我就不多说了
但是,个人感觉新手还是要先学会软件IIC,这对于你理解IIC有很大的帮助
对于应答,不应答,超时之类的,只有软件IIC才能真正的理解这其中的原理
项目实际应用就要看你的要求了,硬件自然是通讯效率高了
但软件也有好处,就是好移植,STM32到51,只要宏定义搞好了,直接复制就行
回复

使用道具 举报

6#
ID:879809 发表于 2025-3-23 18:16 | 只看该作者
软件IIC的时序是你的软件完成的,硬件IIC的时序是peripheral完成的,你只要写寄存器就行了。
回复

使用道具 举报

7#
ID:446156 发表于 2025-3-24 11:23 | 只看该作者
IIC这种低速总线没必要用硬件的,用软件模拟的就行
回复

使用道具 举报

8#
ID:831024 发表于 2025-3-27 13:25 | 只看该作者

IIC这种低速总线没必要用硬件的,用软件模拟的就行
回复

使用道具 举报

9#
ID:707558 发表于 2025-3-30 11:51 | 只看该作者
软件I2C可以根据需要方便地选择引脚,但要自己写时序相关的一些代码,不过这些代码也比较简单且很容易找到,如STC51就有很多的软件I2C例子;硬件I2C使用固定的引脚,直接调用相关库函数就好了。从移植和外设连接等角度看,很多时候使用软件I2C比较好一些。
回复

使用道具 举报

10#
ID:77610 发表于 2025-7-11 08:30 | 只看该作者
从个人的过往经验,感觉第一步一定要先学软件IIC,把软件IIC学会了再去用硬件IIC,注意,到硬件IIC这里我用的词语是“用”而不是“学”,因为IIC本身一旦把软件模拟的方法学会,硬件的使用就非常简单了,大多数MCU都是配置一下寄存器就好,如果是库函数的方式,也就是有专门的start和stop函数,直接调用即可。  学单片机本身其实就是学习各种外设总线的时序,当时我学单片机的时候,一个老师说时序是灵魂,当时还不太理解,现在明白了,希望对伙伴们有帮助。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表