日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]1、數(shù)量:I2C1與I2C22、時(shí)鐘: RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1 |RCC_APB1Periph_I2C2,ENABLE); 3、IO配置為開(kāi)漏輸出,在輸入時(shí)亦可讀取,此處使用功能復(fù)用。RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIO

1、數(shù)量:I2C1與I2C2

2、時(shí)鐘: RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1 |RCC_APB1Periph_I2C2,ENABLE);

3、IO配置為開(kāi)漏輸出,在輸入時(shí)亦可讀取,此處使用功能復(fù)用。

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO,ENABLE );

RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1,ENABLE);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_OD;

GPIO_Init(GPIOB, &GPIO_InitStructure);

4、IIC本身配置

I2C_InitStructure.I2C_Mode = I2C_Mode_I2C ; //配置為普通IIC模式

I2C_InitStructure.I2C_DutyCycle = I2C_DutyCycle_2;

I2C_InitStructure.I2C_OwnAddress1 = 0x0a; //自身設(shè)備地址

I2C_InitStructure.I2C_Ack = I2C_Ack_Enable; //使能自動(dòng)應(yīng)答

I2C_InitStructure.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit;

I2C_InitStructure.I2C_ClockSpeed = 5000; //40K的速度?

I2C_Init(I2C1, &I2C_InitStructure);

I2C_Cmd(I2C1,ENABLE);

I2C_AcknowledgeConfig(I2C1, ENABLE);

5、IIC讀取一個(gè)字節(jié):生成一個(gè)起始信號(hào)-》發(fā)送命令碼-》等待信號(hào)-》發(fā)送地址-》發(fā)送起始信號(hào)-》發(fā)送讀取命令-》接收數(shù)據(jù)-》發(fā)送發(fā)送終止信號(hào)-》讀取寄存器接收值 么一步都有應(yīng)答信號(hào),是從設(shè)備發(fā)送的一個(gè)低信號(hào)。

vu8 IIC_Read(vu8 addr)

{

vu8 dataValue;

while(I2C_GetFlagStatus(I2C1,I2C_FLAG_BUSY));

I2C_GenerateSTART(I2C1,ENABLE);//起始信號(hào)

while(!I2C_CheckEvent(I2C1,I2C_EVENT_MASTER_MODE_SELECT));

I2C_Send7bitAddress(I2C1,ATMADDR,I2C_Direction_Transmitter);//發(fā)送設(shè)備地址+寫(xiě)信號(hào)

while(!I2C_CheckEvent(I2C1,I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED));//

I2C_Cmd(I2C1,ENABLE);

I2C_SendData(I2C1,addr);//發(fā)送存儲(chǔ)單元地址,從0開(kāi)始

while(!I2C_CheckEvent(I2C1,I2C_EVENT_MASTER_BYTE_TRANSMITTED));

I2C_GenerateSTART(I2C1,ENABLE);//起始信號(hào)

while(!I2C_CheckEvent(I2C1,I2C_EVENT_MASTER_MODE_SELECT));

I2C_Send7bitAddress(I2C1,ATMADDR,I2C_Direction_Receiver);//發(fā)送設(shè)備地址+讀信號(hào)

while(!I2C_CheckEvent(I2C1,I2C_EVENT_MASTER_RECEIVER_MODE_SELECTED));

I2C_AcknowledgeConfig(I2C1,DISABLE);

I2C_GenerateSTOP(I2C1,ENABLE);

while(!(I2C_CheckEvent(I2C1,I2C_EVENT_MASTER_BYTE_RECEIVED)));

dataValue=I2C_ReceiveData(I2C1);//讀出寄存器數(shù)據(jù)

return dataValue;

}

6、寫(xiě)一個(gè)字節(jié):產(chǎn)生起始信號(hào)-》發(fā)送設(shè)備號(hào)+指令-》發(fā)送地址-》產(chǎn)生起始信號(hào)-》讀取數(shù)據(jù)-》產(chǎn)生結(jié)束信號(hào)

void IIC_Write(vu8 addr,vu8 dataValue)

{

I2C_GenerateSTART(I2C1,ENABLE);

while(!I2C_CheckEvent(I2C1,I2C_EVENT_MASTER_MODE_SELECT));

I2C_Send7bitAddress(I2C1,ATMADDR,I2C_Direction_Transmitter);

while(!I2C_CheckEvent(I2C1,I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED));

I2C_SendData(I2C1,addr);

while(!I2C_CheckEvent(I2C1,I2C_EVENT_MASTER_BYTE_TRANSMITTED));

I2C_SendData(I2C1,dataValue);

while(!I2C_CheckEvent(I2C1,I2C_EVENT_MASTER_BYTE_TRANSMITTED));

I2C_GenerateSTOP(I2C1,ENABLE);

}

7、AT24C02相關(guān)

2K大小:256*8bits 也就是256頁(yè),每頁(yè)8個(gè)bits

地址從0x00開(kāi)始到0xff個(gè)字節(jié)


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉