【STM32】基于TPS61165芯片的LED驱动电路

目录

一、简单介绍

二、cubeMX配置

开调试口

开PWM

时钟

按键

三、代码编写

四、效果

五、备注

六、工程链接


一、简单介绍

TPS61165是一款白色LED灯驱动芯片,输入电压3~18V,开关电流最大1.2A。具有LED开路保护,可以PWM调光或者高低电平控制。

参考芯片推荐设计,原理图如下

选择0.62欧姆电阻,则串联电流等于0.2/0.62=322mA

VBUS连接12V输入电源,笔者选用STM32F103C8T6作为MCU,LED_CTRL1连接单片机的PA7引脚

使用两个按键设置占空比(亮度)

MCU电路

二、cubeMX配置

开调试口

开PWM

设置PWM波频率为20khz,初始占空比10%

时钟

开启外部高速时钟

按键

选择输入上拉

笔者使用ST7789屏幕观测,因此还启用了SPI接口

三、代码编写

主要涉及到TFT彩屏,按键输入,定时器PWM输出的内容,主要代码如下

cpp 复制代码
/* Includes ------------------------------------------------------------------*/
#include "main.h"
#include "dma.h"
#include "spi.h"
#include "tim.h"
#include "gpio.h"

/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
#include "keydrv.h"
#include "st7789.h"
/* USER CODE END Includes */

/* Private typedef -----------------------------------------------------------*/
/* USER CODE BEGIN PTD */

/* USER CODE END PTD */

/* Private define ------------------------------------------------------------*/
/* USER CODE BEGIN PD */

/* USER CODE END PD */

/* Private macro -------------------------------------------------------------*/
/* USER CODE BEGIN PM */

/* USER CODE END PM */

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

/* USER CODE BEGIN PV */

/* USER CODE END PV */

/* Private function prototypes -----------------------------------------------*/
void SystemClock_Config(void);
/* USER CODE BEGIN PFP */

/* USER CODE END PFP */

/* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */
int8_t light = 10;
uint8_t str[20];
/* USER CODE END 0 */

/**
  * @brief  The application entry point.
  * @retval int
  */
int main(void)
{

  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_DMA_Init();
  MX_SPI2_Init();
  MX_TIM3_Init();
  /* USER CODE BEGIN 2 */
   KeyDrv_Config();
   ST7789_Init();
   ST7789_Clear(BLACK);
   HAL_TIM_Base_Start(&htim3);
   HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_2);
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
   if (button[0].buttonAction == CLICK_SINGLE)
   {
      button[0].buttonAction = CLICK_NULL;
      light += 10;
      if (light > 100)
      {
         light = 100;
      }
      
      __HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_2, light);
   }
   if (button[1].buttonAction == CLICK_SINGLE)
   {
      button[1].buttonAction = CLICK_NULL;
      light -= 10;
      if (light < 0)
      {
         light = 0;
      }
      
      __HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_2, light);
   }
   sprintf(str, "light:%d  ", light);
   ST7789_ShowString(0, 140, str, Font_16x26, ST7789_RGB565(0xFFFF), BLACK);
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */
}

四、效果

五、备注

值得一提的是,把与TPS61165的CTRL相连的单片机的PA7引脚由PWM改成推挽输出,就可以实现点亮/熄灭LED,取决于IO电平的高低。

六、工程链接

STM32基于TPS61165芯片的LED驱动电路资源-CSDN下载

相关推荐
悠哉悠哉愿意3 天前
【单片机学习笔记】串口、超声波、NE555的同时使用
笔记·单片机·学习
Lester_11013 天前
STM32霍尔传感器输入口设置为复用功能输入口时,还能用GPIO函数直接读取IO的状态吗
stm32·单片机·嵌入式硬件·电机控制
LCG元3 天前
低功耗显示方案:STM32L0驱动OLED,动态波形绘制与优化
stm32·嵌入式硬件·信息可视化
三佛科技-187366133973 天前
120W小体积碳化硅电源方案(LP8841SC极简方案12V10A/24V5A输出)
单片机·嵌入式硬件
z20348315203 天前
STM32F103系列单片机定时器介绍(二)
stm32·单片机·嵌入式硬件
古译汉书3 天前
【IoT死磕系列】Day 7:只传8字节怎么控机械臂?学习工业控制 CANopen 的“对象字典”(附企业级源码)
数据结构·stm32·物联网·http
Alaso_shuang3 天前
STM32 核心输入、输出模式
stm32·单片机·嵌入式硬件
脚后跟3 天前
AI助力嵌入式物联网项目全栈开发
嵌入式硬件·物联网·ai编程
2501_918126913 天前
stm32死锁是怎么实现的
stm32·单片机·嵌入式硬件·学习·个人开发
z20348315203 天前
STM32F103系列单片机定时器介绍(一)
stm32·单片机