i2c需要分两部分进行修改,第一部分是设备树的配置,这部分主要是有关i2c控制器相关的参数、中断等,另一部分是硬件引脚的配置,由于驱动用的是i2c-designware的通用驱动,所以需要读取进行io初始化,这就出现了额外的操作,希望后面对驱动进行适配,可以从设备树对引脚进行配置,自动完成初始化。
下面就来看看i2c驱动的大概过程吧:
设备树// linux_5.10/arch/riscv/boot/dts/cvitek/cv180x_base.dtsii2c0: i2c@04000000 { compatible = snps,designware-i2c; clocks = ; reg = ; clock-frequency = ; #size-cells = ; #address-cells = ; resets = ; reset-names = i2c0;};// linux_5.10/arch/riscv/boot/dts/cvitek/cv180x_base_riscv.dtsii2c0: i2c@04000000 { interrupts = ; interrupt-parent = ;}; 驱动源码 使用的是i2c designware的框架。
控制器驱动// linux_5.10/drivers/i2c/busses/i2c-designware-platdrv.cdw_i2c_plat_probe(struct platform_device *pdev): i2c_dw_probe(struct dw_i2c_dev *dev) i2c_dw_probe_master(struct dw_i2c_dev *dev) i2c_add_numbered_adapter(struct i2c_adapter *adap) i2c_add_adapter(struct i2c_adapter *adapter) i2c_register_adapter(struct i2c_adapter *adap) device_register(struct device *dev) // 注册设备 设备驱动// linux_5.10/drivers/i2c/i2c-core-base.ci2c_register_driver(struct module *owner, struct i2c_driver *driver) driver_register(&driver- >driver); // 注册驱动
通过device_register和driver_register会进行match和probe的操作,从而关联起来i2c适配器和设备驱动。
对于详细得展开需要进一步的学习。
应用编程 i2c的驱动编程就是open/read/write/ioctrl这一套。
uint8_t reg_addr = 0x00;uint8_t data_buf[2];// 打开设备int i2c_fd = open(/dev/i2c-0, o_rdwr);// 方式一:// 设置从机地址ioctl(i2c_fd, i2c_slave, slave_addr);write(i2c_fd, 0, ®_addr, 1);read(i2c_fd, 0, data_buf, 2);// 方式二:struct i2c_rdwr_ioctl_data rdwr;struct i2c_msg msgs[2];msgs[0].addr = i2c_slave;msgs[0].flags = 0;msgs[0].len = 1;msgs[0].buf = ®_addr;msgs[1].addr = i2c_slave;msgs[1].flags = i2c_m_rd;msgs[1].len = 2;msgs[1].buf = data_buf;rdwr.msgs = msgs;rdwr.nmsgs = 2;ioctl(file, i2c_rdwr, &rdwr); 以上两种方式选择其中一种就行。
接下去就用温湿度传感器测试一下i2c总线的使用,演示过程后面通过视频展示。
华为成中国电信2018年基站天线集采第一候选人
中国照明网:2020年全球十大LED光源创新器件的展示与解读
恩智浦推出全球首款单芯片解决方案 兼容全球所有车载信息娱乐和广播标准
高通全系列 Wi-Fi 6E 解决方案,集成了蓝牙 5.2 音频技术
串行总线差分互连之模态转换
Milk-V Duo开发板免费体验 I2C分析
碳化硅1700v sic mosfet供应商
智能电网的护航者——智能化电气设备
华为联合中国信通院、中国移动等联合发布《医疗行业应用云网体验白皮书》
多省份加码布局第三代半导体产业
基于嵌入式PC与EtherCAT技术实现步进电机运动控制系统的设计
小米回应48亿元印度资金情况:仅冻结、并非没收
苹果下一代iPhone或将使用更先进的7nm制程的处理器
三极管厂商:北京麦格希尔微电子有限公司简介
全汉战神480评测 值不值得买
AT89C52单片机的性能原理及应用解析
2019年商务航空领域的一些重要事件总结
5G终端在5G时代将面临各种挑战与机遇
赵云科技推出最新多款搭载第六代 Intel® Skylake 处理器的嵌入式电脑
脉冲电源_什么是脉冲电源?