softiic.h 1#ifndef __SOFTI2C_H_2#define__SOFTI2C_H_34#include"main.h"5//使用IICX PD6,PC167#defineSDA_IN() {GPIOC->MODER &= ~(3 << 1 * 2);GPIOC->MODER = (0 << 1 * 2);}8#defineSDA_OUT() {GPIOC->MODER &= ~(3 << 1 * 2);GPIOC->MODER = (1 << 1 * 2)...
在STM32 HAL库中,并没有直接提供模拟I2C通信的现成函数。因此,我们需要手动实现I2C通信的基本流程和协议。以下是使用STM32 HAL库函数来模拟I2C通信的步骤和代码示例: 1. 配置GPIO引脚 首先,我们需要配置用于模拟I2C通信的SDA(数据线)和SCL(时钟线)的GPIO引脚。通常,SDA引脚需要配置为开漏输出模式,而SCL引脚可以配置...
void (*IIC_Start)(const struct IIC_Type*); //IIC_Start void (*IIC_Stop)(const struct IIC_Type*); //IIC_Stop uint8_t (*IIC_Wait_Ack)(const struct IIC_Type*); //IIC_Wait_ack,返回wait失败或是成功 void (*IIC_Ack)(const struct IIC_Type*); //IIC_Ack,IIC发送ACK信号void (*IIC...
使用HAL_I2C_Mem_Write等于先使用HAL_I2C_Master_Transmit传输第一个寄存器地址,再用HAL_I2C_Master_Transmit传输写入第一个寄存器的数据。可以传输多个数据 代码语言:javascript 复制 voidSingle_WriteI2C(uint8_t REG_Address,uint8_t REG_data){uint8_t TxData[2]={REG_Address,REG_data};while(HAL_I2C_Mas...
}while(HAL_I2C_Master_Transmit_IT(&hi2c2 ,0x0b,&BUFF[0],1)!= HAL_OK){} //IIC主机发送函数,主要IIC配置好了,这个可以添加到main函数里面测试 关于STM32CubeMx的HAL库IIC收发有几种函数,用户可以根据自己不同的需求进行选择,以下就是主要的几个HAL库IIC收发函数: ...
最近在做IIC读写程序,用到HAL库,发现利用HAL库 对IIC读写问题,求助一下! 在HA库对IIC读写操作的2个库函数如下: HAL_StatusTypeDef HAL_I2C_Mem_Write(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint8_t *pData, uint16_t Size, uint32_t timeout...
目前IICOLED屏幕是初学者常用的外设,本文将介绍STM32F407(所有STM32都大同小异)方面的oled驱动,下一篇文章将会介绍linux的IIC驱动。 OLED启动主要分为以下几步: ①屏幕初始化 ②开启屏幕显示 ③清屏(不清屏的话屏幕将会出现一片雪花) ④发送要显示的字符串、数字、汉字等 ...
void C_scl_h(iic_class *pin){ HAL_GPIO_WritePin(pin->SCL,pin->scl_pin,1); } //拉低SCL引脚的电平 void C_scl_l(iic_class *pin){ HAL_GPIO_WritePin(pin->SCL,pin->scl_pin,0); } //拉高SDA引脚的电平 void C_sda_h(iic_class *pin){ ...
void EEPROM_IIC_Test(void) { HAL_StatusTypeDef error; uint8_t length = 8 ; for(uint16_t i = 0;i<256;i++) Wr_buff[i] = i; //AT24Cxx地址00开始写入8Byte数据 error = HAL_I2C_Mem_Write(&hi2c1,ADDR_WR_AT24CXX,0x00,I2C_MEMADD_SIZE_16BIT,Wr_buff,length,1000); ...