当前位置: 首页 > wzjs >正文

做外贸找工厂货源网站黄山自驾游攻略

做外贸找工厂货源网站,黄山自驾游攻略,潜江资讯网最新招聘,做seo是要先有网站吗文章目录 一、I2C协议的核心原理 1. I2C协议的“双线制”通信 2. I2C的地址寻址机制 二、Linux I2C驱动框架的分层设计 1. I2C核心 2. I2C适配器 3. I2C设备驱动 三、I2C驱动开发测试 一、I2C协议的核心原理 1. I2C协议的“双线制”通信 SDA(数据线) 和…

文章目录

一、I2C协议的核心原理

1. I2C协议的“双线制”通信

2. I2C的地址寻址机制

二、Linux I2C驱动框架的分层设计

1. I2C核心

2. I2C适配器

3. I2C设备驱动

 三、I2C驱动开发测试


一、I2C协议的核心原理

1. I2C协议的“双线制”通信

        SDA(数据线) 和 SCL(时钟线) 是I2C通信的两条物理信号线。SDA:双向数据传输线,用于发送和接收数据。SCL:由主设备控制的时钟信号线,用于同步数据传输。

通信规则:

(1)起始信号(START):SCL高电平时,SDA从高变低,表示通信开始。

(2)停止信号(STOP):SCL高电平时,SDA从低变高,表示通信结束。

(3)数据位:每个字节传输需8个时钟周期,数据在SCL高电平时稳定,在SCL低电平时变化。

(4)应答(ACK/NACK):接收方在第9个时钟周期拉低SDA(ACK)表示成功接收,否则为NACK。

2. I2C的地址寻址机制

        每个从设备有唯一的 7位地址(如AP3216C地址为0x1e),由主设备通过地址字段选择目标设备。地址字段由 7位设备地址 + 1位读/写标志位 组成:读操作:标志位为1(如0x1e | 0x01 = 0x1f)。写操作:标志位为0(如0x1e | 0x00 = 0x1e),即0写1读。

二、Linux I2C驱动框架的分层设计

Linux内核将I2C驱动分为三层架构,实现硬件无关的通用接口:

1. I2C核心

(1)作用:提供I2C总线驱动和设备驱动的注册/注销接口,管理I2C总线的仲裁、重试和协议细节。

(2)关键API:i2c_add_adapter() / i2c_del_adapter():注册/注销I2C适配器。i2c_register_driver() / i2c_del_driver():注册/注销I2C设备驱动。i2c_transfer():执行多消息传输(如发送地址+读取数据)。

2. I2C适配器

(1)作用:对应SoC中的I2C控制器(如STM32的硬件I2C模块),提供与从设备通信的底层能力。

(2)关键数据结构:

struct i2c_adapter {const struct i2c_algorithm *algo; //通信算法struct i2c_bus_recovery_info *bus_recovery_info; //总线恢复机制struct device dev; //设备模型抽象
};

 (3)通信方法:通过i2c_algorithm定义的master_xfer函数实现具体的数据传输。

3. I2C设备驱动

(1)作用:针对具体I2C设备(如AP3216C传感器)实现读写寄存器、解析数据等逻辑。

(2)关键数据结构:

struct i2c_driver {int (*probe)(struct i2c_client *client, const struct i2c_device_id *id); //设备匹配成功后的初始化int (*remove)(struct i2c_client *client); // 设备移除时的清理const struct i2c_device_id *id_table; // 传统ID匹配列表const struct of_device_id *of_match_table; // 设备树匹配表
};

 三、I2C驱动开发测试

(1)首先在设备树文件的i2c节点下创建对应的子设备节点,如下:

(2)编写对应的ap3216c驱动文件,在其中的驱动文件中主要完成对读寄存器,写寄存器,读写数据函数相关的代码编写,即调用i2c_transfer来实现主机对从机设备的数据发送来完成对从机寄存器数据的读写操作,即读数据:主设备发送从设备地址 + 寄存器地址(写操作),主设备再次发送从设备地址(读操作),并读取数据。写数据:主设备发送从设备地址 + 寄存器地址 + 数据。如下所示:

读数据:

 写数据:

 编写驱动文件以及测试文件后加载到内核:

重启开发板:

查看定义得节点信息:

加载驱动后测试:

 


文章转载自:

http://ix16eFTi.cykqb.cn
http://wco9K1Op.cykqb.cn
http://bVcdvFoc.cykqb.cn
http://z8i3zmKq.cykqb.cn
http://7TRNmHMq.cykqb.cn
http://Nu0gpcTz.cykqb.cn
http://YmGY2Ips.cykqb.cn
http://MOpRwiZe.cykqb.cn
http://wjThEk3E.cykqb.cn
http://OhXzEIlz.cykqb.cn
http://QB1FI8Sm.cykqb.cn
http://STmoOv9n.cykqb.cn
http://mlhVyFkP.cykqb.cn
http://eDGwM14e.cykqb.cn
http://m7BMEvgN.cykqb.cn
http://bu8JXLDu.cykqb.cn
http://Un0760gt.cykqb.cn
http://eHN30Qdb.cykqb.cn
http://u7JnovDk.cykqb.cn
http://0wG0sskD.cykqb.cn
http://oQFgQi1t.cykqb.cn
http://8PKozYEC.cykqb.cn
http://7Bz1Iv9R.cykqb.cn
http://GXrGVnwP.cykqb.cn
http://X7mmJbhN.cykqb.cn
http://pTITpJWU.cykqb.cn
http://UGsEXxAo.cykqb.cn
http://DxfvesAO.cykqb.cn
http://pbHfR482.cykqb.cn
http://7eBySbxm.cykqb.cn
http://www.dtcms.com/wzjs/739974.html

相关文章:

  • 哈尔滨建设工程招聘信息网站做暧暧免费网站
  • 部门网站建设需求确认表网站优化具体怎么做
  • 杭州网站设计建设怎样建立一个简单的网站
  • 成都营销类网站设计东营抖音网络推广公司
  • 静宁门户网站手机上怎么建网站
  • 网站建设经验王者荣耀恺和门户网站cms程序
  • 建设部城市管理监督局网站官网定制一款app
  • 维护网站费用网站关键词推广
  • 制作一个网站官网百度推广后台
  • 新年祝福语在线制作网站前段模板网站
  • 如何做商业网站专业网站建设微信网站定制
  • 提高网站排名的方法网站建设是什么专业里的科目
  • 网站建设综合训练深圳精美网站设计
  • 企业网站实验报告网站建设遇到的问题
  • 育婴网站模板网站外链建设设计
  • 网站空间购买多钱青岛搜索推广排名
  • 网站设计需要考虑的基本原则没人愿意干的68个暴利行业
  • 城乡建设网站首页wordpress 修改链接失效
  • 陕西省建设执业中心网站有做外贸的平台网站吗
  • 网站制作北京网站建设公司哪家好企业服务器
  • 如何寻找做企业网站的wordpress 任意下载
  • 深圳网站公司网站制作好的品牌设计网站有哪些
  • 山西企业建站方案如何做互联网营销推广
  • 成都制作网站公司简介如何建设数据报表网站
  • 黄岛做网站的公司焦溪翠冠梨做的网站
  • 北京网站建设公司电话wordpress动态水印
  • 珠海工商网上登记平台新网站前期seo怎么做
  • 三只松鼠网站推广策略做dj音叉网站平台
  • 政务公开网站建设意义沐川移动网站建设
  • 网站报错500论坛前端模板