专注于创新和照明,我们的目标是为个人提供尖端的LED手电筒解决方案,确保在您最需要的时候提供更持久、更明亮的光源。
A
A
硬件概览
它是如何工作的?
LED Flash Click基于ON Semiconductor的CAT3224,这是一款高电流集成闪光LED驱动器,同时也支持双电池超级电容器应用的充电功能。这款Click板设计为在5V电源上运行,并通过mikroBUS™线的AN、RST、PWM和INT引脚与目标微控制器通信。CAT3224适用于锂离子电池供电系统,能够提供高达4A的LED闪光脉冲,远超过电池的峰值电流能力。双模式1x/2x充电泵为堆叠的超级电容器充电至5.4V标称电压,同时活动平衡控制电路确保两个电容器电池电压保持匹配。该驱动器还具有两个匹配的电流源。外部电阻可调节最大闪光模式电
流(高达4A)和手电筒模式电流(高达400mA)。内置安全计时器会在超过300ms的最大持续时间后自动终止闪光脉冲。CAT3224有一个关闭模式,ON Semiconductor将其称为“零”模式。在此模式下,它通常只使用1μA电流。在LED Flash Click上有三种不同的LED指示灯,其操作如下:CHARGE — 当这个LED亮起时,驱动器处于充电模式;READY — 当这个LED亮起时,表示超级电容器已充满电;PWR — 表示电源是否存在。FLAG是一个低电平有效的开漏输出,通过将输出拉低(mikroBUS的第15脚)来通知微控制器超级
电容器已充满电。使用FLAG时,应通过外部上拉电阻将此引脚连接到正电源。TORCH是手电筒模式使能引脚。高电平时,LED电流源在手电筒模式下启用。FLASH是闪光模式使能引脚。高电平时,LED电流源在闪光模式下启用。如果FLASH保持高电平超过典型的300ms,LED通道将自动禁用。LEDA、LEDB内部连接到电流源,并且必须连接到LED阳极。每个输出都独立电流调节。这些引脚在设备进入关闭模式或FLASH和TORCH为低电平时进入高阻抗“零”电流状态。
功能概述
开发板
32L496GDISCOVERY Discovery 套件是一款功能全面的演示和开发平台,专为搭载 Arm® Cortex®-M4 内核的 STM32L496AG 微控制器设计。该套件适用于需要在高性能、先进图形处理和超低功耗之间取得平衡的应用,支持无缝原型开发,适用于各种嵌入式解决方案。STM32L496AG 采用创新的节能架构,集成
了扩展 RAM 和 Chrom-ART 图形加速器,在提升图形性能的同时保持低功耗,使其特别适用于音频处理、图形用户界面和实时数据采集等对能效要求较高的应用。为了简化开发流程,该开发板配备了板载 ST-LINK/V2-1 调试器/编程器,提供即插即用的调试和编程体验,使用户无需额外硬件即可轻松加载、调
试和测试应用程序。凭借低功耗特性、增强的内存能力以及内置调试工具,32L496GDISCOVERY 套件是开发先进嵌入式系统、实现高效能解决方案的理想选择。
微控制器概述
MCU卡片 / MCU

建筑
ARM Cortex-M4
MCU 内存 (KB)
1024
硅供应商
STMicroelectronics
引脚数
169
RAM (字节)
327680
使用的MCU引脚
mikroBUS™映射器
“仔细看看!”
Click board™ 原理图

一步一步来
项目组装
软件支持
库描述
这个库包含了LED Flash Click驱动程序的API。
关键功能:
ledflash_char_supcap_enable- 充电超级电容器启用功能ledflash_flash_enable- 闪光启用功能ledflash_flash_rdy_flag- 检查闪光就绪标志功能
开源
代码示例
完整的应用程序代码和一个现成的项目可以通过NECTO Studio包管理器直接安装到NECTO Studio。 应用程序代码也可以在MIKROE的GitHub账户中找到。
/*!
* \file
* \brief LED Flash Click example
*
* # Description
* This application switching on and off led flash.
*
* The demo application is composed of two sections :
*
* ## Application Init
* Initialization driver enables GPIO, starts write log and issues a warning.
*
* ## Application Task
* This example demonstrates the use of LED Flash Click board by flashing
* with LEDs when ever supercapacitor is at a full voltage.
*
* \author MikroE Team
*
*/
// ------------------------------------------------------------------- INCLUDES
#include "board.h"
#include "log.h"
#include "ledflash.h"
// ------------------------------------------------------------------ VARIABLES
static ledflash_t ledflash;
static log_t logger;
// ------------------------------------------------------ APPLICATION FUNCTIONS
void application_init ( void )
{
log_cfg_t log_cfg;
ledflash_cfg_t cfg;
/**
* Logger initialization.
* Default baud rate: 115200
* Default log level: LOG_LEVEL_DEBUG
* @note If USB_UART_RX and USB_UART_TX
* are defined as HAL_PIN_NC, you will
* need to define them manually for log to work.
* See @b LOG_MAP_USB_UART macro definition for detailed explanation.
*/
LOG_MAP_USB_UART( log_cfg );
log_init( &logger, &log_cfg );
log_info( &logger, "---- Application Init ----" );
// Click initialization.
ledflash_cfg_setup( &cfg );
LEDFLASH_MAP_MIKROBUS( cfg, MIKROBUS_1 );
ledflash_init( &ledflash, &cfg );
Delay_ms ( 100 );
log_printf( &logger, "----------------------------------\r\n" );
log_printf( &logger, " LED Flash Click \r\n" );
log_printf( &logger, "----------------------------------\r\n" );
log_printf( &logger, "/////////////////\r\n" );
log_printf( &logger, " WARNING!!! \r\n" );
log_printf( &logger, " DO NOT LOOK \r\n" );
log_printf( &logger, " INTO THE LEDS, \r\n" );
log_printf( &logger, " WHILE THAY ARE ON!!! \r\n" );
log_printf( &logger, "/////////////////\r\n" );
Delay_ms ( 1000 );
}
void application_task ( )
{
uint8_t state;
log_printf( &logger, " Charge Supercapacitor Enable \r\n" );
ledflash_char_supcap_enable( &ledflash );
Delay_ms ( 1000 );
state = ledflash_flash_rdy_flag( &ledflash );
if ( state == 0 )
{
log_printf( &logger, " Flash ON! \r\n" );
ledflash_flash_enable( &ledflash );
}
else
{
log_printf( &logger, " Flash OFF! \r\n" );
ledflash_flash_disable( &ledflash );
}
log_printf( &logger, "----------------------------------\r\n" );
}
int main ( void )
{
/* Do not remove this line or clock might not be set correctly. */
#ifdef PREINIT_SUPPORTED
preinit();
#endif
application_init( );
for ( ; ; )
{
application_task( );
}
return 0;
}
// ------------------------------------------------------------------------ END
额外支持
资源
类别:LED 段































