MemAddSize:内存地址的位数,是8位还是16位,0表示8bit地址,1表示16bit地址;这里是一个16位数据,是准备写入寄存器的数据的大小;pData:指向要写入数据缓冲区的指针,存放的是要发送的数据,注意大小为8位;Size:准备写入的数据大小,单位为字节:Timeout:超时时间,如果在给定时间没收到ACK则超时退出写入。 函数返回值:...
voidOLED_WR_CMD(uint8_t cmd)//向OLED写命令{ HAL_I2C_Mem_Write(&hi2c1 ,0x78,0x00,I2C_MEMADD_SIZE_8BIT,&cmd,1,0x100); }voidOLED_WR_DATA(uint8_t data)//向OLED写数据{ HAL_I2C_Mem_Write(&hi2c1 ,0x78,0x40,I2C_MEMADD_SIZE_8BIT,&data,1,0x100); } 1. 2. 3. 4. 5. ...
#include "main.h"#include "oled/oled.h"#include "oled/codetab.h"extern I2C_HandleTypeDef hi2c2;void I2C_WriteByte(uint8_t addr, uint8_t dat){uint8_t temp[2];temp[0] = dat;temp[1] = dat;HAL_I2C_Mem_Write(&hi2c2,OLED_ADDRESS,addr,I2C_MEMADD_SIZE_8BIT,temp,1,10);}void ...
* MemAddress:要写入的内存地址 * MemAddSize:内存地址大小,可以是I2C_MEMADD_SIZE_8BIT或I2C_MEMADD_SIZE_16BIT * pData:要写入的数据指针 * Size:要写入的数据长度 * Timeout:超时时间 函数返回值为一个枚举类型,表示函数执行结果,常见的返回值有: * HAL_OK:函数执行成功 * HAL_BUSY:总线忙 * HAL_...
HAL_I2C_Mem_Read(&hi2c, PCF8563_ADDRESS, 2, I2C_MEMADD_SIZE_8BIT, buffer, 7, HAL_MAX_DELAY); } int main(void) { // 初始化硬件I2C外设 HAL_Init(); // 初始化时钟和GPIO引脚 // ... // 配置I2C参数 hi2c.Instance = I2C1; ...
uint16_t MemAddSize --I2C_MEMADD_SIZE_8BIT //读写内部地址的方式,上面规格书的截图也说明了是8BIT方式 uint8_t *pData --I2C_Buffer_Write+i ,因为数组即指针,所以也可以用(uint8_t*)(&(I2C_Buffer_Write[i])) 或者&(I2C_Buffer_Write[i]) ...
}voidOLED_WR_DATA(uint8_t data)//向OLED写数据{ HAL_I2C_Mem_Write(&hi2c1 ,0x78,0x40,I2C_MEMADD_SIZE_8BIT,&data,1,0x100); } 我这里是一个字节一个字节的传送,所有字节大小填1 voidOLED_DISPLAY_CLEAR(void){//清屏操作uint8_t j,t;for(t=0xB0;t<0xB8;t++){//设置起始页地址为0x...
HAL_I2C_Mem_Write( I2C_HandleTypeDef *hi2c, // 使用的 I2C 模块的 Handle 的指针 uint16_t DevAddress, // I2C 器件的地址,这里是 24C02 的地址 0xA0 uint16_t MemAddress, // 存储器内部地址 uint16_t MemAddSize, // 存储器内部地址位数 8BIT or 16BIT ? uint8_t *pData, // 发送数据...
HAL_StatusTypeDef status = HAL_I2C_Mem_Read(self->i2c, i2c_addr, mem_addr, I2C_MEMADD_SIZE_8BIT, bufinfo.buf, bufinfo.len, vals[3].u_int); 变成 HAL_StatusTypeDef status = HAL_I2C_Mem_Read(self->i2c, i2c_addr, mem_addr, I2C_MEMADD_SIZE_16BIT, bufinfo.buf, bufinfo.len, va...
if(driver_i2c_mem_poll_write(&EEPROM_I2C,deviceId,write_address,MEM_ADDRESS_8BIT,p_buffer,I2C_PAGE_SIZE) == DRV_ERROR) { return EEPROM_ERROR; } if(eeprom_wait_standby_state(&EEPROM_I2C) == EEPROM_ERROR) { return EEPROM_ERROR; ...