发新帖我要提问
12
返回列表
打印
[MCU]

请教简单快速理解I2C原理

[复制链接]
楼主: guojihongwhpu1
手机看帖
扫描二维码
随时随地手机跟帖
21
弄清楚时序就好,不用懂原理

使用特权

评论回复
22
diweo| | 2016-8-5 20:58 | 只看该作者
guojihongwhpu1 发表于 2016-8-5 11:45
请问下SCL和SDA有什么逻辑关吗?还是相互独立控制的?

如果是软件模拟的话就是独立控制,那么就是用2个GPIO口,一个作SCK,另一个作SDA。当SCK为低的时候,SDA可以变化,然后再置SCK为高。这个里面时间间隔是可长可短的。
严格来说,当SCK变低后,SDA要经过一段时间才能变,然后再经过一段时间SCK才能变高。还有一些别的约束关系。这就是时序。不过,一般来说都满足的,所以不用考虑太多。

硬件的话,设置好相应寄存器就行了,不用搞太清楚也能通起来。

使用特权

评论回复
23
guojihongwhpu1|  楼主 | 2016-8-7 12:27 | 只看该作者
diweo 发表于 2016-8-5 20:58
如果是软件模拟的话就是独立控制,那么就是用2个GPIO口,一个作SCK,另一个作SDA。当SCK为低的时候,SDA可 ...

好的,谢谢,SCK为低,SDA可以变化是表示可以传送数据是不是?

使用特权

评论回复
24
guojihongwhpu1|  楼主 | 2016-8-7 12:28 | 只看该作者
dirtwillfly 发表于 2016-8-5 17:32
弄清楚时序就好,不用懂原理

谢谢,我觉得直接用带I2C接口的比较好些

使用特权

评论回复
25
guojihongwhpu1|  楼主 | 2016-8-7 12:28 | 只看该作者
changle11sdo5 发表于 2016-8-5 17:17
我都是用普通io口模拟I2C通信,一看代码就明白了

能发一个你觉得比较好理解的代码吗?谢谢

使用特权

评论回复
26
Liang118038| | 2016-8-7 12:55 | 只看该作者
I2C其实蛮简单的,就两根线,一个数据一个时钟线(数据就按时钟线的时序发出就可以),反正由主机发起通讯,每次发送一个字(8位)+地址码,接收端自动核对地址,地址一致就处理数据,地址不一致直接忽略掉。接收完成后回复应答信号就可以了。具体时序看手册就行了.

使用特权

评论回复
27
dirtwillfly| | 2016-8-7 17:02 | 只看该作者
guojihongwhpu1 发表于 2016-8-7 12:28
谢谢,我觉得直接用带I2C接口的比较好些

mcu带的iic模块,用起来和iic原理关系不大

使用特权

评论回复
28
guojihongwhpu1|  楼主 | 2016-8-7 20:41 | 只看该作者
Liang118038 发表于 2016-8-7 12:55
I2C其实蛮简单的,就两根线,一个数据一个时钟线(数据就按时钟线的时序发出就可以),反正由主机发起通讯 ...

好像是这样的,我今天去书城看书了 ,差不多是这样的

使用特权

评论回复
29
清风致影| | 2016-8-8 08:49 | 只看该作者
搞得这么复杂  2根线  一根告诉对方我要发数据 发指令了  一根是告诉对方发什么数据指令  

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则