//**********************************************************
//IIC初始化函数*********************************************
void IIC_Init(void)
{
I2C_FREQR = 0B00000100;//fCK=4MHZ
I2C_OARH = 0B01000000;//ADDCONF需置1
I2C_OARL = 0B00000000;//7位地址模式
I2C_ITR = 0B00000000;//中断
I2C_CCRH = 0B00000000;//标准IIC模式,设fSCL=100KHZ=>tSCL=10uS,fCK=4MHZ
I2C_CCRL = 0B00010100;//tSCL=tCK*CCR*2=0.25uS*20*2=10uS
I2C_TRISER = 0B00000010;//最大上升时间(300nS标准模式)tCK=250nS=tPCLK1
//则TRISE须写入0x02=300nS/250nS + 1
I2C_CR2 |= 0B00000100;//使能ACK应答SWRST位清0则IIC模块不进行复位
//设ACK位控制当前移动字节的应答/不应答
I2C_CR1 |= 0B00000001;//使能IIC模块
}
/*
函数名:写24C系列函数
入口参数:addr->存储地址设定
data->要存储的数据
出口参数:无
*/
void write_24cxx (unsigned char addr,unsigned char data)
{
unsigned char clear;
while(I2C_SR3 & 0x02); //检测总线空闲
I2C_CR2 |= 0x01; //产生起始位
while(!(I2C_SR1 & 0x01));//检测起始位发送完成SB位为1则为完成
I2C_DR = 0xa0; //写24cxx的地址清SB位
while(!(I2C_SR1 & 0x02));//ADDR位为1则为24cxx收到匹配地址
本内容试读结束,登录后可阅读更多
下载后可阅读完整内容,剩余2页未读,立即下载