STM32硬件IIC的实现

1 篇文章 0 订阅

1、STM32 Cube配置

进入Cube设置 根据数据手册填入上升与下降沿时间,选择快速模式。
在这里插入图片描述

2、程序分析

2.1、单片机发送命令函数

发送的函数使用

HAL_I2C_Master_Transmit(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t Timeout)

其中hi2c为结构体,DevAddress为设备地址,*pData为所要发送的数据, Size为发送数据的大小,Timeout为操作超时时间
比如:

I2C_HandleTypeDef hi2c1;
data[3]={0x00,0x10,0x00}
HAL_I2C_Master_Transmit(&hi2c1, 0x20,  &data[0],3, 1000 )

为0x20地址上发送数组data中三个数据。可以使用示波器看IIC_SCL与IIC_SDA上的数据。

2.2、数据读取

使用的函数为

HAL_StatusTypeDef HAL_I2C_Mem_Read(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint8_t *pData, uint16_t Size, uint32_t Timeout)

其中hi2c为结构体,DevAddress为设备地址,MemAddress为所读取设备的数据保存的地址,MemAddSize为需要读取单数据的长度,*pData为读取数据被保存的地址, Size为读取数据的大小,Timeout为操作超时时间
比如:

HAL_I2C_Mem_Read( &hi2c1, 0x21, 0x08, I2C_MEMADD_SIZE_8BIT, &Receivedata[0], 2, 1000 );

上面函数分析:0x21为读取的命令,0x80为读取设备保存数据的地址,I2C_MEMADD_SIZE_8BIT为单字节读取,Receivedata为读取数据保存的数据,2位读取两个字节的数据。

示波器抓取到时序和基本一致。
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值