【LPC800 系列】 引脚配置及使用

关键字 :NXPLPC800MCU

使用单片机都脱离不了对引脚的控制,今天我们就来介绍一下 LPC800 系列的引脚。

  • 硬件平台硬件引脚模式介绍

首先我们先来看看 LPC800 系列 MCU 的引脚模式有哪些:

LPC824 的引脚模式有以下几种:

1)上 \ 下拉模式

2)开漏模式

3)迟滞模式

4)可编程数字毛刺滤波器

5)模拟模式

 

LPC804 的引脚模式有以下几种

1)上 \ 下拉模式

2)开漏模式

3)迟滞模式

4)模拟模式

可见 LPC804 的引脚不具有可编程数字毛刺滤波器的特性。

 

具体如何查看 LPC800 系列 MCU 的引脚电气属性有哪些,请参考各 MCU 的用户手册 IOCON 章节:

 

 

关于各个引脚模式和引脚配置的具体介绍,请参阅公众号 单片大师 中的博文“听说!脚也能说话 – 管脚属性和配置”,这里就不重复介绍了,链接如下:

https://mp.weixin.qq.com/s/XsnLaE01BEHxUHnlN4WfQw

  • 实战演练

话不多说,现在就来动手实践实践吧。平时我们都是用 GPIO 来控制引脚输出高低电平来做闪灯实验,今天我们用另外一种方式来实现。

硬件设计如下:

本示例使用 PIO0_13 & PIO0_16 两个引脚,由原理图可知当引脚为低电平时灯亮,高电平时灯灭。

 

软件设计:

打开 SDK 中任意一个工程,本示例打开的是 led_blinky 工程,在 main  函数中注释掉 GPIO 部分的代码,然后再添加以下代码:

 

 

 

注释掉的部分就是 GPIO 的部分,现在我们来讲讲添加的代码,在 while(1) 循环之前的代码,是开启 IOCON 模块的时钟,然后配置下拉电阻,此部分的代码就相当于是 GPIO 的初始化部分,相关寄存器的描述如下:

在 while(1) 循环中添加的代码,先是配置两个引脚为下拉模式,延时 1 s 后再配置为上拉电阻,这就相当于 GPIO 先控制输出低电平在输出高电平,就实现了灯的闪烁效果。

这部分的配置对于 LPC800 系列的 MCU 大同小异,主要是硬件上的不同,连接的IO引脚不一样,以 LPC845 为例将这部分代码移植过去,对应的 IO 引脚为 PIO0_12 ,同样打开 SDK 中的 led_blinky 工程,将代码复制过去:

 

烧录程序之后就可以看见板子上的灯一闪一闪的啦。

 

  • 注意事项

两个月之前在测试 LPC824 低功耗模式下的电流的时候达不到数据手册的典型值,怀疑是某些引脚漏电,就使能对应引脚的上下拉模式,然鹅,就在这个过程中发现了一个不在预期内的状况,在这里拿出来和大家分享一下,希望可以为遇到同样问题的胖友解决疑惑。

在调试的过程中,我们往往会进入 Debug 来查看寄存器的值来验证我们是否设置成功,在调试低功耗的时候我也是这样,将某个引脚的下拉电阻使能,然后关闭 IOCON 模块的时钟以节能,引脚设置代码如下图所示:

然后我进调试查看 PIO0_7 register 寄存器里 bit 4 : 3 的值,什么?还不知道怎么在调试里看寄存器的值?今天老 D 就教你这个实用的技巧,如下图所示:

点击需要的外设之后就能看见这个外设模块所需要的各个寄存器和对应的值啦。

 

现在我们来看看设置的 PIO0_7 引脚,将断点设置到关闭 IOCON 时钟那一步,然后点击 Run ,这时候我们并没有看到 PIO7 寄存器的 MODE 位变成下拉模式:

 

为啥会这样呢?前前后后检查了一遍代码,发现并没有任何问题,“闪灯”明明也是这样做的,然后继续重复检查…检查…检查…查…直到自闭。在摸索了一段时间之后,我注意到调试窗口寄存器的一个信息,点击其中任意一个寄存器,下方就会显示这个寄存器的地址信息,如下图所示:


然后我又打开用户手册,找到 PIO7 的寄存器,发现这两个的地址不一样,

 

哇,终于找到突破口了,真的是要口吐芬芳啊!!!又经过一轮检查过后,发现 keil 里面的 IOCON 模块寄存器的命名是按照手册上的寄存器地址按顺序规则来的,比如 IOCON 模块的寄存器第一个是 PIO0 ,地址为 0x4004 4000,接着每个寄存器地址 32 位递增,PIO1 是 0X4004 4004,以此类推,而用户手册对应的则是我们习惯的名称,同时也是对应 IO 口的名称, 0X4004 4000 对应的是 PIO0_17 寄存器,0X4004 4004 对应的是 PIO0_13 寄存器。每次这样都要用户手册和 keil 两边切换也是很麻烦,为了解决这个问题,我们可以在 keil 中打开 LPC824.h 文件,有如下定义:

这些就已经说明了相对应的寄存器了。

接下来说一下第 2 个遇到的问题,在我们了解清楚后就看我们设置的 PIO0_7 的寄存器,在调试里对应的寄存器名称是 PIO15 ,按照上面的断点,点击 Run ,可以看到已经成功设置了下拉,如下图所示:


然后接着执行下一步,关闭 IOCON 时钟,你会惊奇的发现,刚刚设置好的下拉又变回了上拉:  

为了验证是否验证成功,我将板子上接着的灯的 IO 引脚设置为下拉,然后编译烧录到板子上,结果灯一直亮着:

说明我们设置还是成功的,keil 中的显示只是关闭后显示的“虚假”信息,大家以后要是遇到这种情况就不用怀疑自己了。

引脚配置及使用还有配置过程中会遇到的问题已经介绍完了,接下来会介绍 LPC800 系列的串口,敬请期待!

 

 

 

 

 

参考资料

  1. 《LPC82X User Manual》

用户手册包含了外设配置方法,由 NXP 官网提供下载,链接如下:

https://www.nxp.com.cn/products/processors-and-microcontrollers/arm-microcontrollers/general-purpose-mcus/lpc800-cortex-m0-plus-/low-cost-microcontrollers-mcus-based-on-arm-cortex-m0-plus-cores:LPC82X?fpsp=1&tab=Documentation_Tab

 

 

 

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论

每天都是麻辣烫

每天都是麻辣烫

2021年3月25日
UP! UP! UP!