stm32 I2C通信协议(二)(硬件实现)

stm32 I2C通信协议(二)(硬件实现)

一、I2C基础知识

1)I2C外设简介

  • STM32内部集成了硬件I2C收发电路,可以由硬件自动执行时钟生成、起始终止条件生成、应答位收发、数据收发等功能,减轻CPU的负担
  • 支持多主机模型
  • 支持7位/10位地址模式
  • 支持不同的通讯速度,标准速度(高达100 kHz),快速(高达400 kHz)
  • 支持DMA
  • 兼容SMBus协议
  • STM32F103C8T6 硬件I2C资源:I2C1、I2C2
  • I2C功能框图
    在这里插入图片描述
  • I2C引脚
    在这里插入图片描述

2)I2C外设收发时序

  • 主机发送传送序列图

  • EV事件可以理解为修改标志位
    在这里插入图片描述

  • 主机接受传送序列图
    在这里插入图片描述

  • 软硬件时序区别,硬件更规整
    在这里插入图片描述

  • 更多详见stm32F10x手册24节

二、实验

1)软件I2C读写MPU6050

  • 可以把AD0引脚接高电平修改MPU的名称,改了后记得地址为0xD2
  • 关键代码:
    //初始化硬件电路
    void MPU6050_Init(void){
    	RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C2, ENABLE);
    	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
    	
    	GPIO_InitTypeDef GPIO_InitStructure;
    	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_OD; //上拉输入
    	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10 | GPIO_Pin_11;
    	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    	GPIO_Init(GPIOB, &GPIO_InitStructure);
    
    	I2C_InitTypeDef I2C_InitStructure;
    	I2C_InitStructure.I2C_Mode = I2C_Mode_I2C;
    	I2C_InitStructure.I2C_ClockSpeed = 50000;
    	I2C_InitStructure.I2C_DutyCycle = I2C_DutyCycle_2;
    	I2C_InitStructure.I2C_Ack = I2C_Ack_Enable;
    	I2C_InitStructure.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit;
    	I2C_InitStructure.I2C_OwnAddress1 = 0x00;
    	I2C_Init(I2C2, &I2C_InitStructure);
    	
    	I2C_Cmd(I2C2, ENABLE);
    	
    	MPU6050_WriteReg(MPU6050_PWR_MGMT_1, 0x01);
    	MPU6050_WriteReg(MPU6050_PWR_MGMT_2, 0x00);
    	MPU6050_WriteReg(MPU6050_SMPLRT_DIV, 0x09);
    	MPU6050_WriteReg(MPU6050_CONFIG, 0x06);
    	MPU6050_WriteReg(MPU6050_GYRO_CONFIG, 0x18);
    	MPU6050_WriteReg(MPU6050_ACCEL_CONFIG, 0x18); 
    }
    
    
    在这里插入图片描述
完整代码见资源绑定

附学习参考网址

  1. STM32入门教程-2023版 细致讲解 中文字幕
  2. IIC (二) – SMBus协议和基础知识介绍-CSDN博客

欢迎大家有问题评论交流 (* ^ ω ^)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值