I2C分析及RX8025驱动编写
一、 I2C
1. I2C概要
I2C总线由SDA和SCL构成的2线式双向通信,通过组合这2个信号,进行通信的开始/停止/数据传送/应答等接收信号。
非通信时:SDA、SCL都保持高电平。
通信的开始和结束通过SCL处于高电平,切上升或者下降SDA来控制。
数据的传送及发送信号时的SDA线上的数据变更在SCL线低电平区间进行,接收信号侧在SCL线处于高电平区间进行读取数据,任何情况下,都在SCL线的每一计时器脉冲以1bit逐步进行。
I2C总线的器件没有通常的逻辑器件所具有的芯片选择引脚,代之以对的是器件分配从地址,当接收器的从地质与选择从地址一致时,开始通信。
2. I2C通信的开始和停止
3、I2C数据的传送
4、I2C数据的应答
5、从地址
6、写时序
7、读时序(RX8025官网资料中的读时序是错误的,经过测试,下图中的时序是正确的)
二、I2C及RX8025AC驱动
#include "myiic.h"
#include "delay.h"void Delayus(u16 us){u16 i;for(i=0;i<us;i++)__nop();}void IIC_Init(void)
{ GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB, ENABLE ); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP ; //ÍÆÍìÊä³öGPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;GPIO_Init(GPIOB, &GPIO_InitStructure);
// GPIO_SetBits(GPIOB,GPIO_Pin_6|GPIO_Pin_7); //PB6,PB7 Êä³ö¸ß
}void IIC_Start(void)
{SDA_OUT(); SCL_1SDA_1Delayus(10);SDA_0Delayus(10);SCL_0 Delayus(10);} void IIC_Stop(void)
{u8 i;SDA_OUT();//sdaÏßÊä³öSDA_0Delayus(10);SCL_1Delayus(10);SDA_1for(i=0;i<5;i++){Delayus(10);}
}u8 IIC_Wait_Ack(void)
{u8 ucErrTime=0;SDA_IN(); //SDAÉèÖÃΪÊäÈë Delayus(10); Delayus(10);while(READ_SDA){ucErrTime++;if(ucErrTime>250){IIC_Stop();return 1;}}SCL_0//ʱÖÓÊä³ö0 return 0;
} void IIC_Ack(void)
{SDA_OUT();SDA_0;Delayus(10);SCL_1Delayus(10);SCL_0Delayus(10);
}void IIC_NAck(void)
{SDA_OUT();SDA_1;Delayus(10);SCL_1Delayus(10);SCL_0Delayus(10);
} void IIC_Send_Byte(u8 txd)
{ u8 i;SDA_OUT();for(i=0;i<8;i++){if(txd & 0x80) SDA_1else SDA_0txd <<= 1;Delayus(10);SCL_1Delayus(10);SCL_0 }Delayus(10);SCL_1Delayus(10);SCL_0
} u8 IIC_Read_Byte(unsigned char ack)
{u8 i,receive=0;SDA_IN();//SDAÉèÖÃΪÊäÈëfor(i=0;i<8;i++){SCL_1Delayus(10);receive <<=1;if(READ_SDA) receive |= 0x01;SCL_0Delayus(10);}SDA_OUT();return receive;}void R8025AC_Read(u8 sadd, u8 *buf, u8 len)
{u8 i;IIC_Start();IIC_Send_Byte(0x64);IIC_Send_Byte(sadd<<4|0x01);IIC_Start();IIC_Send_Byte(0x65);for(i=0;i<len-1;i++){buf[i] = IIC_Read_Byte(1);IIC_Ack();}buf[i] = IIC_Read_Byte(0);IIC_NAck();IIC_Stop();
}void R8025AC_Write(u8 sadd,u8 *buf,u8 len)
{u8 i;IIC_Start();IIC_Send_Byte(0X64);IIC_Send_Byte(sadd<<4);for(i=0;i<len;i++){IIC_Send_Byte(buf[i]);}IIC_Stop();
}
I2C分析及RX8025驱动编写相关推荐
- tmd26353接近传感器之i2c驱动编写
一.tmd26353驱动编写思路: 基于i2c设备驱动框架,首先参考原理图配置dts设备树,挂载在哪个i2c总线下面,阅读规格书去确定此器件的器件地址是0x39(也可以使用i2ctools查看器件挂载 ...
- Linux I2C设备驱动编写(二)
I2C对外API I2C client的注册 i2c_register_board_info具体实现 i2c_new_device I2C driver 关于I2C设备驱动的小总结 I2C adapt ...
- Linux I2C总线(二)I2C设备驱动编写方法
Linux I2C总线 Linux I2C总线(一)I2C驱动框架 Linux I2C总线(二)I2C设备驱动编写方法 Linux I2C总线(二)I2C设备驱动编写方法 文章目录 Linux I2C ...
- I2C之RX-8025驱动
AM3354板卡上RX-8025接到了I2C0总线下,添加RX-8025驱动步骤,采用的TI提供的4.1.1的android版本,未采用设备树方式: 1.在board-am335xevm.c中增加RX ...
- linux驱动之i2c子系统mpu6050设备驱动
以下是mpu6050简单的驱动实现,mpu6050是I2C接口的6轴传感器,可以作为字符设备注册到内核,本代码运行环境是3.4.2内核,4.3.2版本的编译链,12.04版本的Ubuntu,硬件环境是 ...
- 【Linux驱动】I2C子系统与触摸屏驱动
由于学习触摸屏驱动涉及到中断以及I2C相关的知识,因此先介绍一下I2C的驱动框架. 触摸屏与I2C总线的关系 关于I2C的基础概念和原理参考我的这篇博客:[裸机]嵌入式相关问题汇总(二.I2C通信概念 ...
- v4l2驱动编写篇【转】
转自:http://blog.csdn.net/michaelcao1980/article/details/53008418 大部分所需的信息都在这里.作为一个驱动作者,当挖掘头文件的时候,你可能也 ...
- linux编写gpio驱动程序,linux driver ------ GPIO的驱动编写和调用
判断哪些文件被编译进内核: 1.通过 make menuconfig 查看 2.比如查看gpio类型的文件,输入 ls drivers/gpio/*.o,有生成.o文件表示被编译进内核 在编写驱动程序 ...
- 【基于Linux系统设备树的SPI驱动编写方法】
文章目录 前言 一.SPI驱动编写 1.修改设备树 a.设备树文件是什么? b.设备树怎么改? 2.编写驱动 二.完善和测试 1.编译和应用程序 a.编译 && 拷贝到开发板命令 ...
- linux摄像头教程,linux 摄像头驱动编写方法教程
从某个角度来说,摄像头是各个厂家主打的应用功能.那么,linux是如何支持摄像头的,我们可以来看一下?本篇文章主要介绍了详解linux 摄像头驱动编写,小编觉得挺不错的,现在分享给大家,也给大家做个参 ...
最新文章
- c++ primer 笔记[20190406]
- SQL对象名无效怎么办法 华骨龙
- Android学习网站
- 程序员的奋斗史(二)——今天你跑步了吗
- quartz 两次执行问题
- foreach循环怎么获取全部返回值_PHP跳出循环的方法语句有哪些
- 小学生也能看懂的ArrayList底层原理
- 阶段3 2.Spring_05.基于XML的IOC的案例1_1 基于XML的IOC的案例-案例准备
- Java加密方式(AES,DES,RSA,DSA,MD5)
- IEC 60730-1-2020.最新原版,可复制文字 : 家用自己设备自动电气控制 - 第 1 部分:一般要求
- Xshell v6 Build 0193 绿色特别版及全套产品
- 【video】视频压缩编码和音频压缩编码的基本原理
- 线性可分支持向量机与软间隔最大化
- ndows 资源管理器,windows资源管理器已停止工作怎么解决
- Android视频播放器ExoPlayer
- Excel数据快速收集工具
- 详解java的垃圾清理机制
- Java-对象头详解
- 常用的嵌入式硬件通信接口协议(UART、IIC、SPI、RS-232、RS-485、RS-422、CAN、USB、IRDA)(二)
- 2016猴年春联集锦