STM32模拟iic驱动eeprom24c128

上传人:H*** 文档编号:812468 上传时间:2017-05-15 格式:DOCX 页数:9 大小:15.36KB
返回 下载 相关 举报
STM32模拟iic驱动eeprom24c128_第1页
第1页 / 共9页
STM32模拟iic驱动eeprom24c128_第2页
第2页 / 共9页
STM32模拟iic驱动eeprom24c128_第3页
第3页 / 共9页
STM32模拟iic驱动eeprom24c128_第4页
第4页 / 共9页
STM32模拟iic驱动eeprom24c128_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《STM32模拟iic驱动eeprom24c128》由会员分享,可在线阅读,更多相关《STM32模拟iic驱动eeprom24c128(9页珍藏版)》请在金锄头文库上搜索。

1、STM32 模拟 iic 驱动 eeprom24c128void IIC_Init(void) /IIC 初始化函数 GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOE, ENABLE); /使能 GPIOB 时钟GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2|GPIO_Pin_3;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; /推挽输出GPIO_InitStructure.GPIO_Speed =

2、GPIO_Speed_50MHz;GPIO_Init(GPIOE, &GPIO_InitStructure);GPIO_SetBits(GPIOE,GPIO_Pin_2|GPIO_Pin_3); /PE2,PE3 输出高void IIC_Start(void) /IIC 开始函数SDA_OUT(); /sda 线输出IIC_SDA=1; IIC_SCL=1;delay_us(5);IIC_SDA=0;/START:when CLK is high,DATA change form high to low delay_us(5);IIC_SCL=0; /钳住 I2C 总线,准备发送或接收数据 v

3、oid IIC_Stop(void) /IIC 停止函数SDA_OUT();/sda 线输出IIC_SCL=0;IIC_SDA=0;/STOP:when CLK is high DATA change form low to highdelay_us(5);IIC_SCL=1; IIC_SDA=1;/发送 I2C 总线结束信号delay_us(5); u8 IIC_Wait_Ack(void) /等待应答u8 ucErrTime=0;SDA_IN(); /SDA 设置为输入 IIC_SDA=1;delay_us(5); IIC_SCL=1;delay_us(1); while(READ_SDA

4、)ucErrTime+;if(ucErrTime250)IIC_Stop();return 1;IIC_SCL=0;/时钟输 出 0 return 0; void IIC_Ack(void) /SDA 输出低电平,IIC 应答IIC_SCL=0;SDA_OUT();IIC_SDA=0;delay_us(2);IIC_SCL=1;delay_us(4);IIC_SCL=0;void IIC_NAck(void) /SDA 输出高电平,IIC 非应答IIC_SCL=0;SDA_OUT();IIC_SDA=1;delay_us(2);IIC_SCL=1;delay_us(4);IIC_SCL=0;

5、void IIC_Send_Byte(u8 txd) /IIC 发送一个字节 u8 t; SDA_OUT(); /数据 线输出模式 IIC_SCL=0; /拉低 时钟开始数据传输for(t=0;t7;txd8);/发送高地址IIC_Wait_Ack(); IIC_Send_Byte(ReadAddr%256); /发送低地址IIC_Wait_Ack(); IIC_Start(); IIC_Send_Byte(0XA1); /进入接收模式 IIC_Wait_Ack(); temp=IIC_Read_Byte(0); IIC_Stop(); /产生一个停止条件 return temp;void A

6、T24CXX_WriteOneByte(u16 WriteAddr,u8 DataToWrite) IIC_Start(); IIC_Send_Byte(0XA0); /发送写命令IIC_Wait_Ack();IIC_Send_Byte(WriteAddr8);/发送高地址IIC_Wait_Ack(); IIC_Send_Byte(WriteAddr%256); /发送低地址IIC_Wait_Ack();IIC_Send_Byte(DataToWrite); /发送字节IIC_Wait_Ack();IIC_Stop();/产生一个停止条件 delay_ms(20); u8 AT24CXX_Ch

7、eck(void)u8 temp;temp=AT24CXX_ReadOneByte(12333);/避免每次开机都写AT24CXX if(temp=0X55)return 0;else/排除第一次初始化的情况AT24CXX_WriteOneByte(12333,0X55);temp=AT24CXX_ReadOneByte(12333); if(temp=0X55)return 0;return 1; void AT24CXX_Read(u16 ReadAddr,u8 *pBuffer,u16 NumToRead)while(NumToRead)*pBuffer+=AT24CXX_ReadOneByte(ReadAddr+);NumToRead-; void AT24CXX_Write(u16 WriteAddr,u8 *pBuffer,u16 NumToWrite)while(NumToWrite-)AT24CXX_WriteOneByte(WriteAddr,*pBuffer);WriteAddr+;pBuffer+;BY MaiLaoDie

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号