IIC是多主、多从、单工IIC的串行总线,传输仅需两根线,SDA(数据线)、SCL(时钟线)

 

IIC空闲时SDA和SCL都处于高电平状态(两根线一般情况均接上拉电阻)

IIC传输数据的模式为每传输8位后,要通过一个ACK位进行相互确认。

个人认为SCL产生上升沿后,设备开始检测SDA的电平,当SDA下降,SCL为高,表示开始工作,以此作为当前传输的数据,SCL的下降沿是作为SDA信息可调整的信号,在之后就能进行SDA的电平调整。

IIC有三种速率选择:

普通模式(100kbps)

快速模式(400kbps)

高速模式(3.4Mbps)

 

具体选用哪种速率要看对应IIC设备数据手册能支持的最大速率是多少,并通过更改时序中的延时时间进行切换。 IIC驱动代码基本上通用于任何IIC设备上。实现包括IIC 的初始化(IO 口)、 IIC 开始、 IIC 结束、 ACK、 IIC读写等功能 IIC 的初始化(IO 口)、 IIC 开始、 IIC 结束、 ACK、 IIC读写等功能 。

 

IIC初始化代码:

#define IIC_SCL_H   HAL_GPIO_WritePin(GPIOC,GPIO_PIN_12,GPIO_PIN_SET) //SCL H
#define IIC_SCL_L   HAL_GPIO_WritePin(GPIOC,GPIO_PIN_12,GPIO_PIN_RESET) //SCL H
#define IIC_SDA_H    HAL_GPIO_WritePin(GPIOC,GPIO_PIN_11,GPIO_PIN_SET) //SDA_H
#define IIC_SDA_L      HAL_GPIO_WritePin(GPIOC,GPIO_PIN_11,GPIO_PIN_RESET) //SDA_L
#define READ_SDA      HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_11)  //输入SDA
View Code

相关文章:

  • 2021-08-22
  • 2022-12-23
  • 2022-12-23
  • 2021-12-26
  • 2021-12-28
  • 2021-07-08
猜你喜欢
  • 2022-12-23
  • 2021-05-28
  • 2022-12-23
  • 2021-04-05
  • 2022-12-23
  • 2021-04-02
  • 2021-04-15
相关资源
相似解决方案