打印
[CW32F030系列]

模拟iic的速度为什么比硬件的慢这么多?

[复制链接]
594|52
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
FranklinUNK|  楼主 | 2024-11-24 15:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用模拟的时候一次翻转硬件都可以做两次了

使用特权

评论回复
沙发
tpgf| | 2024-12-2 11:42 | 只看该作者
模拟IIC是通过软件控制GPIO(通用输入输出)管脚来模拟IIC协议的时序

使用特权

评论回复
板凳
观海| | 2024-12-2 12:50 | 只看该作者
硬件IIC由于使用专门的硬件电路,可以实现较高的数据传输速度,通常可以达到400kHz或更高

使用特权

评论回复
地板
磨砂| | 2024-12-2 18:40 | 只看该作者
硬件I2C可以直接调用内部寄存器进行配置,利用芯片中的硬件I2C外设,自动执行时钟生成、起始终止条件生成、应答位收发、数据收发等功能

使用特权

评论回复
5
晓伍| | 2024-12-2 19:59 | 只看该作者
由于模拟IIC需要CPU的参与来生成时序,因此会占用较多的CPU资源

使用特权

评论回复
6
八层楼| | 2024-12-2 21:07 | 只看该作者
模拟IIC的通信速度可能较慢,因为它受限于软件实现的效率和MCU的处理能力

使用特权

评论回复
7
hudi008| | 2024-12-2 21:20 | 只看该作者
大多数现代单片机都内置有硬件I²C模块,这些模块专门用于处理I²C通信,不需要CPU参与每个信号的变化,因此可以非常快速和高效地运行。

使用特权

评论回复
8
xiaoyaodz| | 2024-12-2 22:13 | 只看该作者
模拟IIC的驱动程序通常比硬件IIC更复杂,需要程序员对IIC协议有深入的理解,并且要仔细编写和调试时序控制代码。

使用特权

评论回复
9
guanjiaer| | 2024-12-2 22:54 | 只看该作者
模拟IIC的实现可能不如硬件I2C稳定,因为它更容易受到外部干扰和程序错误的影响

使用特权

评论回复
10
ccook11| | 2024-12-3 08:29 | 只看该作者
硬件IIC的驱动通常较为简单,因为许多时序和控制逻辑都由硬件模块自动完成。

使用特权

评论回复
11
flycamelaaa| | 2024-12-5 11:09 | 只看该作者
首先,硬件IIC是依靠微控制器内部的专用硬件模块来实现IIC通信的,这些模块包括IIC控制器和相关寄存器,能够自动处理IIC协议的细节。这种硬件级别的支持使得硬件IIC在通信过程中减少了软件干预,从而提高了通信速度和可靠性。而软件模拟IIC则是通过软件编程来模拟IIC协议的时序和逻辑,利用GPIO引脚来模拟SCL和SDA信号,这需要CPU不断监测和控制GPIO引脚的状态,因此会占用较多的CPU资源,并且通信速度相对较慢。

使用特权

评论回复
12
flycamelaaa| | 2024-12-5 11:09 | 只看该作者
其次,硬件IIC模块通常支持更高的通信速率,可以达到几百kHz甚至几MHz,而软件模拟IIC由于需要CPU的实时干预,其通信速率通常低于硬件IIC。此外,硬件IIC还可以在后台自动处理数据传输,进一步释放CPU资源,使其可以处理其他任务,这也是硬件IIC在性能上优于软件模拟IIC的一个重要方面。

使用特权

评论回复
13
flycamelaaa| | 2024-12-5 11:09 | 只看该作者
最后,需要注意的是,虽然软件模拟IIC在速度上可能不如硬件IIC,但它具有更高的灵活性。通过编程,软件模拟IIC可以实现各种自定义功能,如不同的通信速率、特殊的握手协议等,这使得软件模拟IIC能够适应更多样化的应用需求。因此,在选择使用哪种IIC方式时,需要根据具体的应用需求、性能要求以及资源限制等因素进行综合考虑。

使用特权

评论回复
14
suncat0504| | 2024-12-5 22:10 | 只看该作者
但我经历过的感觉,如果单片I2C外设的工作主频不高的话,模拟的速度应该更快。当然还得看连接的I2C设备的通讯速度。使用单片机I2C外设的好处在于,只需要报数据传给外设,具体通讯过程不需要中央处理单元参与。

使用特权

评论回复
15
suncat0504| | 2024-12-5 22:14 | 只看该作者
目前单片机大I2C外设一般都支持100KHz,400KHz,甚至1MHz。但如果单片机主频能上100MHZ以上的话,而外部I2C设备也支持1MHz以上的通讯速度的话,我感觉模拟方式应该比单片机的I2C外设更快才对。毕竟模拟也好,I2C外设也好,都是通过串行方式通讯的。一边被固定在100KHz/400KHz/1MHz,而模拟的话,在主频200MHz以上时,速度可能会达到10MHz以上。

使用特权

评论回复
16
tifmill| | 2024-12-6 20:10 | 只看该作者
硬件 IIC 是通过芯片内部专门的 IIC 硬件模块来实现通信的。

使用特权

评论回复
17
mattlincoln| | 2024-12-6 23:13 | 只看该作者
由于受限于单片机的其他任务和软件循环的效率,模拟I²C的时钟速度通常较慢。软件模拟时钟信号需要时间来执行代码,这限制了时钟频率。

使用特权

评论回复
18
sdlls| | 2024-12-7 02:16 | 只看该作者
硬件 IIC 作为专门的硬件模块,在设计芯片时已经对其进行了优化,以提高通信效率。

使用特权

评论回复
19
hearstnorman323| | 2024-12-7 05:21 | 只看该作者
硬件IIC模块内置精确的时钟发生器,可以产生稳定的时钟信号,从而保证通信的时序精度。

使用特权

评论回复
20
febgxu| | 2024-12-7 08:27 | 只看该作者
硬件IIC模块可以在CPU执行其他任务的同时进行数据传输,这样可以释放CPU资源,提高整体系统的效率。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

41

主题

289

帖子

0

粉丝