1、用GD32模拟IIC时序,第一步是端口的定义和配置可以很方便的移植IIC程序,核心代码如下: #define IIC_SCL_PIN GPIO_PIN_6 #define IIC_SCL_GPIO_PORT GPIOB #define IIC_SCL_GPIO_CLK RCU_GPIOB #define IIC_SDA_PIN GPIO_PIN_7 #define IIC_SDA_GPIO_PORT GPIOB #define IIC_SDA_GPIO_CLK RCU_GPIO...
#include"stm32f4xx.h"#include"usart.h"#include"delay.h"#include<math.h>#define PI3.14159265358979323846#define MPU6050_ADDR0x68// MPU6050的地址#define SDA GPIO_Pin_8//数据线#define SCL GPIO_Pin_9//时钟线#define IIC_GPIO_PORT GPIOC// GPIO分组#define SDA_1GPIO_SetBits(IIC_GPIO_PORT,SDA...
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_OD; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(EEPROM_I2C_SCL_GPIO_PORT, &GPIO_InitStructure); // 将IIC SDA的GPIO配置为浮空输入模式 GPIO_InitStructure.GPIO_Pin = EEPROM_I2C_SDA_GPIO_PIN; GPIO_Init(EEPROM_I2C_SDA_GPIO_PORT, &...
#include"stm32f4xx.h"#include"usart.h"#include"delay.h"#include<math.h>#define PI3.14159265358979323846#define MPU6050_ADDR0x68// MPU6050的地址#define SDA GPIO_Pin_8//数据线#define SCL GPIO_Pin_9//时钟线#define IIC_GPIO_PORT GPIOC// GPIO分组#define SDA_1GPIO_SetBits(IIC_GPIO_PORT,SDA...
GPIO_Init(EPROM_I2C_SDA_GPIO_PORT, &GPIO_InitStruct); // 配置I2C参数(时钟速度、模式、占空比、自身地址、应答使能、7位设备地址) I2C_InitStruct.I2C_ClockSpeed = EEPROM_I2C_BAUDRATE; I2C_InitStruct.I2C_Mode = I2C_Mode_I2C; I2C_InitStruct.I2C_DutyCycle = I2C_DutyCycle_2; ...
IIC(Inter-Integrated Circuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器以及其外围设备。它是由数据线SDA和时钟SCL构成的串行总线,可发送和接收数据,在CPU与被控IC之间、IC与IC之间进行双向传送。 IIC总线有如下特点: ①总线由数据线SDA和时钟线SCL构成的串行总线,数据线用来传输数据,时钟线用...
GPIO_Init(EPROM_I2C_SDA_GPIO_PORT, &GPIO_InitStruct); // 配置I2C参数(时钟速度、模式、占空比、自身地址、应答使能、7位设备地址) I2C_InitStruct.I2C_ClockSpeed = EEPROM_I2C_BAUDRATE; I2C_InitStruct.I2C_Mode = I2C_Mode_I2C; I2C_InitStruct.I2C_DutyCycle = I2C_DutyCycle_2; ...
当使用GPIO模拟IIC时,数据线SDA对应的GPIO模式应该设置为开漏输出模式(Open-Drain)。这是因为IIC总线是双向的,需要支持数据线的双向传输。 在开漏输出模式下,GPIO引脚可以被设置为输出低电平(0)或者输出高阻抗状态(高电平)。当GPIO引脚处于高阻抗状态时,总线上的上拉电阻会将总线拉高,从而允许其他设备在总线上传输数...
SCL和SDA都为普通GPIO口 按照以下配置 2.添加IIC.h和IIC.c文件 IIC.h /** myiic.h * * Created on: Aug 30, 2021 * Author: along*/#ifndef INC_MYIIC_H_#defineINC_MYIIC_H_#include"main.h"#include"stm32f4xx_hal.h"#defineFALSE 0#defineTRUE 1#defineSCL_H HAL_GPIO_WritePin(GPIOB, ...
在使用GPIO模拟IIC时,将数据线SDA对应的GPIO模式设置为开漏输出的原因涉及到IIC总线的工作原理以及通信时可能出现的冲突情况。 IIC总线是多主机、多从机的串行通信总线,意味着多个设备可以在同一条总线上进行通信。在IIC总线上,数据线SDA(Serial Data Line)的电平由_牛