博客
关于我
Exynos 4412处理器流水灯LED实现代码及过程详解
阅读量:561 次
发布时间:2019-03-09

本文共 1695 字,大约阅读时间需要 5 分钟。

pletion of the ARM开发板的实验工作。这篇文章将从芯片结构入手,解析如何通过软件控制四个LED的亮灭状态,并最终实现LED显示器的动态画面展示。

第一部分:芯片结构与接法

本次实验采用的是标准的ARM板,他们都是通过GPX2/3等芯片扩展接口进行控制。首先需要理解每个LED对应的管脚定义和驱动电路逻辑。通过观察 chipset手册,确认了:

  • LED2:GPX2_7管脚
  • LED3:GPX1_0管脚
  • LED4:GPF3_4管脚
  • LED5:GPF3_5管脚

所有管脚默认为输出低电平模式。当某些信号线设置为高电平时,会形成电位差,使LED灯泽亮。

第二部分:寄存器配置

通过对芯片手册的深入分析,可以发现每个LED对应的控制寄存器和数据寄存器的具体配置地址:

控制寄存器

  • LED2:GPX2CON位于0x1100 0c40,有效位为[31:28]
  • LED3:GPX1CON位于0x1100 0c20,有效位为[3:0]
  • LED4:GPF3ON位于0x1140 01e0,有效位为[19:16]
  • LED5:同样由GPF3ON控制,有效位为[23:20]

以上寄存器均用于设置对应管脚的驱动模式。具体操作步骤为:

  • 将对应位初始化为输入模式(如LED2的GPX2_7设置为0x0)
  • 或者直接设置为输出模式(如LED3的GPX1_0设置为0x1)
  • 这些操作需要通过DDRAM内存一次性写入/写出完成,并启用对应的数据寄存器。

    数据寄存器

    对应的数据寄存器地址分别为:

    • LED2:GPX2DAT @ 0x1100 0c44
    • LED3:GPX1DAT @ 0x1100 0c24
    • LED4/5:GPF3DAT @ 0x1140 01e4

    数据寄存器用于存储每个LED对应的电平模式:

    • 设置位为1时,输出高电平(LED开启)
    • 设置位为0时,输出低电平(LED熄灭)

    第三部分:代码实现

    在Linux系统中,通过编写start.S文件实现对LED的控制。代码主要包含以下几个部分:

    // 初始化 LED2ldr r0, =0x11000c40ldr r1, [r0]bic r1, #0xf0000000orr r1, #0x10000000str r1, [r0]// 初始化 LED3ldr r0, =0x11000c20ldr r1, [r0]bic r1, #0xforr r1, #0x1str r1, [r0]...// LED循环控制loop:ldr r0, =0x11000c44ldr r1, [r0]orr r1, #0x80str r1, [r0]bl delayldr r1, [r0]bic r1, #0x80str r1, [r0]bl delay

    这样的代码实现了对所有LED的逐个控制。同时,通过延时函数(bl delay)确保人眼能观察到LED的状态变化。

    第四部分:编译与烧录

    通过Makefile完成编译和烧录流程:

    all:    arm-none-linux-gnueabi-gcc start.S -o start.o -c -g    arm-none-linux-gnueabi-ld -Ttext 0x40008000 start.o -o start.elf    arm-none-linux-gnueabi-objcopy -O binary start.elf start.bin    cp start.bin /mnt/hgfs/Unbantu_file

    完成编译后,需要将生成的start.elf文件烧录到ARM开发板中,并将start.bin文件复制到指定路径。

    第五部分:使用与测试

    通过超级终端执行以下命令完成LED控制:

    go 40008000

    此时,开发板上的四个LED将开始按顺序轮流闪烁,形成一个动态的显示效果。整个开发过程验证了ARM平台上LED显示器的控制方法,标志着本次开发任务的圆满完成。

    这篇文章通过详细的分析和实践,展示了如何在ARM开发平台上实现基本的LED控制功能,并为后续的开发奠定了良好的基础。

    转载地址:http://gqisz.baihongyu.com/

    你可能感兴趣的文章
    Postman还能做Mock?又学了一招!
    查看>>
    postman进行http接口测试
    查看>>
    Postman高阶技能:Collection集合批量运行!
    查看>>
    postMessage跨标签页共享数据
    查看>>
    QImage对一般图像的处理
    查看>>
    post为什么会发送两次请求?
    查看>>
    Post表单提交TextArea的值出现转译乱码问题 - Spring MVC处理表单提交
    查看>>
    Power BI 中的 Python 可视化需要什么设置?任何特定的 matplotlib 包版本或系统设置?
    查看>>
    Power BI:如何在 Power Query 编辑器中将 Python 与多个表一起使用?
    查看>>
    power english (3) main text -emotion mastery - focus
    查看>>
    POWER ENGLISH (6) - MODEL
    查看>>
    power english (1) —— passion
    查看>>
    Power English (1) 原文
    查看>>
    power English (3)原文
    查看>>
    POWER ENGLISH(7)- repetition
    查看>>
    SpringBoot中集成SpringBatch详细解析与实战示例(CSV文件读取十万条数据进行业务处理后写入Mysql数据库)
    查看>>
    powerbi 一张表在另外一张表中出现的数量_PowerBi之初步学习笔记
    查看>>
    QGIS怎样设置简体中文以及新建可编辑的多边形的图层
    查看>>
    PowerBuilder 使用自定义事件触发键盘Enter事件
    查看>>
    PowerCreatorCMS UploadResourcePic 任意文件上传漏洞复现
    查看>>