嵌入式学习笔记之GPIO_点亮一个LED

目录

 

点亮LED:

如何点亮一个LED:

LED驱动方式:

2440启动流程和GPIO操作:

启动流程介绍:

Nor启动:

Nand 启动:

GPIO接口介绍:

GPxCON寄存器

GPxDAT寄存器

GPxUP寄存器

怎么使用软件访问硬件:

访问单个引脚

以总线方式访问硬件

点亮LED:

寄存器配置:


点亮LED:

如何点亮一个LED:

  1. 查看原理图,确定控制LED的引脚

  2. 看主芯片的芯片手册,确定如何设置控制这个引脚

  3. 写程序

LED驱动方式:

LED电路中通常为了保护LED会加电阻减小电流,用芯片引脚控制电路通断的时候,如果引脚驱动能力不足,(有的芯片为了省电,其引脚一般输出1.2V,可以输出的电流小于LED的工作电流)这时可用三极管驱动:

  有俩种方式:

 

  假设三极管正常工作于放大区,vcc为5V,芯片输出1.2v,当芯片输出高电平时,基极到发射极通,三极管通路,led亮,反之led灭.这种方式是LED输出高电平的时候LED亮.

 

这种方式较为复杂,但是和上面分析一样,当芯片输出低电平时候,也就是0,三极管1是断路的,于是1脚的电压就是VCC也就是5V,接下来分析就和上面一样这样三极管2也就短路,正常工作,LED亮.这种方式是芯片输出低电平的时候LED亮

2440启动流程和GPIO操作:

启动流程介绍:

/下图是使用的2440系统框架

  启动可以分为NOR启动和Nand启动,一一介绍:

Nor启动:

nor flash的基地址为0,片内RAM地址为0x4000 0000;

cpu读出nor上第一个指令(前四个字节),执行

cpu继续读出其他指令;

Nand 启动:

把片内4K RAM基地址为零,nor flash不可直接访问,2440硬件操作将nand前4k内容复制到片内RAM中,然后cpu从0地址取出第一条指令,执行.后4K内容可以通过操作读取

GPIO接口介绍:

  GPIO (General Purpose I/O Ports)即通用输入/输出端口,就是一些可以输出高低电平或者可以读出这些引脚的电平的引脚;

  S3c2440有130个i/o口,分为A-J 九组:GPA, GPB,…GPJ,可以通过设置寄存器来确定某个引脚用于输入,输出,还是一些其他功能,比如: GPH6可以作为一般的输入,输出引脚,还可以用于串口.

 通过寄存器来操作GPIO引脚:

  设置大多相似:GPxON 用于选择引脚功能,GPxAT用于读/写引脚数据, 另外GPxUP用于确定是都使用内部上拉电阻..

GPxCON寄存器

Con-configure配置,也就是用于选择引脚的功能,

A组和B到J组在功能选择方面有些不一样,

GPxCON中的每一位对应一根引脚(共23根引脚),当某一位设置为0时,相应的引脚为输出功能,然后设置GPxDAT中相应为写入0或者1让引脚输出低电平或者高电平:

  一般来说是这样设置的,但是根据芯片手册可以看出,GPACON对应的引脚设置为1的时候不是设置为输入功能而是地址控制,或者直接就是地址线,一般来说GPACON 都设置为全1也就是0xffff ffff 用于访问外部存储部件.

B-H/J组在寄存器操作方面完全相同,GPxCON中每俩位控制一根引脚: 00-输入 01-输出 10-特殊功能 11-保留不用

GPxDAT寄存器

用于读写引脚:当引脚被设为输入时,读此寄存器可知相应引脚电平状态是高还是低;当引脚设为输出时,写此寄存器相应位可零此引脚输出高电平或者低电平.

GPxUP寄存器

某位为1时,相应引脚无内部上拉电阻;为零时,对应引脚使用内部上拉电阻.上拉电阻,下拉电阻的作用在于:当GPIO口引脚处于高阻态的时候,它的电平状态是由上拉电阻,下拉电阻确定

高阻态:

在总线连接的结构上。总线上挂有多个设备,设备与总线以高阻的形式连接。这样在设备不占用总线时自动释放总线,以方便其他设备获得总线的使用权.

大部分单片机I/O使用时都可以设置为高阻输入,高阻输入可以认为输入电阻是无穷大的,认为I/O对前级影响极小,而且不产生电流(不衰减),而且在一定程度上也增加了芯片的抗电压冲击能力

怎么使用软件访问硬件:

访问单个引脚

单个引脚的操作无外乎三种:输出高低电平;检测引脚状态,中断.对你某个引脚的操作一般通过都、写寄存器来完成。

以总线方式访问硬件

这种方式控制硬件更加常见:以Nor Flash的访问为例

图中,缓冲器的作用是为了提高驱动能力,隔离前后级信号。

点亮LED:

  这里用汇编语言写:

根据原理图

D10-gpf4          D11-gpf5      D12-gpf6

   Led是低电平点亮,于是只需要将对应的引脚配置为输出引脚,然后配置输出低电平即可

寄存器配置:

GPFCON-0X56000050   GPFDAR-0X56000054

GPFCON的13-8位设置为010101,即设置为输出引脚

GPFDAT 对应的位置写0/1输出即输出低/高电平

于是汇编可以写:

Makefile:

2-编译 3-链接 4-生成bin文件

最后make,将生成的.bin文件烧到开发板可以看到D10亮

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值