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

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

3天内不再提示

嵌入式技术之GPIO控制LED工作原理

454398 来源:博客园 作者:wanglinwei 2020-09-24 10:59 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

基本概念:

1.GPIO--通用IO口,通过芯片针脚来控制或读取外设的数据。

2.GPIO口的使用原理,通过设置GPXXCON, GPXXDAT, GPXXPUL等寄存器来设置GPIO口的状态。

原理图:

跟硬件相关的部分,一定要阅读原理图,然后通过查找SoC的用户手册来查找相应的寄存器设置即可。

底板电路图:

核心板电路图:

可知在OK6410上4个LED灯是通过GPM这一组的GPIO口控制的,分别是GPM0-GPM3四组。

然后打开S3C6410X User's Manual,查找GPM相关的寄存器:

通过上面内容找到:

GPMCON 地址 0x7F008820

GPMDAT 地址 0x7F008824

由于LED连接着GPM0-GPM3,所以通过上面的内容可以知道,GPMCON设置的值应该为0x00001111,意思是将GPM0-GPM3设置为输出,这样通过设置GPMDAT[5:0]来控制响应针脚的高低电平,使LED亮或灭。

代码:(以下代码参考了友善之臂Tiny6410的汇编代码,并非原创)

汇编代码:

start.S

Makefile:

1 led.bin: start.o

 2         arm-linux-ld -Ttext 0x50008000 -o led.elf $^
 3         arm-linux-objcopy -O binary led.elf led.bin
 4         arm-linux-objdump -D led.elf > led_elf.dis
 5 %.o : %.S
 6         arm-linux-gcc -o $@ $< -c
 7 
 8 %.o : %.c
 9         arm-linux-gcc -o $@ $< -c 
10 
11 clean:
12         rm *.o *.elf *.bin *.dis  -rf

然后make,可以得到led.bin,通过tftp下载到开发板中:

然后就可以看到OK6410板上的四个LED灯开始一起闪烁。

总结:

1.GPIO口的使用其实是SoC外设控制中最简单的,只要抓住GPIO的几个寄存器,将他们的值设置正确,就可以完成相应的控制功能。

2.一定要学会查看SoC的User's Manual的方法,这样当SoC换成其他品牌时,可以以不变应万变。

3.使用ld来链接.o文件时,一般会指定-Ttext选项,表示该代码会在内存的哪个地址加载,通过查看User's Manual,你可以决定这个地址的范围,如下图,0x50000000-0x6FFFFFFF地址区间映射到DRAM上,所以绝大部分的资料中,S3C6410中的内存地址都是0x5xxxxxxx类似的地址。也有一些0xcxxxxxxx类似的地址,这是打开SoC中的MMU后进行物理地址和虚拟地址映射后的结果,如果打开了MMU,就可以使用0xcxxxxxxx这样的地址,否则无法使用。

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

    关注

    22

    文章

    1604

    浏览量

    111180
  • 嵌入式技术
    +关注

    关注

    10

    文章

    366

    浏览量

    43279
  • GPIO
    +关注

    关注

    16

    文章

    1313

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

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

    的数据手册及用户手册,查找所需外设工作原理。 4、 嵌入式操作系统(深入知识点) 掌握常用的嵌入式操作系统,如μC/OS、FREERTOS等,了解其内核、进程管理、内存管理、设备管理和文件系统等基本原理
    发表于 11-28 07:48

    嵌入式和FPGA的区别

    开发中做出更明智的技术选择。 基本概念解析 嵌入式系统(Embedded System)是一种专用计算机系统,通常包含微处理器/微控制器、存储器和专用外围设备,被设计用于执行特定功能。它强调
    发表于 11-19 06:55

    力芯微GPIO拓展系列芯片赋能智能硬件与嵌入式系统

    在当今智能硬件与嵌入式系统飞速发展的时代,主控芯片的GPIO引脚资源常常面临捉襟见肘的困境。为了突破这一瓶颈,力芯微GPIO拓展系列芯片赋能智能硬件与嵌入式系统,也为工程师们带来了高效
    的头像 发表于 10-31 16:40 247次阅读
    力芯微<b class='flag-5'>GPIO</b>拓展系列芯片赋能智能硬件与<b class='flag-5'>嵌入式</b>系统

    嵌入式从入门到进阶,怎么学?

    嵌入式从入门到进阶,怎么学? 嵌入式学习的核心是 “软硬结合的技术壁垒”,科学分层才能高效突破。以下是从入门到高阶的精简路线,帮你避开弯路: 1、基础奠基层:构建技术底座 C 语言聚焦
    发表于 09-02 09:44

    嵌入式接口通识知识GPIO接口

    接收外部信号,也可以作为输出控制外部设备,例如LED、蜂鸣器、按钮或继电器等。1.2 工作模式GPIO的基本工作是负责采集外部器件的信息或者
    发表于 08-14 14:39

    盘点嵌入式就业所需要的技能有哪些?

    在数字化和智能化的大潮中,嵌入式系统无疑是支撑现代科技发展的核心力量。从智能手机到智能汽车,再到智能家居,嵌入式技术无处不在,无时不刻不在影响着我们的生活和工作方式。因此,对于那些对科
    发表于 08-11 15:43

    入行嵌入式应该怎么准备?

    是至关重要的,因此,掌握C/C++编程技巧是入行嵌入式的基础。 二、硬件基础知识了解基本的电子电路和数字逻辑是嵌入式系统开发的基础。你需要了解数字电路、模拟电路、传感器和执行器的工作原理。此外,对于处理器
    发表于 08-06 10:34

    飞凌嵌入式2025嵌入式及边缘AI技术论坛圆满结束

    飞凌嵌入式「2025嵌入式及边缘AI技术论坛」在深圳深铁皇冠假日酒店盛大举行,此次活动邀请到了200余位嵌入式技术领域的
    的头像 发表于 04-28 13:57 3850次阅读
    飞凌<b class='flag-5'>嵌入式</b>2025<b class='flag-5'>嵌入式</b>及边缘AI<b class='flag-5'>技术</b>论坛圆满结束

    如何成为一名嵌入式软件工程师?

    、Java等)和软件开发工具,还需要对硬件的工作原理有深入的理解。 在团队中,嵌入式软件工程师往往扮演着核心角色,他们的工作直接关系到产品的性能、稳定性和用户体验。 02掌握核心技能与知识
    发表于 04-15 14:37

    嵌入式教育科普|GPIO接口全面解析

    知识的掌握直接影响着嵌入式项目实现功能的成效。本文将以GPIO接口为切入点,深入解析其工作原理技术特性,希望能帮助屏幕前想要学习嵌入式开发
    的头像 发表于 03-05 11:11 2765次阅读
    <b class='flag-5'>嵌入式</b>教育科普|<b class='flag-5'>GPIO</b>接口全面解析

    如何成为嵌入式开发工程师?

    ,无论是个人项目还是作为团队的一员。- 尝试从头开始构建一些小的嵌入式系统,比如控制一个LED灯或者读取传感器数据。 8. 持续学习:- 随着技术的发展,持续学习新的工具和
    发表于 02-19 10:39

    GPIO嵌入式系统中的作用

    在现代电子系统中,嵌入式系统因其小型化、低成本和高效率而变得越来越流行。这些系统广泛应用于从简单的家用电器到复杂的工业自动化设备。在这些系统中,GPIO(通用输入/输出)接口是连接微控制器与外部世界
    的头像 发表于 01-09 09:45 1535次阅读

    为什么嵌入式驱动开发工程师可以拿高薪?

    。 为什么嵌入式驱动开发工程师可以拿高薪? 嵌入式驱动开发工程师属于技术密集型工作,不仅需要深入了解硬件的工作原理,还需掌握各种编程语言
    发表于 01-07 16:56

    嵌入式好找工作吗?

    功能稳定且智能化运行,再到工业领域里的自动化生产线,靠嵌入式设备精准控制生产流程,还有医疗设备中那些辅助诊断、精准治疗的仪器等。可以说,它横跨了消费电子、汽车、工业、医疗等众多行业,行业覆盖面如此广
    发表于 12-16 15:43

    新手怎么学嵌入式?

    的基础上增加了面向对象编程的特性,有助于编写更复杂的嵌入式程序。 3. 学习硬件知识 嵌入式技术与硬件紧密相关,因此你需要了解一些基本的硬件知识。比如微控制器(MCU)、微处理器(
    发表于 12-12 10:51