GPIO_SetBits(I2C_GPIO_PORT, I2C_SCL_PIN | I2C_SDA_PIN); } 4.2 起始条件和停止条件的实现 // 产生起始条件 void I2C_Start(void) { GPIO_SetBits(I2C_GPIO_PORT, I2C_SDA_PIN); GPIO_SetBits(I2C_GPIO_PORT, I2C_SCL_PIN); delay_us(5); GPIO_ResetBits(I2C_GPIO_PORT, I2C_SDA_PIN); de...
void I2C_Start(void) { I2C_SDA_OUT(); SCL_H(); I2C_Delay(); SDA_H(); I2C_Delay(); SDA_L(); I2C_Delay(); SCL_L(); I2C_Delay(); } /* * 函数名:void I2C_Stop(void) * 输入参数: * 输出参数:无 * 返回值:无 * 函数作用:I2C 停止信号 */ void I2C_Stop(void) { I2C_SDA...
I2C_HandleTypeDef hi2c1; hi2c1.Instance = I2C1; hi2c1.Init.ClockSpeed = 100000; // 标准模式(100kHz) hi2c1.Init.DutyCycle = I2C_DUTYCYCLE_2; hi2c1.Init.OwnAddress1 = 0; // 主机模式无需设置自身地址 hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT; HAL_I2C_Init(&hi2c1); 3...
#define I2C1_SDA_PIN GPIO_Pin_7 /* I2C1的SDA所接的GPIO引脚 */ #define I2C1_SCL_SOURCE GPIO_PinSource6 /* I2C1的SCL所接的GPIO引脚序号 */ #define I2C1_SDA_SOURCE GPIO_PinSource7 /* I2C1的SDA所接的GPIO引脚序号 */ #define I2C1_GPIO_AF GPIO_AF_I2C1 /* I2C1的SDA、SCL的GPIO引...
I2C_SDA_H(); } 读取EEPROM 从EEPROM的指定地址读取数据。 uint8_t AT24Cxx_ReadByte(uint8_t addr) { uint8_t data = 0; I2C_Start(); I2C_SendByte(AT24C02_ADDR << 1 | 0); // 发送写命令 I2C_SendByte(addr); // 发送地址
29 调用方式:void I2CStart(void) 30 函数说明:私有函数,I2C专用,开始信号 31 ---*/ 32 void IIC_Start(void) 33{ 34 SDA_OUT(); //sda线输出 35 IIC_SDA=1; 36 IIC_SCL=1; 37 delayUs(4); 38 IIC_SDA=0;//START:when CLK is high,DATA change form high...
一、I2C协议简介 I2C通讯协议(Inter-Integrated Circuit,读作I平方C、I方C) 是由Phiilps公司开发的,由于它引脚少,硬件实现简单,可扩展性强,不需要USART、CAN等通讯协议的外部收发设备,现在被广泛地使用在系统内多个集成电路间的通讯。 1. 物理层 (感谢野火的PPT,一部分内容参考了野火)如下图所示即为I2C的物理层...
I2C_GenerateSTART(EEPROM_I2C, ENABLE); while(I2C_CheckEvent(EEPROM_I2C, I2C_EVENT_MASTER_MODE_SELECT) == ERROR); // EV5事件被检测到,发送设备地址(直接填入EEPROM的设备地址:EEPROM_ADDR) I2C_Send7bitAddress(EEPROM_I2C, EEPROM_ADDR, I2C_Direction_Transmitter); ...
首先看i2c.h:#include "stm32f10x.h"#include "delay.h"//应答信号extern u8 ack;//初始化函数externvoidI2c_Init(void);//起动总线函数externvoidStart_I2c(void);//结束总线函数 externvoidStop_I2c(void);//应答子函数externvoidAck_I2c(u8 a);//字节数据发送函数externvoidSendByte(unsignedchar c)...
AT24C02系列支持I2C,总线数据传送协议I2C,总线协议规定任何将数据传送到总线的器件作为发送器。任何从总线接收数据的器件为接收器;数据传送是由产生串行时钟和所有起始停止信号的主器件控制的。主器件和从器件都可以作为发送器或接收器,但由主器件控制传送数据(发送或接收)的模式,由于A0、A1和A2可以组成000~111八种情况...