• Linux下IIC驱动编写,介绍IIC子系统框架的使用


    一、IIC协议介绍

    说起IIC,搞单片机,嵌入式的那肯定是接触的比较多的。串口、IIC、SPI这3个协议在单片机阶段应该是用比较多的,很多的外设模块,芯片都是串口、IIC、SPI等协议与主控芯片进行通信,完成逻辑开发。 在Linux系统驱动层使用IIC其实本质上与单片机没什么差别的,最终反正是和芯片进行交互通信,本身IIC协议并不难,但是在Linux下为了标准化,加了很多框架导致理解上就觉得复杂,听起来xxx子系统就很神秘高大上,其实这是因为对Linux驱动框架不熟悉,只要把框架流程能梳理清楚,那么整体就变得简单了。

    IIC协议在物理连接上比较简单,只有两条线: SDA(串行数据线)和 SCL(串行时钟线)  ,比较省IO口。  其中的SDA数据线是双向的,根据时序发送数据和接收数据时主机会对应的切换自身的输入输出模式。 SDA数据线是传输数据信号的,时钟线是用来控制什么时候发送数据信号,搞懂规则两边设备就可以通过IIC协议进行通讯。 从连线上可以得知,IIC属于串行协议,每一次的时钟信号只能单方面发送一个字节数据。 

     IIC协议又称为IIC总线。   为什么叫总线? 这个可不是随便乱叫的。 除了IIC总线外,常见的总线还有SPI总线,USB总线等等。  如果对IIC,SPI不了解,可能对总线这个概念不清楚,但USB大家应该是都见过的,如果电脑的USB口不够用,我们可以买集线器扩展USB接口,将集线器插在电脑USB口之后,集线器上面可以插入多个USB设备:比如,USB鼠标,USB键盘,U盘,USB-网卡等等。 对于电脑而言,它怎么知道自己在和哪一个USB设备通讯?如何区分的࿱

  • 相关阅读:
    经历分享:现在的加盟游戏工作室已经变味了
    Vue3.x新特性 Vue3新功能(详细)
    Django DetailView视图
    Python中Lambda用法
    经典组件大更新,微软为Windows 11重新设计记事本
    [环境配置]anaconda3的base环境与python版本对应关系表
    解决项目下的lib包没有打进jar的问题
    高精度乘除法(超详细)
    nlp工具库spacy
    Java ES 滚动查询
  • 原文地址:https://blog.csdn.net/xiaolong1126626497/article/details/127917296