没有合适的资源?快使用搜索试试~ 我知道了~
i2c-SPI粗略笔记,学习时记载;
资源推荐
资源详情
资源评论
I2C框架
-----------------------------
1.IIC核心层 drivers/i2c/i2c-dev.c(过时,通用设备驱动) i2c-core.c (bus_type匹配函数) i2cboardinfo.c
通用代码,实现adapter,设备注册、注销方法及iic通信函数通用部分
i2c-core.c
postcore_initcall(i2c_init); //早起初始化,要早于设备初始化;比设备函数先调用
postcore_initcall(fn) =》__define_initcall("2",fn,2) //2启动时调用等级
module_init(fn) =》__initcall(fn) =》 device_initcall(fn) =》 __define_initcall("6",fn,6)
------------------------------
2.IIC总线驱动 busses/i2c-s3c2410.c 适配器驱动(adapter驱动)厂商完成
----匹配方式
1)pdrv->id_table pdev
2)drv->name pdev->name
---控制器注册
struct i2c_adapter adap; //控制器设备 适配器结构体
i2c_add_numbered_adpter(&i2c->adap) //适配器第一种注册函数 自己指定总线号(0)
i3c_add_adapter(); //适配器第二种注册函数 总线号动态分配
i2c->adap.nr适配器对应的I2C总线号
struct i2c_algorithm *algo //算法,总线驱动提供的通信函数
mater_xfer//通信传输函数
functionality//检查总线支持的通信协议函数
-------------------------------
3.IIC设备驱动 添加设备信息 API:i2c_register_board_info()//添加设备信息 总线驱动注册驱动之前添加 ******
struct i2c_client client;//iic丛机设备 i2c_board_info 填充
i2c_new_device(); //设备注册
驱动注册
-----------------------------
1.IIC核心层 drivers/i2c/i2c-dev.c(过时,通用设备驱动) i2c-core.c (bus_type匹配函数) i2cboardinfo.c
通用代码,实现adapter,设备注册、注销方法及iic通信函数通用部分
i2c-core.c
postcore_initcall(i2c_init); //早起初始化,要早于设备初始化;比设备函数先调用
postcore_initcall(fn) =》__define_initcall("2",fn,2) //2启动时调用等级
module_init(fn) =》__initcall(fn) =》 device_initcall(fn) =》 __define_initcall("6",fn,6)
------------------------------
2.IIC总线驱动 busses/i2c-s3c2410.c 适配器驱动(adapter驱动)厂商完成
----匹配方式
1)pdrv->id_table pdev
2)drv->name pdev->name
---控制器注册
struct i2c_adapter adap; //控制器设备 适配器结构体
i2c_add_numbered_adpter(&i2c->adap) //适配器第一种注册函数 自己指定总线号(0)
i3c_add_adapter(); //适配器第二种注册函数 总线号动态分配
i2c->adap.nr适配器对应的I2C总线号
struct i2c_algorithm *algo //算法,总线驱动提供的通信函数
mater_xfer//通信传输函数
functionality//检查总线支持的通信协议函数
-------------------------------
3.IIC设备驱动 添加设备信息 API:i2c_register_board_info()//添加设备信息 总线驱动注册驱动之前添加 ******
struct i2c_client client;//iic丛机设备 i2c_board_info 填充
i2c_new_device(); //设备注册
驱动注册
struct i2c_driver *driver;//驱动表示
i2c_add_driver(); **********
i2c_board_info //设备信息
struct i2c_devinfo devinfo //链表节点结构体类型
__i2c_board_list//设备信息链表 结构体i2c_devinfo作为链表节点
list_add_tail() //尾部插入链表
适配器、设备都是注册在当前总线上
int i2c_register_adapter() //适配器注册
device_register(&adap->dev) //设备注册
i2c_scan_static_board_info() //
list_for_each_entry()//遍历链表
I2c_new_device() //注册设备
i2c_check_functionality()//检查支不支持对应的功能
--------------------------------------i2c核心提供的通信函数
i2c_master_send(从设备结构体,读/写数据操作的位置,多少字节) //对i2c_master_transer的封装
i2c_master_recv(设备, 接收读的缓冲,字节数) //对i2c_master_transer的封装
i2c_master_transer(适配器,&msg, msg个数)
--------------ls /dev/at24_eeprom
===============================================文件IO操作(系统IO与标准IO)
系统IO:
i2c_add_driver(); **********
i2c_board_info //设备信息
struct i2c_devinfo devinfo //链表节点结构体类型
__i2c_board_list//设备信息链表 结构体i2c_devinfo作为链表节点
list_add_tail() //尾部插入链表
适配器、设备都是注册在当前总线上
int i2c_register_adapter() //适配器注册
device_register(&adap->dev) //设备注册
i2c_scan_static_board_info() //
list_for_each_entry()//遍历链表
I2c_new_device() //注册设备
i2c_check_functionality()//检查支不支持对应的功能
--------------------------------------i2c核心提供的通信函数
i2c_master_send(从设备结构体,读/写数据操作的位置,多少字节) //对i2c_master_transer的封装
i2c_master_recv(设备, 接收读的缓冲,字节数) //对i2c_master_transer的封装
i2c_master_transer(适配器,&msg, msg个数)
--------------ls /dev/at24_eeprom
===============================================文件IO操作(系统IO与标准IO)
系统IO:
剩余13页未读,继续阅读
资源评论
qq_15382857
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- java-leetcode题解之第111题二叉树的最小深度.zip
- java-leetcode题解之第110题平衡二叉树.zip
- java-leetcode题解之第109题有序链表转换二叉搜索树.zip
- java-leetcode题解之第108题将有序数组转换为二叉搜索树.zip
- java-leetcode题解之第107题二叉树的层序遍历II.zip
- java-leetcode题解之第102题二叉树的层序遍历.zip
- java-leetcode题解之第103题二叉树的锯齿形层序遍历.zip
- java-leetcode题解之第104题二叉树的最大深度.zip
- java-leetcode题解之第173题二叉搜索树迭代器.zip
- java-leetcode题解之第100题相同的树.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功