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

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

3天内不再提示

一文解析蜂鸣器驱动及LED驱动编写

454398 来源:博客园 作者:z572089387 2020-09-23 15:30 次阅读

一:LED驱动编写

要编写LED驱动,首先的知道开发板的构造;开发板分为核心板与底板;编写驱动的第一步就是要看开发板,找到LED灯在开发板上的位置及所对应的名字;第一步就要查看核心板电路图,以及底板电路图;最后就是查看开发板手册,然后进行程序编写:

通过看开发板我们可以知道LED灯的位置的核心板上,在核心板上找到LED的电路图,Ctrl+F可以在文档中快捷查找:

通过电路图我们可以看出:LED灯的一端已经接高电平,只要给另一端加低电平LED就会被点亮。

然后查看LED在核心板上的引脚:

一文解析蜂鸣器驱动及LED驱动编写

由上图我们可以看出,LED1对应的是GPM4_0

然后通过芯片数据手册可以查到它的具体用法:

通过手册我们可以看出:GPM4CON 置一输出,表示控制,置零输入,表示检测,GPM4DAT表示它的值和引脚的电压状态对于,值为一时表示高电平,值为零时表示底电平,下面贴出代码:

 1     .global main
 2 main:
 3     mov ip, sp
 4     sub sp, sp, #12
 5     stmdb sp!, {fp, ip, lr}
 6     add fp, sp, #8
 7 
 8     ldr r3, gpmcon
 9     ldr r0, =0x1
10     str r0, [r3]
11 
12     ldr r3, gpmdat
13     ldr r0, =0x0
14     str r0, [r3]
15 
16     add sp, fp, #4
17     ldmdb sp, {fp, sp, pc}    
18 
19 gpmcon:
20     .word 0x110002e0
21 
22 gpmdat:
23     .word 0x110002e4

下面的用C语言代码是实现四个LED灯的闪烁

 1 #define GPM4CON (*(unsigned long *)0x110002e0)//宏定义
 2 #define GPM4DAT (*(unsigned long *)0x110002e4)
 3 
 4 void (*udelay)(int) = 0xc3e25f90;
 5 int main()
 6 {
 7     GPM4CON &= ~0xffff;
 8     GPM4CON |= 0x1111;
 9     
10     while(1) {
11         GPM4DAT |= 0xf;//led off
12         udelay(250000);
13         GPM4DAT &= ~0xf;
14         udelay(250000);//led on
15     }    
16 }

跑马灯:

 1 #define GPM4CON (*(unsigned long *)0x110002e0)
 2 #define GPM4DAT (*(unsigned long *)0x110002e4)
 3 
 4 void (*udelay)(int) = 0xc3e25f90;
 5 
 6 int main()
 7 {
 8     
 9     GPM4CON &= ~0xffff;
10     GPM4CON |= 0x1111;
11     unsigned long tmp = 0xf;
12 
13     while(1) {
14 
15         if((tmp & 0xf) == 0) {
16             tmp = 0xf;
17         }
18 
19         GPM4DAT = tmp << 1;
20         tmp = GPM4DAT;
21         udelay(250000);
22 
23     }
24 
25 }

流水灯:

 1 #define GPM4CON (*(unsigned long *)0x110002e0)
 2 #define GPM4DAT (*(unsigned long *)0x110002e4)
 3 
 4 void (*udelay)(int) = 0xc3e25f90;
 5 
 6 int main()
 7 {
 8     
 9     GPM4CON &= ~0xffff;
10     GPM4CON |= 0x1111;
11     unsigned long i = 0;
12     while(1) {
13         GPM4DAT = 0xf;
14         GPM4DAT &= ~(1 << i);//流水
15         udelay(500000);//延时
16         i++;
17         if(i == 4) {
18             i = 0;
19         } 
20     }
21 
22 }

上面程序总用到的延时函数udelay(),由于U-Boot作为嵌入式Linux系统的引导,不具有标准C库中的内容。要使用像printf函数,延时函数udelay(),就需要u-boot中提供的。u-boot函数内容在u-boot源码文件中就需要u-boot中提供的。u-boot函数内容在u-boot源码文件中的System.map文件中。System.map文件是被内核所使用的符号表。符号表是一个在符号名称与它们的存储器位置间的查询表格。符号名称可能是变量的名称或是函数名称。当要查询符号名称的位置或是特定位置的符号名称时,就会需要System.map。找到函数的对应地址,就可以对它进行使用了;

二:蜂鸣器驱动编写:

通过开发板我们可以看出蜂鸣器位于底板:

查看电路图:

通过查看底板手册可知,当XpwmTOUT0处于高电平是蜂鸣器就会响起;通过XpwmTOUT0我们在核心板上找到它的引脚

然后查看芯片手册:

由图我们可以看出GPD0CON为0x1时控制控制:GPD0DAT为1为高电平:下面贴出汇编代码:

 1     .global main
 2 main:
 3     mov ip, sp
 4     sub sp, sp, #12
 5     stmdb sp!, {fp, ip, lr}
 6     add fp, sp, #8
 7 
 8     ldr r3, gpdcon
 9     ldr r0, =0x1
10     str r0, [r3]
11 
12     ldr r3, gpmdat
13     ldr r0, =0x1
14     str r0, [r3]
15 
16     add sp, fp, #4
17     ldmdb sp, {fp, sp, pc}    
18 
19 gpdcon:
20     .word 0x114000a0
21 
22 gpmdat:
23     .word 0x114000a4

C语言的代码:

 1 #define GPD0CON (*(volatile unsigned long*)0x114000a0)
 2 #define GPD0DAT (*(volatile unsigned long*)0x114000a4)
 3 
 4 void (*udelay)(int) = 0xc3e25f90;
 5 int main(void)
 6 {   
 7     GPD0CON =  0x0001;
 8     while(1){
 9         GPD0DAT = 0x1;
10         udelay(250000);
11         GPD0DAT = 0x0;
12         udelay(250000);//延时
13     }
14     
15     return 0;
16 }
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • led
    led
    +关注

    关注

    242

    文章

    23296

    浏览量

    661307
  • 存储器
    +关注

    关注

    38

    文章

    7496

    浏览量

    163929
  • LED驱动
    +关注

    关注

    72

    文章

    1004

    浏览量

    138040
  • 蜂鸣器
    +关注

    关注

    12

    文章

    892

    浏览量

    45983
收藏 人收藏

    评论

    相关推荐

    LED驱动电源设计四大问题汇总

    LED驱动电源的质量好坏将会直接影响LED的寿命,因此如何做好LED驱动电源是
    的头像 发表于 11-28 17:14 513次阅读
    <b class='flag-5'>LED</b><b class='flag-5'>驱动</b>电源设计四大问题汇总

    LED驱动器常见故障解决

    LED驱动器是LED照明系统中的关键组件,负责将电源电压转换为适合LED发光的电压和电流。LED驱动
    的头像 发表于 10-14 17:39 1579次阅读

    led驱动电源怎么测量好坏

    LED驱动电源是LED灯具中非常重要的组成部分,它负责将输入的交流电或直流电转换为LED所需的恒定电流或恒定电压。个良好的
    的头像 发表于 10-14 17:27 852次阅读

    有源蜂鸣器驱动电路制作方法

    有源蜂鸣器驱动电路的制作方法主要包括准备工具与材料、焊接电路元件以及测试电路等步骤。以下是个制作方法: 、准备工具与材料 工具 :压线钳、热风枪焊台(或普通电烙铁)、万用表(用于测
    的头像 发表于 08-09 10:58 849次阅读

    multisim蜂鸣器驱动程序详解

    以下是关于Multisim蜂鸣器驱动程序的详解: 蜂鸣器简介 蜂鸣器种电子设备,用于发出声音信号。它广泛应用于各种电子设备中,如电话、闹
    的头像 发表于 08-09 10:18 960次阅读

    无源蜂鸣器怎么才会响 蜂鸣器驱动电路原理图

    无源蜂鸣器种常见的电子元件,广泛应用于各种电子设备中,如手机、电脑、家用电器等。它通过电磁感应原理产生声音,具有体积小、功耗低、响应速度快等优点。 、无源蜂鸣器的工作原理 1.1
    的头像 发表于 07-02 18:08 7947次阅读
    无源<b class='flag-5'>蜂鸣器</b>怎么才会响 <b class='flag-5'>蜂鸣器</b><b class='flag-5'>驱动</b>电路原理图

    LED照明恒流驱动芯片特点解析与SM16306推荐

    LED照明恒流驱动芯片是种电子芯片,用于控制和驱动LED灯,以保持电流恒定,从而使LED灯能够
    的头像 发表于 03-05 16:51 1284次阅读
    <b class='flag-5'>LED</b>照明恒流<b class='flag-5'>驱动</b>芯片特点<b class='flag-5'>解析</b>与SM16306推荐

    led驱动电源如何调整电流大小的方法

    LED(Light Emitting Diode)是种半导体器件,经常被用作照明、显示和指示灯。为了驱动LED,需要使用LED
    的头像 发表于 02-27 17:50 6754次阅读

    led驱动器输出电流大有什么影响

    LED驱动器是将电源电压转换为适合LED工作的电流的设备。LED驱动器的输出电流大小对LED的工
    的头像 发表于 02-27 17:37 3087次阅读

    LED驱动电路图分享

    LED驱动电路是种用于驱动LED发光的电子电路。LED(发光二极管)是
    的头像 发表于 02-18 16:55 4140次阅读
    <b class='flag-5'>LED</b><b class='flag-5'>驱动</b>电路图分享

    典型LED驱动电路图分享

    LED驱动电路是种电源电路,用于将输入的电源电压转换为适合LED的直流电压,以驱动LED正常工
    的头像 发表于 02-07 18:29 1.2w次阅读
    典型<b class='flag-5'>LED</b><b class='flag-5'>驱动</b>电路图分享

    LED驱动电源的分类与特性解析

    LED驱动电源负责为LED提供恒定的电流,确保其稳定运行。如同心脏对人体的重要性般,LED驱动
    的头像 发表于 02-01 14:27 1234次阅读
    <b class='flag-5'>LED</b><b class='flag-5'>驱动</b>电源的分类与特性<b class='flag-5'>解析</b>

    定电压LED转换器驱动及注意事项

    定电压LED转换器驱动种常见的LED驱动方式,它通过将个固定的电压源转换成适合
    的头像 发表于 01-30 10:01 954次阅读

    高效率降压型 LED 恒流驱动芯片MT7812中资料

    电子发烧友网站提供《高效率降压型 LED 恒流驱动芯片MT7812中资料.pdf》资料免费下载
    发表于 01-26 16:10 3次下载

    高效率降压型 LED 恒流驱动芯片MT7812中资料

    电子发烧友网站提供《高效率降压型 LED 恒流驱动芯片MT7812中资料.pdf》资料免费下载
    发表于 01-26 09:56 0次下载