ARM的IIC
来源:互联网 发布:mac obs 插件 编辑:程序博客网 时间:2024/05/17 02:18
#define GPD1CON (*(volatile unsigned int *)0xE02000C0)#define I2CCON0 (*(volatile unsigned int *)0xE1800000)#define I2CDS0 (*(volatile unsigned int *)0xE180000C)#define I2CSTAT0 (*(volatile unsigned int *)0xE1800004)void i2c_init(void){ /*1.设置GPIO控制为i2c*/ GPD1CON &= ~(0xff << 0); GPD1CON |= (0x22 << 0); /*2.开启中断,设置时钟*/ I2CCON0 = 0xe0;}/*读数据操作*/void i2c_atc24c0_read(unsigned char addr,char *data){ /*********第一阶段**************/ /*1.装载i2c设备地址*/ I2CDS0 = 0xa0; /*2.设置主机为发送模式,发送START信号*/ I2CSTAT0 = 0xf0; /*3.等待接收ACK校验,判断I2CCON0的第四位是否为1(有中断发生)*/ while(!(I2CCON0 & (0x1 << 4))); /*4.清楚标记,恢复操作*/ I2CCON0 &= ~(0x1 << 4); /*********第二阶段**************/ /*5.发送read设备的地址*/ I2CDS0 = addr; while(!(I2CCON0 & (0x1 << 4))); //等待接收ACK校验 I2CCON0 &= ~(0x1 << 4); //清楚标记,恢复操作 /*********第三阶段**************/ /*6.装载从机的设备地址(片内地址)*/ I2CDS0 = (0xa0 | (0x1 << 0)); /*7.设置主机为接收模式,发送START信号*/ I2CSTAT0 = 0xb0; while(!(I2CCON0 & (0x1 << 4))); //等待接收ACK校验 I2CCON0 &= ~((0x1 << 4) | (0x1 << 7)); //清楚标记,恢复操作 /*********第四阶段**************/ while(!(I2CCON0 & (0x1 << 4))); //等待接收ACK校验 *data = I2CDS0; I2CCON0 &= ~(0x1 << 4); //清楚标记,恢复操作 /*8.发送stop信号*/ I2CSTAT0 = ~(0x1 << 5);}/*写操作*/void i2c_atc24c0_write(unsigned char addr,char data){ /**********第一阶段**********/ /*1.装载设备地址*/ I2CDS0 = 0xa0; /*2.主机设置为发送模式,发送START信号*/ I2CSTAT0 = 0xf0; /*3.等待接收ACK校验,判断I2CCON0的第四位是否为1(有中断发生)*/ while(!(I2CCON0 & (0x1 << 4))); /*4.清楚标记,恢复操作*/ I2CCON0 &= ~(0x1 << 4); /**********第二阶段**********/ /*5.主机发送写入的地址*/ I2CDS0 = addr; while(!(I2CCON0 & (0x1 << 4))); //等待接收ACK校验 I2CCON0 &= ~(0x1 << 4); //清楚标记,恢复操作 /**********第三阶段**********/ /*6.主机发送数据*/ I2CDS0 = data; while(!(I2CCON0 & (0x1 << 4))); //等待接收ACK校验 I2CCON0 &= ~(0x1 << 4); //清楚标记,恢复操作 /*8.发送stop信号*/ I2CSTAT0 = ~(0x1 << 5);}
0 0
- ARM的IIC
- IIC协议接口在ARM系统下的操作
- ARM中IIC总线的上拉电阻和总线速率的关系
- ARM学习笔记--IIC总线接口
- IO口模拟ARM系列IIC通讯
- IIC总线的研究
- atmel7s256 的IIC程序
- STM32的IIC
- 关于IIC的学习
- IIC的疑惑
- IIC的linux驱动
- IIC的linux驱动
- DSP 的IIC控制
- s3c2440的IIC控制
- ARM9的IIC
- IIC 驱动的注册
- IIC的应用
- IIC的工作原理
- 关于java的二三事
- RSA密钥生成指数和模
- 使用myeclipse高版本时打开编辑jsp卡住假死解决方法
- 使用Palette类提取图片的颜色信息
- csu 1755 阶数(欧拉函数)
- ARM的IIC
- 协议栈数据发送
- spring mvc mybatis 整合
- python—解决“Unable to find vcvarsall.bat”错误
- SQL——JDBC的介绍
- 反射类方法
- 汉诺塔游戏
- 2016.8.10
- 关于图片边距和尺寸问题的几个实用方法