这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » 功率监测与控制系统DIY活动开箱帖+stm32F4测评I2C驱动INA291检测

共3条 1/1 1 跳转至

功率监测与控制系统DIY活动开箱帖+stm32F4测评I2C驱动INA291检测电流、电压

菜鸟
2025-05-11 10:51:07     打赏

开发工具入门:https://www.st.com.cn/resource/zh/user_manual/um1727-getting-started-with-stm32-nucleo-board-software-development-tools-stmicroelectronics.pdf

STM32 的集成开发环境:https://www.st.com.cn/zh/development-tools/stm32cubeide.html

STM32Cube 初始化码生成器(必须安装):https://www.st.com.cn/zh/development-tools/stm32cubemx.html

STM32CubeProgrammer 软件:https://www.st.com.cn/zh/development-tools/stm32cubeprog.html

要安装至少一个STM32Cube 初始化代码生成器(经过测试至少要在6.13版以上)SetupSTM32CubeMX-6.14.1-Win软件,可以使用MDK进行调试也可以使用STM32的集成开发环境(新版需要安装在win10,不兼容win7),需要安装stlink驱动。

 image.png

https://www.st.com/en/embedded-software/stm32cubef4.html下载面向STM32f4系列的STM32Cube MCU软件包(包含HAL、底层API和CMSIS、文件系统、RTOS - 以及在各类意法半导体开发板上运行的示例)

 image.png

如果使用keil需要在这个链接:https://www.keil.com/pack/Keil.STM32F4xx_DFP.3.0.0.pack下载keilTM3232f4支持包。

打开 STM32CubeMX,点击“New Project”,选择芯片型号,STM32f411re。自动生成代码:

 image.png

缺失固件库,于是打开以下界面,点击对话框:

 image.png

在这个链接https://www.st.com.cn/zh/embedded-software/stm32cubef4.html#get-software

下载固件库CUBEF4的 1.28版

 

 image.png

 image.png

image.png

在调试下载过程中还升级了stlink驱动:

 找到原理图,查询OLED接线,将PA0接SDA  PA1接SCL,PA4接VCC  PB0接GND;

配置PC10作为INA219的SCL引脚,PC12作为INA219的SDA引脚

 image.png

 

打开 STM32CubeMX,点击“New Project”,选择芯片型号,STM32f411re。在pinout界面设置PA0、PA1、PA4、PB0,将PA0和PA1设置为开漏输出,PA4、PB0、PC10、PC12设置为推挽输出,时钟保持默认状态,点击GENERATE CODE自动生成初始化代码:

 image.png

 

自动生成代码,再将INA219文件夹拷贝到工程中:

 image.png

在项目管理对话框中将文件添加到工程:

 image.png

在头文件路径中添加OLED.h等

 image.png

修改引脚功能代码如下:

void INA_IIC_INIT(void)  //

{

 

  /* GPIO Ports Clock Enable */

 

  __HAL_RCC_GPIOC_CLK_ENABLE();

 

  /*Configure GPIO pin Output Level */

  HAL_GPIO_WritePin(GPIOC, GPIO_PIN_10|GPIO_PIN_12, GPIO_PIN_RESET);

 

  /*Configure GPIO pins : PC10 PC12 */

  GPIO_InitStruct.Pin = GPIO_PIN_10|GPIO_PIN_12;

  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;

  GPIO_InitStruct.Pull = GPIO_PULLUP;

  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;

  HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);

 HAL_GPIO_WritePin(GPIOC, GPIO_PIN_12, GPIO_PIN_SET);

 HAL_GPIO_WritePin(GPIOC, GPIO_PIN_10, GPIO_PIN_SET);

}

void INA_IIC_SDA_OUT(void)

{

GPIO_InitTypeDef GPIO_InitStruct = {0};

  /* GPIO Ports Clock Enable */

  __HAL_RCC_GPIOC_CLK_ENABLE();

  /*Configure GPIO pin Output Level */

 // HAL_GPIO_WritePin(GPIOC, GPIO_PIN_12, GPIO_PIN_RESET);

  /*Configure GPIO pins : PC10 PC12 */

  GPIO_InitStruct.Pin = GPIO_PIN_12;

  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;

  GPIO_InitStruct.Pull = GPIO_PULLUP ;

  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;

  HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);

}

void INA_IIC_SDA_IN(void)

{

GPIO_InitTypeDef GPIO_InitStruct = {0};

  /* GPIO Ports Clock Enable */

  __HAL_RCC_GPIOC_CLK_ENABLE();

 

  /*Configure GPIO pin Output Level */

 // HAL_GPIO_WritePin(GPIOC, GPIO_PIN_12, GPIO_PIN_RESET);

 

  /*Configure GPIO pins : PC10 PC12 */

  GPIO_InitStruct.Pin = GPIO_PIN_12;

  GPIO_InitStruct.Mode = GPIO_MODE_INPUT;

  GPIO_InitStruct.Pull = GPIO_PULLUP ;

  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;

  HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);}

当然在调试过程中还有头文件修改,数据类型重定义等工作;在主程序中调用语句:

VQ=INA_GET_Current_MA();

VV=INA_GET_Voltage_MV();

可以检测电流、电压,调用OLED显示程序可以进行显示,调试下载观察到

image.png

c1917845afceea65c8e6f33a90bca61.jpg

 

 



院士
2025-05-12 22:34:21     打赏
2楼

这图片拍摄的。

楼主您这作业交的…… 这可怎么评价呀!


菜鸟
2025-05-24 22:17:49     打赏
3楼

这是图

c1917845afceea65c8e6f33a90bca61.jpg


共3条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]