zoukankan      html  css  js  c++  java
  • Android深度探索(卷1)HAL与驱动开发学习笔记(7)

    Android深度探索(1)HAL与驱动开发学习笔记(7

    第七章 控制发光二极管

     

    1. LED驱动实现原理

     
       

    2. 编写LED驱动

    * 创建LED驱动的设备文件

    ·使用cdev_init 函数初始化cdev

    ·指定设备号

    ·使用cdev_add函数将字符设备添加到内核中字符设备组中

    ·使用class_creat宏创建stuct class

    ·使用device_creat 创建设备文件

    1. 卸载LED驱动的设备文件

      依次调用device_destoryclass_destoryunregister_chrdev_region 原型如下

      void device_destory(struct  class *class,dev_t devt)

      void class_destroy(struct class *cls)

      Void unregister_chrdev_region(dev_t from,unsigned count)

    1. 设置寄存器与初始化LED驱动

    * LED有两个引脚 :GPBOGPBI。其中一个引脚连接到了ARM处理器的G P I O端口,另一个引脚经过一个限流电阻连接到电源:VCC3上。当G P I O端口为低电平时,LED两端产生电压差,这时LED电流通过并发光;反之当GPIO端口为高电平时,LED中没有电流通过,LED将熄灭。由予高低电平之间切换非常快,所以LED亮灭之间要有-定的延迟,否则人眼无法捕捉到LED的变化。

    * 控制L E D需要通过3个寄存器来. 完 成这3个寄存器是G P M C O N(端口配置寄存器)GPMDAT(端口数据寄存器)和GPMPUD(端口上拉电路寄存器〉。

    * 使用GPMCON寄存器的低1 6位将LED的两个端口(GPBOGPBl)的属性,设为O u t p u t。每4位设置一个LED共4L E D .  O u t p u t的值是0 0 0 1(二进制),如果用十六进制数表示就是GPMCON寄存器的低1 6位的值是0x 1111。

     * 使用GPMDAT寄存器的低4位控制4LED的亮、灭。每一位控制一个LED。最低位控制离电池最近的LED. 0表示亮、l表示灭。

    * 使用GPMPUD寄存器的低8位分别打开4个LED的上拉(p u l l - u p)电路。两位控制一个LED的上拉电路。1 0C二进制)为打开上电路.如果用十六位数表示,GPMPUD寄存器的低8位是OxAA,才能同时打开4LED的上拉电路。

    1. 控制LED

    * 通过字符串

    * 通过I/O命令

     

    1. 测试LED驱动

    * 编写测试I/控制命令的通用程序

    * 使用NDK测试LED驱动

    1. LED 驱动的移植
  • 相关阅读:
    linux基础
    sublime、Typora
    Windows cmd命令
    idea打包java可执行jar包
    idea常用快捷键
    Linux入门学习笔记1:VI常用命令
    442. Find All Duplicates in an Array
    566. Reshape the Matrix
    766. Toeplitz Matrix
    561. Array Partition I
  • 原文地址:https://www.cnblogs.com/zhangnene/p/5560653.html
Copyright © 2011-2022 走看看