您好,欢迎来到华佗健康网。
搜索
您的当前位置:首页2022-10-5 IIC实验(测温湿度)(复习)

2022-10-5 IIC实验(测温湿度)(复习)

来源:华佗健康网

1.I2C总线是PHLIPS公司在八十年代初推出的一种串行的半双工同步总线,主要用于连接整体电路。 1)同一个板子两个芯片之间的通信 stm32mp157a<---IIC--->SI7006 2)两个设备之间的通信 SOC<---UART--->Target 2.I2C总线为两线制,只有两根双向信号线。一根是数据线SDA,另一根是时钟线SCL。 3.I2C硬件结构简单,接口连接方便,成本较低。因此在各个领域得到了广泛的应用。 4.IIC总线传输速率 低速 100k 中速 400k 全速 3.4M 5.IIC总线需要接两个上拉电阻,这两个上拉电阻作用在IIC总线为空闲状态时保持高电平。

 

 IIC的协议

主机给从机发送一个字节

     主机给从机发送多个字节

  从机给主机发送一个字节

从机给主机发送多个字节

 

首先是头文件部分

#ifndef __IIC_H__
#define __IIC_H__
#include "stm32mp1xx_gpio.h"
#include "stm32mp1xx_rcc.h"
#include "gpio.h"
/* 通过程序模拟实现I2C总线的时序和协议
 * GPIOF ---> AHB4
 * I2C1_SCL ---> PF14
 * I2C1_SDA ---> PF15
 *
 * */

#define SET_SDA_OUT     do{GPIOF->MODER &= (~(0x3 << 30)); \
							GPIOF->MODER |= (0x1 << 30);}while(0)
#define SET_SDA_IN      do{GPIOF->MODER &= (~(0x3 << 30));}while(0)

#define I2C_SCL_H       do{GPIOF->BSRR |= (0x1 << 14);}while(0)
#define I2C_SCL_L       do{GPIOF->BRR |= (0x1 << 14);}while(0)

#define I2C_SDA_H       do{GPIOF->BSRR |= (0x1 <<

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo0.com 版权所有 湘ICP备2023021991号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务