STM32——I2C硬件通信(标准库)_stm32 i2c标准库的使用(1)

(7)void I2C_SendData(I2C_TypeDef* I2Cx, uint8_t Data);
         uint8_t I2C_ReceiveData(I2C_TypeDef* I2Cx);

发送数据和接收数据

(8)void I2C_Send7bitAddress(I2C_TypeDef* I2Cx, uint8_t Address, uint8_t I2C_Direction);

发送从机地址(当然I2C_SendData也可以发送)

(9)I2C_CheckEvent(I2C_TypeDef* I2Cx, uint32_t I2C_EVENT);

检查应答位

四丶代码部分及解析(使用了MPU6050观察实验现象)

(一)I2C及MPU6050初始化部分

#include "stm32f10x.h"                  // Device header
#include "MPU6050_Reg.h"

#define MPU6050_ADDRESS		0xD0



void MPU6050_Init(void)
{
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C2, ENABLE);    //开启GPIO时钟
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);   //开启I2C时钟
	
	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);                  //初始化GPIO
	
	I2C_InitTypeDef I2C_InitStructure;
	I2C_InitStructure.I2C_Mode = I2C_Mode_I2C;              //I2C模式
	I2C_InitStructure.I2C_ClockSpeed = 50000;               //传输速度,最大不能超过400KHZ
	I2C_InitStructure.I2C_DutyCycle = I2C_DutyCycle_2;      //时钟占空比
	I2C_InitStructure.I2C_Ack = I2C_Ack_Enable;             //主机是否设置应答
	I2C_InitStructure.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit;  //主机地址位数  7位或10位
	I2C_InitStructure.I2C_OwnAddress1 = 0x00;     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值