STM32硬件I2C问题

发布者:RainbowDreamer最新更新时间:2019-08-08 来源: eefocus关键字:stm32  硬件I2C  总线初始化 手机看文章 扫描二维码
随时随地手机看文章

1.CUBEMX生成代码后I2C总线初始化一直出现 I2C_FLAG_BUSE

1.1 环境:


 1.2 硬件I2C配置为默认,管脚如下


1.3 时钟等其他 配置完成后生成工程


1.4 添加代码


在i2c.c文件中的的void HAL_I2C_MspInit(I2C_HandleTypeDef* i2cHandle)函数中添加如下代码


__I2C2_FORCE_RESET();

__I2C2_RELEASE_RESET();

实际如下图


这里采用读取板载的MPU6050的设备地址来确认硬件I2C是否工作正常。 主函数里main.c添加程序如下:


/* USER CODE BEGIN PV */

/* Private variables ---------------------------------------------------------*/

uint8_t device_id_reg = 0x75; //存放MPU6050设备地址的寄存器

uint8_t device_id = 0x68; //MPU6050设备地址,0x75寄存器读取的地址与此相同

uint8_t device_id_reg_ret; //用来存放读取的设备地址

/* USER CODE END PV */

在while循环里添加读取设备地址代码,效果如下:


while (1)

 {

 

 /* USER CODE END WHILE */

 

 /* USER CODE BEGIN 3 */

 uint32_t cnt = 0;

 HAL_Delay(10);

 if(cnt%10==0)

 {

HAL_GPIO_TogglePin(LED0_GPIO_Port,LED0_Pin | LED1_Pin);

 }

 if(cnt%20==0)

 {

HAL_I2C_Mem_Read(&hi2c1,device_id<<1 , 0X75, I2C_MEMADD_SIZE_8BIT,&device_id_reg_ret,1, 1000);//读MPU6050的ID

printf("MPU6050device_id %xrn",device_id_reg_ret);

 }

cnt++;

 }

编译下载后在串口可以看到打印信息: 

与给定的设备地址相同,说明代码配置的硬件i2c可用

关键字:stm32  硬件I2C  总线初始化 引用地址:STM32硬件I2C问题

上一篇:STM32 I2C上拉电阻的选择问题
下一篇:STM32F1 模拟I2C驱动DAC(LTC2605)程序

推荐阅读最新更新时间:2024-11-12 16:51

stm32 gpio的相关问题
gpio 设置流程: 设置gpio的时钟 设置gpio 的pin角 设置gpio pin的功能(速度 输入输出模式 reset) 设置gpio data void LED_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOG, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_O
[单片机]
<font color='red'>stm32</font> gpio的相关问题
回炉重造STM32 CUBEMX之串口通讯问题四
串口通讯+PWM波:STM32F103C8T6通过USART1输入相应的指令控制的TIM3四个通道生成四个占空比不同的频率为50HzPWM波来控制云台。 之前用FT232直连单片机,一切正常返回的指令无乱码正常。 接上数传图传出现问题: 1、连续给出高电平时间持续1.5ms的指令,电机本该静止却会往一个方向慢慢漂移。怀疑每次在发出指令单片机相应指令的过程中会导致PWM波占空比变化。 2、接上数传后返回的指令中含有很多乱码。设备有时会莫名重启或者关闭。怀疑是发送的指令出现了偏差触发了开关机的指令。 3、设备返回的图像黑屏 解决方法: 1、对于重复发出的指令,设置相应的重复处理程序。若指令相同或者相同指令持续3次则跳
[单片机]
STM32之串口的使用
1、为什么要用串口? 自上一篇写的时间是1月20号,今6月7号了,半年没更新了。 这半年发生了什么?过完年就去找公司实习,在那里自我感觉进步很大。其实在公司大多都是自学,师傅基本不会给你说什么。但这并不能说明你的师傅对你不好,带我的那个师傅只比我高一届,但他的水平比我高的好多届。他也是自学,也没人告诉他该怎么做,因为老板也不太懂。所以自学能力很重要,当然有人带你的话,这样会更好。 不说这些了,串口在调试的时候作用非常大。也学我们在学51的时候,只是将程序下载到开发板,看看是否能运行起来,通过数码管将结果显示出来,从而就知道程序设计的正确性。以前我也是这样做的,没什么不好。 在公司实习的时候,他们调试都是使用串口打印输出
[单片机]
<font color='red'>STM32</font>之串口的使用
STM32 外部(IO)中断EXTI的应用
a) 目的:跟串口输入类似,不使用中断进行的IO输入效率也很低,而且可以通过EXTI插入按钮事件,本节联系EXTI中断。 b) 初始化函数定义: void EXTI_Configuration(void); //定义IO中断初始化函数 c) 初始化函数调用: EXTI_Configuration();//IO中断初始化函数调用简单应用: d) 初始化函数: void EXTI_Configuration(void) { EXTI_InitTypeDef EXTI_InitStructure; //EXTI初始化结构定义 EXTI_Cle
[单片机]
如何用STM32让相对编码器说话?
▍编码器的由来和原理 若要对伺服系统中的电机进行高精度控制,需要准确的转子角度位置,这时候自然会想到,如果能张江转子每一圈进行细分,这样每次转多少角度便能精确知道。在这样的背景下,相对编码器就诞生了。 在网上找到下文这个图,很形象的表征了相对编码器的原理。 如图所示,在码盘上平均开出很多个等间距的槽,一段是LED灯发出信号,另一端是接收器接收信号。如果信号能穿过码盘,则接收信号为高电平,反之则为低电平。这样当转子转起来以后,就不断的处高低电平。这就是编码器基本原理。 可以看到这里有三个信号,A/B/Z,这时候就要想为什么要3个信号呢?如果仅仅对一圈做细分,命名一个信号就可以了。这就涉及到下面两个问题。 (1)如果是1个信号
[单片机]
如何用<font color='red'>STM32</font>让相对编码器说话?
STM32开发笔记34:USB CDC驱动程序的详细移植过程
单片机型号:STM32F401 本文详细介绍USB CDC驱动程序的移植过程。 1、按照STM32F4 开发笔记8:解决USB CDC “该设备无法启动”问题介绍的过程生成驱动程序后,找到如下图所示的文件加入到自己的项目工程中。 2、打开usbd_cdc_if.c文件,可以看到其中有,如下4个函数,其中Init、DeInit和Control函数都不需要改变,关键是Receive函数。 static int8_t CDC_Init_FS(void); static int8_t CDC_DeInit_FS(void); static int8_t CDC_Control_FS(uint8_t cm
[单片机]
<font color='red'>STM32</font>开发笔记34:USB CDC驱动程序的详细移植过程
STM32单片机FSMC模块的应用
一、基本概念 1.与非总线复用的16位SRAM接口 FSMC配置 SRAM存储器和NOR闪存存储器共用相同的FSMC存储块,所用的协议依不同的存储器类型而有所不同。 控制SRAM存储器,FSMC应该具有下述功能: 使用或禁止地址/数据总线的复用功能。 选择所用的存储器类型:NOR闪存、SRAM或PSRAM。 定义外部存储器的数据总线宽度:8或16位。 使用或关闭扩展模式:扩展模式用于访问那些具有不同读写操作时序的存储器。 正如配置NOR闪存存储器一样,用户必须按照SRAM存储器的数据手册给出的时序数据,计算和设置下列参数: ADDSET:地址建立时间 ADDHOLD:地址保持时间 DATAST:数据建立时间 二、例程 1.
[单片机]
Stm32串口发送字节数据
说明:每发送一次数据,LED等闪烁一下 /* *说明: *PA0:KEY1;PA1:KEY2; *PA2:LED1;PA3:LED2; *PA9:USART1_TX;PA10:USART1_RX */ #include stm32f10x.h #include stm32f10x_rcc.h #include stm32f10x_gpio.h #include stm32f10x_usart.h #include system_stm32f10x.h #include stdio.h #define PUTCHAR_PROTOTYPE int __io_putchar(int ch) void RCC_Configuratio
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved