STM32模拟iic驱动eeprom24c128

2020-05-01 10:29

STM32模拟iic驱动eeprom24c128

void IIC_Init(void) {

//IIC初始化函数

GPIO_InitTypeDefGPIO_InitStructure;

RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOE,

//使能GPIOB时钟

ENABLE);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2|GPIO_Pin_3; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;

//推挽输出

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOE, &GPIO_InitStructure); GPIO_SetBits(GPIOE,GPIO_Pin_2|GPIO_Pin_3);

//PE2,PE3 输出高 }

void IIC_Start(void) {

SDA_OUT(); //sda线输出 IIC_SDA=1; IIC_SCL=1; delay_us(5);

IIC_SDA=0;//START:when CLK is high,DATA change form

//IIC开始函数

high to low

delay_us(5);

IIC_SCL=0;//钳住I2C总线,准备发送或接收数据

}

void IIC_Stop(void)//IIC停止函数 {

SDA_OUT();//sda线输出 IIC_SCL=0;

IIC_SDA=0;//STOP:when CLK is high DATA change form

low to high }

u8 IIC_Wait_Ack(void) {

u8 ucErrTime=0;

SDA_IN(); //SDA设置为输入 IIC_SDA=1; delay_us(5); IIC_SCL=1;

//等待应答

delay_us(5); IIC_SCL=1;

IIC_SDA=1;//发送I2C总线结束信号 delay_us(5);

}

delay_us(1); while(READ_SDA) { }

IIC_SCL=0;//时钟输出0 return 0; ucErrTime++; if(ucErrTime>250) { }

IIC_Stop(); return 1;

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;

//IIC发送一个字节

}

void IIC_Send_Byte(u8 txd) { u8 t;

SDA_OUT();

//数据线输出模式

IIC_SCL=0;//拉低时钟开始数据传输 for(t=0;t<8;t++) {

IIC_SDA=(txd&0x80)>>7; txd<<=1;

delay_us(5); //对TEA5767这三个延时都是必须的 IIC_SCL=1;

delay_us(5); IIC_SCL=0; delay_us(5);

} }

u8 IIC_Read_Byte(unsigned char ack)//IIC读取一个字节 {

unsigned char i,receive=0; SDA_IN();//SDA设置为输入

for(i=0;i<8;i++ ) {

IIC_SCL=0; delay_us(5);

IIC_SCL=1;

receive<<=1; if(READ_SDA) { }

delay_us(5);

receive++;

}

if (!ack)


STM32模拟iic驱动eeprom24c128.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:装饰装修鲁班奖策划统一做法 - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: