摸了好久,终于把linux中i2c的ioctl,write,read函数的使用弄懂了
来源:互联网 发布:ipad 软件更新不了 编辑:程序博客网 时间:2024/06/05 18:59
ioctl函数的使用:
原型:struct ioctl(struct file *file,unsigned int cmd,unsigned long arg);
cmd有I2C_SLAVE,I2C_SLAVE_FORCE,I2C_TENBIT,I2C_S3C2410_SET_SPEED几个选项;
I2C_SLAVE:对应的arg取值为I2C从机地址,用来设定I2C从机地址;
I2C_SLAVE_FORCE:对应的arg取值为I2C从机地址,用来修改I2C从机地址;
I2C_TENBIT:对应的arg取值为0:从机地址为7 bit;对应的arg取值为1:从机地址为10bit。用来指定I2C从机地址的位数;
I2C_S3C2410_SET_SPEED:对应的arg取值为I2C总线控制器分频值。用来设置I2C总线控制器时钟频率;
常用设置设置I2c从机地址为0xA0,如果选用at24c08设备,那么从机是7 bit地址,所以要右移1位,指定从机地址为7 bit,
ioctl(fd,I2C_TENBIT,0)。
ioctl(fd,I2C_SLAVE,0xA0>>1);
read()与write()函数的使用
假设子地址为12,向有子地址的器件写进7个字节:
unsigned char buf[8]={12,'s','j','s','u','n','n','y');/*第1个字节12为子地址*/write(fd,buf,9);/*写进7个字节,第1个字节为子地址*/
从有子地址的I2C器件读取7个字节:
unsigned char suba=0;recbuf[20];
write(fd,buf,1);/*发送子地址0*/
read(fd,recbuf,7);/*从子地址12开始读取7个字节*/
- 摸了好久,终于把linux中i2c的ioctl,write,read函数的使用弄懂了
- findContours 函数 hierarchy轮廓的层级关系终于弄懂了
- open/read/write (终于写的长了一点。。。)
- 终于把枷锁给弄懂了
- 终于弄懂了聊天室的各种技术了
- redhat linux上的samba服务器配置(成功了的,找了好久好久,终于解决了,)
- 关于汇编里面的PTR--天哪,终于弄懂了
- DC?设备上下文?怎么翻译的。。。终于弄懂了。
- [转]堆和栈的区别,终于弄懂了:-)
- 终于弄懂了晦涩难懂的条件锁-condition lock
- 终于弄懂了晦涩难懂的条件锁-condition lock
- linux驱动中ioctl函数的使用
- linux c/c++ write() read () 函数的使用
- 把hog的特征个数弄懂了一点
- 尝试注册好久的CSDN,终于成功了
- Linux -C 的read 和 write函数
- Linux -C 的read 和 write函数
- Linux下的read,write函数
- 反64进制的C#代码
- 反64进制的C#代码
- linux shell 变数的设定规则
- QQ2011在Windows系统下安装失败
- technical articles
- 摸了好久,终于把linux中i2c的ioctl,write,read函数的使用弄懂了
- Hibernate的学习总结(容器映射)
- Linux网络编程socket错误分析
- C/C++命名规则
- Access数据库中“所有记录中均未找到搜索关键字”的解决方法
- Neural Network Concept神经网络(一)
- 基于自定义属性的Web客户端统一验证JavaScript函数库组件(ChkInputs)概述--已开源并附开源地址
- (Interrupt Latency) 中断延迟
- 设计模式解析