【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下载

相关推荐
Tronlong创龙3 小时前
SBC‑TLT153 嵌入式 Linux 应用开发,交叉编译与 GDB 调试实践(上)
嵌入式硬件·嵌入式开发·硬件开发·工业控制·工业开发板
巴渝小禹3 小时前
单片机死循环delay_us()计算方法
单片机·嵌入式硬件
Yiran_G3 小时前
LoRa串口模组和SoC模组怎么选?从MCU架构看无线通信方案设计
嵌入式硬件·物联网
HQB20264 小时前
CN6150|简芯维尔 6V/500mA 高速低噪声 CMOS‑LDO 线性稳压器
嵌入式硬件·硬件工程
科芯创展5 小时前
XZ3445 高集成升压/升降压DC-DC电源芯片技术解析
单片机·嵌入式硬件
艾芯微科技5 小时前
高充放电流锂电充放 SoC:ETA9885E10,便携储能、小移动电源 BOM 选型笔记
网络·单片机·嵌入式硬件·集成测试·51单片机
艾芯微科技6 小时前
钰泰 ETA6973PQ3Y|QFN3×3 2A 同步降压 Buck,I2C 可配置多档输出,动态调压 PMIC
网络·单片机·嵌入式硬件·fpga开发·集成测试·51单片机
Brilliantwxx6 小时前
【STM32】 通用定时器:输入捕获与输出比较详解 测脉宽、测频率
stm32·单片机·嵌入式硬件·mcu
意法半导体STM327 小时前
【官方原创】LAT1703 STM32C5 LL Cordic例程
stm32·单片机·嵌入式硬件·stm32c5·ll cordic