用s5pc100的GPIO模拟IIC

本文详细介绍了如何使用s5pc100的GPIO模拟IIC总线,包括IIC总线的基本特性、信号类型、数据传输格式以及模拟IIC时序的具体步骤。通过示例代码展示了如何生成起始和结束信号,发送和接收数据,以及发送和获取ACK信号。最后,给出了读取LM75传感器温度值的实例。
摘要由CSDN通过智能技术生成

用s5pc100的GPIO模拟IIC

一、IIC总线介绍

 

IIC(Inter-Integrated Circuit,又称IIC)总线是一种由PHILIPS公司开发的串行总线,用于连接微控制器及其外围设备,它具有如下特点。

 

(1)只有两条总线线路:一条串行数据线(SDA),一条串行时钟线(SCL)

(2)每个连接到总线的器件都可以使用软件根据它的唯一的地址来识别

(3)传输数据的设备间是简单的主/从关系

(4)主机可以用作主机发送器或主机接收器

(5)它是一个真正的多主机总线,两个或多个主机同时发起数据传输时,可以通过冲突检测和仲裁来防止数据被破坏

(6)串行的8位双向数据传输,位速率在标准模式下可达100kbit/s,在快速模式下可达400kbit/s,在高速模式下可达3.4Mbit/s

注意:当多个主机试图去控制总线时,通过仲裁可以使得只有一个主机获得总线控制权,并且它传输的信息不被破坏

二、IIC总线的信号类型

IIC总线在传送数据过程中共有3种类型信号:开始信号、结束信号和响应信号

(1)开始信号(S):SCL 为高电平时,SDA由高电平向低电平跳变,开始传送数据

(2)结束信号(P):SCL为高电平时,SDA由低电平向高电平跳变,结束传送数据

(3)响应信号(ACK):接收器在接收到8位数据后,在第9个时钟周期,拉低SDA电平

注意:SDA上传输的数据必须在SCL为高电平期间保持稳定,SDA上的数据只能在SCL为低电平期间变化

三、IIC总线的数据传输格式

 

发送到SDA线上的每个字节必须是8位的,每次传输可以发送的字节数量不受限制。首先传输的是数据的最高位(MSB)。

 

启动一个传输时,主机先发送S信号,然后发出8位数据。这8位数据中前7位为从机的地址,第8位表示传输的方向(0表示写操作,1表示读操作)。从机收到后会发出一个ACK信号.

注意:主机接收器在接收到最后一个字节后,也不会发出ACK信号。于是,从机发送器释放SDA线,以允许主机发出P信号结束传输.

 

三、用GPIO模拟IIC总线时序

 

通过前面的介绍,我们已经了解了IIC总线。下面我们将用2个pin来模拟IIC的总线时序,来读取稳定传感器LM75的测量的温度。

 

先来看看LM75硬件的上的连线:

其中I2C_SDA0是数据线,I2C_SCL0是时钟线,它们分别接到s5pc100的GPD3和GPD4,如下图所示

在模拟IIC的时候,用GPD3引脚发送数据或读取数据,用GPD4引脚提供时钟信号即可。

由于s5pc100的GPD这一组的引脚很多,不好单独对其中的某一个引脚操作,为了能单独对其中的某一个管脚单独操作,这里使用了C语言的位域。

typedef struct

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值