IIC协议

1.概述

I2c两线式串行总线,用于连接微控制器和外围设备,属于半双工通信。只通过SDA传输数据,SCL是时钟线。

2.特点及构成

(1)特点:
1.简单和有效性
传输速率10kb/s支持40个组件
2.多主控
任何设备都可以成为总主线通过SDA传输数据,但同一时间只能有一个主控。
(2)构成:
IIC由两个信号线,一个是SDA双向数据线,另一个是SCL时钟线,时钟信号由主控器件产生所有接到IIC总线设备上的串行数据线SDA都接到总线的SDA上,各个设备的时钟线SCL都接到总线的SCL上,对于并联到一条总线上的每个IC都有唯一地址。

3.信号类型

IIC总线在传输过程中一共有三种信号类型 起始信号  结束信号  应答信号(串口有:起始位,停止位,数据位 ,速度)
起始信号是必须的
起始信号:SCL高电平,SDA由高电平变为低电平。
结束信号: SCL高电平,SDA由低电平变为高电平

在这里插入图片描述

应答信号:发送器每发送一个字节,就在时钟脉冲9期间释放数据线,由接收器反馈一个应答号。应答信号是低电平时规定为有效应答(ACK简称应答位),表示接收器已经成功接受到了该字节。应答信号是高电平时规定为非应答位(NACK),一般表示没有接收到该字节。

在这里插入图片描述

3.如何传输一个字节

如何发送给一个字节?
在数据传输过程中SCL在高电平期间不允许SDA数据改变,要么0要么1。SDA数据翻转是在SCL低电平期间。SCL为高电平时说明在发送数据。 SCL为低电平说明SDA在为发送数据做准备,传输数据是一bit一bit的传输。每传输一个字节(8bit)接收器反馈应答信号。

在这里插入图片描述

void IIC_Send_Byte(char dataSend)
{
	int i;
	for(i = 0;i<8;i++){
		scl = 0;//scl拉低,让sda做好数据准备
		sda = dataSend & 0x80;//1000 0000获得dataSend的最高位,给sda
		_nop_();//发送数据建立时间
		scl = 1;//scl拉高开始发送
		_nop_();//数据发送时间
		scl = 0;//发送完毕拉低
		_nop_();//
		dataSend = dataSend << 1;//向左移动1bit给SDA继续传输数据
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值