HAL_I2C_Mem_Write与HAL_I2C_Master_Transmit

功能:在阻塞模式下将大量数据写入特定的内存地址

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)

参数:
1、I2C指针,即用I2C1 还是 I2C2…
2、器件地址uint16_t DevAddress
3、要写入的内存地址 uint16_t MemAddress
4、内存地址类型,是一个地址存8bit ,还是16bit数据 , uint16_t MemAddSize
5、要写入的数组指针uint8_t *pData
6、数据 大小
7、多少时间没完成定义为超时

函数的结构:

  if(hi2c->State == HAL_I2C_STATE_READY) //如果I2C是 ready
  {
  		执行写操作
  }
  else
  {
    return HAL_BUSY;
  }

在这里插入图片描述
上面调用I2C_RequestMemoryWrite(),先发送从机地址和寄存器地址

下面用while循环把需要写入寄存器的数据全部发送出去。
在这里插入图片描述
在这里插入图片描述


另一个写函数(HAL_I2C_Master_Transmit()

在这里插入图片描述
与上一个函数的区别是,这里只发送器件地址,没有寄存器地址

在这里插入图片描述
在这里插入图片描述
至于SR1的TXE与BTF位有什么区别,目前还搞得不是很清楚


写器件地址和寄存器地址

static HAL_StatusTypeDef I2C_RequestMemoryWrite(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint32_t Timeout)

在这里插入图片描述
在这里插入图片描述


只写器件地址

在这里插入图片描述
在这里插入图片描述

  
 

  • 38
    点赞
  • 174
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值