学习IIC 通信

IIC细则介绍

IIC通信详解
IIC通信协议
I2C通信协议(二)

1.IIC设备发送顺序

设备发送顺序

2. AT24C02芯片 时序时间表

在这里插入图片描述

3.IIC时序图(读写)

在这里插入图片描述

4.IIC开始位和停止位

在这里插入图片描述

代码编写完全按照此图时序 查看详细转置 3.IIC时序图(读写)

4.1 IIC开始位和停止位代码

/******************************************************************************/
// 函数名称:iic_start
// 输入参数:无
// 输出参数:无
// 函数功能:iic开始位
// 晶振频率:11.0592M
/******************************************************************************/

void iic_start()
{
	SDA=1;    
	SCL=1;
	_nop_();
	SDA=0;
	_nop_();
}

/******************************************************************************/
// 函数名称:iic_stop
// 输入参数:无
// 输出参数:无
// 函数功能:iic停止位
// 晶振频率:11.0592M
/******************************************************************************/

void iic_stop()
{
	SDA=0;
	SCL=1;
	_nop_();
	SDA=1;
	_nop_();
}

5.IIC设备应答位(有应答)

在这里插入图片描述

相当于读IIC设备一个bit位循环,循环8次读一个字节

5.1 IIC设备应答位(有应答)代码

/******************************************************************************/
// 函数名称:iic_ack
// 输入参数:无
// 输出参数:无
// 函数功能:应答位
// 晶振频率:11.0592M
/******************************************************************************/

bit iic_ack()
{
	bit flag;
	SCL=0;
	SDA=1;
	_nop_();
	_nop_();
	SCL=1;
	_nop_();
	flag=SDA;
	SCL=0;
	_nop_();
	return flag;
}

6.IIC写一个字节

在这里插入图片描述

6.1 IIC写一个字节代码

/******************************************************************************/
// 函数名称:iic_write_byte
// 输入参数:bit位 从高位往底位写入
// 输出参数:无
// 函数功能:iic写一个字节
// 晶振频率:11.0592M
/******************************************************************************/

void iic_write_byte(uint8 iictada)
{
	uint8 i;
	for(i=0;i<8;i++)
	{
		SCL=0;
		if(iictada&0x80)SDA=1;
			else SDA=0;
		_nop_();
		SCL=1;
		_nop_();
		SCL=0;
		_nop_();
		iictada <<=1;
	}		
}

7.操作IIC设备写入

/******************************************************************************/
// 函数名称:iic_send
// 输入参数:无
// 输出参数:无
// 函数功能:iic_device设备地址(最后一位0读命令 1为写命令)iic_word(设备命令)
// iic_data要发送的数据
// 晶振频率:11.0592M
/******************************************************************************/

void iic_send(uint8 iic_device,uint8 iic_word,uint8 iic_data)
{
	iic_start();
	iic_write_byte(iic_device);
	iic_ack();
	iic_write_byte(iic_word);
	iic_ack();
	iic_write_byte(iic_data);
	iic_ack();
	iic_stop();
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值