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

    文章

    1607

    浏览量

    112101
  • 嵌入式技术
    +关注

    关注

    10

    文章

    367

    浏览量

    43566
  • GPIO
    +关注

    关注

    16

    文章

    1334

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    深度剖析CEC1702:嵌入式控制器的卓越

    深度剖析CEC1702:嵌入式控制器的卓越选 在当今的物联网时代,嵌入式控制器的性能和安全性至关重要。CEC1702作为一款具备强大加密支
    的头像 发表于 04-07 17:15 480次阅读

    嵌入式单片机开发学习路径

    ,这时候你能清晰的感受到自己的进步。 2.2 学习电路基础 嵌入式开发离不开硬件知识。掌握基本的电路知识,包括电阻、电容、二极管、三极管等元器件的工作原理及其在电路中的应用。这部分知识可能你会觉得枯燥
    发表于 02-09 15:42

    嵌入式新手必看!GPIO调试从0到1:计算、操作、排错全指南

    嵌入式开发中,GPIO(通用输入输出口)是最基础也最常用的硬件接口 —— 小到控制一颗 LED 亮灭、读取一个按键状态,大到驱动传感器、控制
    的头像 发表于 02-01 16:55 4147次阅读
    <b class='flag-5'>嵌入式</b>新手必看!<b class='flag-5'>GPIO</b>调试从0到1:计算、操作、排错全指南

    嵌入式开发常用函数速查表

    嵌入式开发中,掌握常用函数的用法可以大大提高开发效率。无论是单片机初学者还是有一定经验的工程师,熟悉函数库和调用方式都是必备技能。今天,我们为大家整理一份嵌入式开发常用函数速查表,覆盖GPIO
    的头像 发表于 01-19 09:06 474次阅读
    <b class='flag-5'>嵌入式</b>开发常用函数速查表

    什么是嵌入式应用开发?

    系统中,用于控制、监测或通信等特定用途。与一般计算机系统不同,嵌入式系统通常具有较小的存储容量、处理能力和功耗,且需要满足特定的实时性、可靠性和安全性要求‌。 应用领域 嵌入式系统广泛应用于各种设备
    发表于 01-12 16:13

    arm嵌入式主板优缺点

    嵌入式主板是嵌入在设备里面做控制、数据处理使用的CPU板 ,常见的有两类,即基于X86的嵌入式主板和基于RISC的ARM 嵌入式主板。今天我
    发表于 01-08 07:08

    系统嵌入式的学习路线

    到搞的很精通,我要学会抓住重点,学会取舍,达到一通百通,事半功倍的学习效果。 首先嵌入式技术主要分为嵌入式软件和嵌入式硬件2大方向。 嵌入式
    发表于 12-16 07:49

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

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

    嵌入式和FPGA的区别

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

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

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

    嵌入式开发就业还有前景吗?

    嵌入式开发的主要工作是开发各种工业控制设备和系统,如数控机床、工业机器人、智能制造等。嵌入式开发人员需要掌握相关的硬件和软件技术,如处理器
    发表于 07-16 10:47