0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

CW32数字电压电流表软件教程-实验一:LED原理与驱动

CW32生态社区 来源:CW32生态社区 作者:CW32生态社区 2024-05-31 15:09 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

2.1.LED灯基础知识

2.1.1.LED灯结构组成

LED灯,也称发光二极管,是一种能够将电能转化为可见光的固态的半导体器件,它可以直接把电转化为光。LED的内部是一个半导体的晶片,晶片的一端附在一个支架上,一端是负极,另一端连接电源的正极,整个晶片环-氧树脂封装起来。常见的LED灯如图2-1所示。

图2-1 常见LED灯

2.1.2.LED灯发光原理

半导体晶片由两部分组成,一部分是P型半导体,另一端是N型半导体。这两种半导体连接起来的时候,它们之间就形成了一个P-N结。当电流通过导线作用于这个晶片的时候,电子就会被推向P区,在P区里电子跟空穴复合,然后就会以光子的形式发出能量,这就是LED灯发光的原理。

2.1.3.LED灯驱动原理

LED 驱动指的是通过稳定的电源为 LED 提供合适的电流和电压,使其正常工作点亮。LED 驱动方式主要有恒流和恒压两种。限定电流的恒流驱动是最常见的方式,因为 LED 灯对电流敏感,电流大于其额定值可能导致损坏。恒流驱动保证了稳定的电流,从而确保了 LED 安全。

LED 灯的驱动比较简单,只需要给将对应的正负极接到单片机的正负极即可驱动。LED的接法也分有两种,灌入电流和输出电流。

图2-2 LED接法示例

  • 灌入电流指的是LED的供电电流是由外部提供电流,将电流灌入我们的MCU;风险是当外部电源出现变化时,会导致MCU的引脚烧坏。
  • 输出电流指的是由MCU提供电压电流,将电流输出给LED;如果使用 MCU的GPIO 直接驱动 LED,则驱动能力较弱,可能无法提供足够的电流驱动 LED。

需要注意的 是 LED 灯的颜色不同,对应的电压也不同。电流不可过大,通常需要接入220欧姆到10K欧姆左右的限流电阻,限流电阻的阻值越大,LED的亮度越暗。

2.2.LED灯原理图

CW32F003小蓝板关于LED灯的原理图如图2-3所示

图 2-3 小蓝板LED灯原理图

2.3.LED灯驱动流程(库函数)

通过上面的原理图可以了解到,LED2中负极接到了电源地,LED2的正极经限流电阻R3连接到电源正。当核心板上电时,使LED2导通,这时便有电流流过发光二极管LED2,使LED2发光指示电源接入;

LED1的正极经限流电阻R5接到电源正极,LED1的负极连接到单片机的GPIO口上,通过LED灯的驱动原理,只需要将相应GPIO(PC0)配置为低电平即可点亮LED1。CW32F003小蓝板的LED部分实物图如图2-4所示

图 2-4 小蓝板LED实物图

2.3.1.配置流程

一般我们使用GPIO的端口,都需要有以下几个步骤。

  • 开启GPIO的端口时钟
  • 配置GPIO的模式
  • 配置GPIO的输出

从开发板原理图了解到LED2接的是单片机的PC0。我们要使能LED就需要配置GPIOC端口。下面我们就以LED1接的PC0进行介绍。

2.3.1.1.开启CW32F003系统内部时钟

CW32的系统内部时钟默认并不是我们想要的运行频率,在使用CW32之前我们需要先配置内部时钟树。查找CW32F003的用户手册可以找到系统内部时钟树如下图:

图2-5 CW32F003内部时钟树

在CW32的库函数中找到cw32f003_rcc.h,头文件中有时钟树相关配置的函数,如下图:

图2-6 时钟树相关配置函数

void RCC_Configuration(void)
{
  FLASH_SetLatency(FLASH_Latency_2); // 设置主频为48MHZ需要注意,Flah的访问周期需要更改为FLASH_Latency_2。
  RCC_HSI_Enable(RCC_HSIOSC_DIV1);   // 设置频率为48M
  RCC_SYSCLKSRC_Config(RCC_SYSCLKSRC_HSI);  //选择SYSCLK时钟源  48MHz
  RCC_HCLKPRS_Config(RCC_HCLK_DIV1);  //配置SYSTICK到HCLK分频系数  48MHz
  RCC_PCLKPRS_Config(RCC_PCLK_DIV8); //配置HCLK 到 PCLK的分频系数  6MHz
}

2.3.1.2.开启GPIO的端口时钟

CW32的外时钟默认是全部关闭,使用GPIO外设之前我们需要先开启对应的时钟。

在CW32提供的库函数中找到cw32f003_rcc.h,这个头文件包含了所有时钟相关的函数接口。外设时钟的接口如下图所示:

图2-7 GPIO配置相关函数

LED1的控制IO是PC0,因此需要打开GPIOC对应的时钟,代码如下:

__RCC_GPIOC_CLK_ENABLE();//打开GPIOC的时钟

2.3.1.3.配置GPIO初始化

GPIO初始化包含了模式,中断使能,io引脚位号。CW32的GPIO初始化是先把所有初始化项写在一个结构体里面,然后把结构体传入带初始化函数里,完成初始化功能。与GPIO相关的函数接口都在cw32f003_gpio.h头文件里面,我们先看GPIO模式有哪些,如下图所示:

图2-8 GPIO模式

GPIO模式包含了模拟输入,数字输入,数字上拉输入,数字下拉输入,数字推挽输出,数字开漏输出模式。根据发光二极管控制原理,PC0接在LED的反向端,因此PC0为低电平时,LED点亮。我们需要PC0输出高低电平,模式需要选择数字输出模式,由于开漏模式需要外部有上拉或者下拉电阻才可输出高低电平,所以我们选择推挽模式。代码如下:

GPIO_Init_Struct.IT = GPIO_IT_NONE;

GPIO位号如下图所示:

图2-10 GPIO位脚

LED的控制端为PC0,最后的这个0就是位号,配置代码如下:

GPIO_Init_Struct.Pins = GPIO_PIN_0;

以上配置就完成了GPIO的结构体初始化,然后我们需要调用初始化函数,在cw32f003_rcc.h里找到void GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init);包含了两个参数,第一个参数是GPIO的基地址,第二个参数是初始化配置结构体。调用代码如下:

GPIO_Init(CW_GPIOC, &GPIO_Init_Struct);

结合以上配置,完整代码如下:

GPIO_InitTypeDef GPIO_Init_Struct;
  __RCC_GPIOC_CLK_ENABLE();
  GPIO_Init_Struct.IT   = GPIO_IT_NONE;
  GPIO_Init_Struct.Mode = GPIO_MODE_OUTPUT_PP;
  GPIO_Init_Struct.Pins = GPIO_PIN_0;
  GPIO_Init(CW_GPIOC, &GPIO_Init_Struct);

2.3.1.4.配置LED输出

配置好GPIO之后,就可以进行点灯了。就是让PC0输出高低电平。在cw32f003_gpio.h头文件中可以找到函数

GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pins, GPIO_PinState PinState);

传参有三个,第一个是第一个参数是GPIO的基地址,第二个参数是引脚位号,第三个参数是输出状态。

GPIO_WritePin(CW_GPIOC,GPIO_PIN_0,GPIO_Pin_SET);//PC0输出高电平
GPIO_WritePin(CW_GPIOC,GPIO_PIN_0,GPIO_Pin_RESET);//PC0输出低电平

我们要点亮LED1根据上文的电路图可知要将PC0置低。2.3.1.5.程序下载接线我们使用DAP-Link作为程序下载媒介,DAP-Link的接线图如下。其中蓝色(3.3V)、绿色(GND)、紫色(数据线SWD)、灰色(时钟信号线SCK),与图2-12一一对应。

图2-11 DAP-Link接线图

图2-12 CW32F003程序下载接线

2.3.2.实验效果

最终的实验效果如下图所示:

图2-13 LED点亮实验现象

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • led
    led
    +关注

    关注

    243

    文章

    24433

    浏览量

    687267
  • 发光二极管
    +关注

    关注

    14

    文章

    1237

    浏览量

    68823
  • 电压电流表
    +关注

    关注

    0

    文章

    25

    浏览量

    2256
  • CW32
    +关注

    关注

    1

    文章

    281

    浏览量

    1669
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    CW32 MCU在高频率运行下的系统稳定性的提升方案

    问题,并提出系列应对措施,包括硬件设计改进和软件优化策略,以确保系统在高频工作环境中的可靠性和持续稳定运行。 具体内容包括: 高频运行对MCU的影响分析: 探讨CW32 MCU在高频率运行时,对电源
    发表于 12-04 08:04

    CW32单片机在智能马桶的应用

    1.温度感应与控制 智能马桶内设有温度传感器,通过CW32单片机的处理,可以实时感知到用户所需的座圈温度并根据用户的设定进行调节。当温度过高或过低时,单片机将发出信号,通过控制模块对座圈的加热或制冷
    发表于 12-04 08:01

    基于芯源CW32 MCU的LED闪烁示例及代码分析

    最近我在项目中使用了芯源的CW32 MCU,这是款非常适合物联网和低功耗应用的微控制器。在初步学习和使用中,我做了个简单的LED闪烁实验
    发表于 12-04 06:52

    CW32 MCU温度监测应用

    最近,我在项目中使用CW32 MCU,来实现个简单的温度监测系统。CW32的灵活性和性能让我在这个应用中得心应手。以下是我的实现过程和代码示例。 应用简介本项目通过连接个温度传感器
    发表于 12-03 08:03

    基于芯源半导体MCU cw32芯片制作的USB电压电流表

    1、项目功能介绍 基于芯源半导体MCU cw32芯片制作 USB电压电流表 基于芯源半导体MCU cw32芯片+INA199芯片制作 USB电压电流表,精度1%。可以检测
    发表于 12-02 06:39

    cw32 systick怎么用?

    cw32 systick怎么用
    发表于 12-01 08:10

    CW32嵌入式软件开发的必备知识

    嵌入式软件开发作为计算机科学和电子工程的交叉领域,要求开发人员具备系列的专业知识和技能。 而基于CW32的嵌入式软件开发必备知识包括以下部分: 1 、编程语言 熟练掌握C(C++
    发表于 11-28 07:48

    使用J-Flash来编程CW32 MCU

    (可选): 编程完成后,J-Flash提供了验证选项,用于检查闪存内容是否与原始固件文件致。 执行验证步骤以确保编程成功且没有数据损坏。 9.断开连接: 编程和验证完成后,你可以断开CW32 MCU
    发表于 11-25 07:00

    【活动评测】基于CW32的wegui实验+代码

    简介 最近参加了cw32生态社区的体验活动,CW32L012C8T6评估板是款非常典型的、用于展示和评估国产低功耗MCU的开发板。它的核心价值在于让开发者能够以极低的成本,接触到武汉芯源半导体
    的头像 发表于 11-19 16:37 457次阅读
    【活动评测】基于<b class='flag-5'>CW32</b>的wegui<b class='flag-5'>实验</b>+代码

    CW32 MCU用什么IDE开发?

    推荐使用IAR Embedded Workbench for ARM、Keil μVision for ARM等IDE开发CW32 MCU应用,其中新版本IAR EWARM直接支持CW32 MCU,Keil MDK-ARM则需要安装CW
    发表于 11-12 07:52

    CW32 MCU有哪些系列?

    目前CW32 MCU有通用高性能MCU、安全低功耗MCU、无线射频MCU等3个系列。其中射频MCU集成了无线收发器,主要包括CW32R031(2.4GHz BLE-Lite)系列和CW32W031(Sub-1G)系列。
    发表于 11-12 07:34

    如何使用新版本J-Flash编程CW32 MCU

    :AppData是隐藏目录,需打开显示。 3、将CW32 MCU器件支持包JlinkDevices_WHXY.rar解压到新建的JlinkDevices子目录即可。 4、运行JFlash.exe,通过Jlink连接CW32 MCU测试板,进行编程测试ok。
    发表于 11-12 07:24

    CW32 MCU的工作电压、工作温度是多少?

    CW32通用型MCU工作电压是1.65V~5.5V,射频MCU工作电压则是1.8V/2.2V~3.6V;通用型CW32F系列MCU,比如:CW
    发表于 11-12 06:49

    CW32 MCU用什么仿真器开发?

    理论上各主流IDE枚举的、支持ARM Cortex内核的所有硬件仿真器,比如:J-LINK,ULINK,DAP,ST-Link等,都可以仿真、下载CW32 MCU的应用代码。如果想实现量产或者离线下载应用代码,则必须配套支持CW32 MCU的PC端
    发表于 11-12 06:01

    安泰电压放大器驱动压电换能器能做哪些实验研究

    。本文将探讨电压放大器在驱动压电换能器方面的实验研究应用。 图:电压放大器在基于换能器的柔性电极实验中的应用 二、
    的头像 发表于 07-09 14:15 474次阅读
    安泰<b class='flag-5'>电压</b>放大器<b class='flag-5'>驱动压电</b>换能器能做哪些<b class='flag-5'>实验</b>研究