0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

模拟iic和硬件iic区别

工程师邓生 来源:未知 作者:刘芹 2023-09-19 16:50 次阅读

模拟iic硬件iic区别

I2C是一种相对于另一种通信协议SPI(Serial Peripheral Interface)更高层次的通讯协议,也称为I2C总线。I2C(Inter-Integrated Circuit)始于1982年由Philips公司开发的串行总线技术,主要应用于连接集成电路芯片,如处理器传感器,数字转换器等。

I2C协议可以被模拟和硬件实现。模拟I2C是用两条GPIO(General Purpose Input Output)管脚的软件模拟的,将一个GPIO设置为数据线SDA,另外一个设置为时钟线SCL。硬件I2C则是通过一个I2C控制器实现的,该控制器被建立在微控制器芯片或单独的I2C芯片中,通过集成的硬件内部逻辑和电路来控制时序和数据格式,实现I2C总线通信。

I2C协议传输时分为两类线,一类为时钟线SCL,另一类为数据线SDA。时钟线由主节点产生,用于同步数据传输,数据线用于传输真正的数据。从I2C线上的数据格式可以看出I2C的核心是如何处理设备之间的“冲突”,比如两个设备同时要向总线上发送数据同时采用不同的速率,此时会出现“冲突”,I2C通过一系列复杂的算法来解决这种冲突问题。

模拟I2C通信需要使用软件和硬件上的两种方法。常见的模拟I2C方法是通过GPIO模拟SCL和SDA信号,并使用GPIO电平高低来识别时钟和数据线上的1和0。模拟I2C的主要限制是不能在高速模式下运行,并且有可能出现线路噪音、误码等问题。

硬件I2C通信更加可靠,并且具有更高的性能。硬件控制器内置在微控制器芯片或者单独的I2C芯片中,在控制器的支持下,可以实现高速数据传输,避免了SCL和SDA之间的相互影响。此外,在硬件I2C中,处理信号和协议的复杂算法已经内置在控制器中,不需要用户自己实现,简化了通信过程,提高了可靠性。

软件I2C作为一个模拟方法,还存在另一个重要的缺点就是不同于硬件I2C,模拟I2C的芯片在同时进行通信时需要耗费大量的CPU资源,对内存和处理器速度的要求更高。反过来,硬件I2C通常可以在任何操作系统和平台上轻松使用,这种通信协议不需要使用大量的额外的内存或处理器周期。

硬件I2C和模拟I2C都各自具有优缺点,请根据您的具体需求来选择使用哪种方法。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 微控制器
    +关注

    关注

    48

    文章

    7542

    浏览量

    151316
  • I2C总线
    +关注

    关注

    8

    文章

    390

    浏览量

    60916
  • GPIO
    +关注

    关注

    16

    文章

    1204

    浏览量

    52054
  • SDA
    SDA
    +关注

    关注

    0

    文章

    124

    浏览量

    28127
收藏 人收藏

    评论

    相关推荐

    MCU通过IIC口控制TLV320AIC3204,请问MCU的IIC接口和TLV320AIC3204的IIC接口对接时需要电平转换吗?

    MCU通过IIC口控制TLV320AIC3204,该芯片的IOVDD接1.8V,MCU的IIC上拉电平是3.3V,请问MCU的IIC接口和TLV320AIC3204的IIC接口对接时
    发表于 10-30 06:02

    IIC信号线需要增加上拉电阻,是因为IIC的IO是什么

    IIC(Inter-Integrated Circuit,即集成电路总线)信号线需要增加上拉电阻,这主要是因为IIC的IO(输入输出)设计采用了开漏(Open-Drain)输出方式。开漏输出方式在
    的头像 发表于 10-06 15:50 654次阅读

    iic通讯的ardunio的文件下载

    里面很多iic通讯的ardunio的文件
    发表于 07-05 10:55 1次下载

    使用STM32F103的硬件IIC,出现BUSY去重新初始化IIC之后,为什么会每次卡在设备地址发送不出去?

    使用STM32F103的硬件IIC,查询的方式,进行通讯,出现BUSY之后,去重新初始化IIC之后,之后为什么会每次卡在设备地址发送不出去啊。求教,求教
    发表于 05-28 06:43

    示波器如何捕获和分析IIC波形?

    示波器捕获和分析IIC(集成电路间通信)波形是一项重要的电子测量任务,特别是在嵌入式系统和微控制器的调试过程中。
    的头像 发表于 05-20 15:08 3034次阅读

    STM8L051F3手册里是否有IIC作为slave的IIC address?

    各位使用过STM8L051F3硬件IIC的朋友们,手册里是否有IIC作为slave的IIC address,并没有看到啊。请大家帮忙告知。谢谢!
    发表于 05-07 07:25

    stm32f103z系列硬件IIC从机不能用的原因?

    如题,我在STM32F103C8 48脚下写的IIC PB6 PB7 硬件IIC从机可以使用, 把上面的程序改为STM32F103ZE 144脚下的写的IIC PB6 PB7
    发表于 05-07 06:56

    lis3dh使用IIC通讯,CS引脚悬空也能正常IIC通信吗?

    芯片手册上CS引脚接高电平是IIC通讯,接低电平是SPI通讯;接手的项目中,CS引脚是悬空的,IIC通讯能进行,我想知道悬空能IIC可靠通讯嘛?
    发表于 03-28 09:44

    巨霖科技将亮相IIC Shanghai并发表主题演讲

    活动预告∣巨霖科技将亮相IIC Shanghai 并发表主题演讲
    的头像 发表于 03-27 09:50 414次阅读
    巨霖科技将亮相<b class='flag-5'>IIC</b> Shanghai并发表主题演讲

    FPGA实现IIC协议的设计

    今天给大家带来的是IIC通信,IIC协议应用非常广泛,例如与MPU6050进行通信,配置OV5640摄像头、驱动OLED屏幕等等,都需要使用到IIC协议,所以掌握它是非常必要的,废话不多说,接着往下看。
    的头像 发表于 03-04 10:49 1247次阅读
    FPGA实现<b class='flag-5'>IIC</b>协议的设计

    GD32 MCU碰到IIC总线卡死怎么办?

    大家在使用MCU IIC通信时,若碰到设备复位或者总线干扰等情况,可能会导致IIC总线卡死,表现上总线上SDA或者SCL其中一根线为低电平,IIC总线一直处于busy状态。此时若代码上一直等待总线空闲,则可能导致软件死机,为解决
    的头像 发表于 02-24 09:46 3831次阅读
    GD32 MCU碰到<b class='flag-5'>IIC</b>总线卡死怎么办?

    IIC总线为什么是半双工?

    IIC(Inter-Integrated Circuit)总线是一种半双工的串行通信接口。在I2C总线上,主设备和从设备之间的数据传输是采用半双工模式进行的。这意味着主设备和从设备在不同的时间段内交替发送和接收数据。
    的头像 发表于 02-02 16:37 4626次阅读
    <b class='flag-5'>IIC</b>总线为什么是半双工?

    IIC的GC模式是用来干啥的?

    有谁知道IIC的 GC模式是用来干啥的?MCU的 IIC从地址可以设置多个在实际应用中有啥意义?
    发表于 01-16 07:01

    【CW32学习笔记】IIC接口-主机发送

    接着就是比较重要的部分了,IIC接口的收发并不是全自动的,因为一个完整的通信不仅包括发数据(地址、数据什么的),还包含收数据(啥也不干也得接收ACK信号),所以IIC通信的每个部分基本上都是收发易位的过程,IIC外设并不会自动完
    的头像 发表于 01-10 15:59 657次阅读
    【CW32学习笔记】<b class='flag-5'>IIC</b>接口-主机发送

    IIC总线的FPGA实现说明

    DE2_TV中,有关于寄存器的配置的部分,采用的方法是通过IIC的功能,这里对IIC总线的FPGA实现做个说明。
    的头像 发表于 01-05 10:16 1052次阅读
    <b class='flag-5'>IIC</b>总线的FPGA实现说明