STM32的硬件I2C的收发

leaf666666 2017-07-19 09:29:20
STM32的硬件I2C的接口怎么在同一接口上进行数据的接收和发送?主机可以收发,从机也可以收发在同一接串口上?
...全文
703 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
李伯特 2017-08-20
  • 打赏
  • 举报
回复


以上是I2C协议的时序图,I2C串行总线一般有两根信号线,一根是双向(收发一体)的数据线SDA,另一根是时钟线SCL。所有接到I2C总线设备上的串行数据SDA都接到总线的SDA上,各设备的时钟线SCL接到总线的SCL上。
I2C是一种主从式协议,总线上允许连接多个微处理器以及各种外围设备,为了保证数据可靠地传送,任一时刻总线只能由某一台主机控制,各微处理器应该在总线空闲时发送启动数据,为了妥善解决多台微处理器同时发送启动数据的传送(总线控制权)冲突,以及决定由哪一台微处理器控制总线的问题,I2C总线允许连接不同传送速率的设备。多台设备之间时钟信号的同步过程称为同步化。I2C总线在开始条件后的首字节决定哪个被控器将被主控器选择,例外的是“通用访问”地址,它可以在所有期间寻址。当主控器输出一地址时,系统中的每一器件都将开始条件后的前7位地址和自己的地址进行比较。如果相同,该器件即认为自己被主控器寻址,而作为被控接收器或被控发送器则取决于R/W位。
tianxj001 2017-08-10
  • 打赏
  • 举报
回复
补充一下,等待接受的任何一方,在等待时刻,必须释放总线控制权,让发送数据方可以把数据放到IIC数据线上。 如果遇忙,转错误处理,一般是等待,并等所有芯片完全释放总线后,重启通信
tianxj001 2017-08-10
  • 打赏
  • 举报
回复
问的好像是硬件IIC,估计你对整个IIC原理不怎么清楚吧?IIC应答双方分为主从,SMART发起总线申请,然后发送slave芯片地址,slave芯片回答ACK,实现握手,然后继续接受指令-ACK-执行动作,或者回复数据-主机ACK。所谓回复数据,那就是slave芯片把数据放到总线上,有marst芯片接受了。这就是一个典型主从通信的IIC时序
qq_38857833 2017-07-22
  • 打赏
  • 举报
回复
I2C是有模式选择的,可以通过模式选择分时发送
kalwen 2017-07-21
  • 打赏
  • 举报
回复
I2C怎么又成串口了?
of123 2017-07-21
  • 打赏
  • 举报
回复
I2C 的传输,只能由主机发起,由主机控制。 不过,你可以通过主机的轮询机制来实现从机发送某些信息的功能。
Acuity. 2017-07-19
  • 打赏
  • 举报
回复
没看明白问题描述

27,374

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧