amobbs 东莞阿莫电子网站/东莞南城健逸电子贸易商行网站

 找回密码
 注册
bottom↓
查看: 765|回复: 97

【原创】Kinetis L系列将NMI/Reset管脚复用成GPIO需要注意的问题

[复制链接]
发表于 2014-7-16 22:27:29 | 显示全部楼层 |阅读模式
本帖最后由 FSL_FAE_JiCheng 于 2014-7-16 22:30 编辑

    我们在做项目的时候,偶尔会遇到芯片IO管脚资源不够的问题,造成这种情况的原因有几种情况,一个是当初的需求分析没有做好,考虑不周,二是成本方面的考虑(小Pin脚的便宜些),还有就是产品对PCB板体积的苛刻要求也需要小封装的芯片,诸如此类吧。这个时候如果管脚资源的差的很多那就没有办法只能换片子了,但是如果差那么一两个的话,可能我们就会把“邪恶的目光”瞄向平时不怎么在意的NMI和Reset了,这也是木有办法的事,这两位平时坐“冷板凳”的也该登场了,呵呵。

    还好现在芯片越做越强大,很多芯片都配备了功能强大的管脚复用功能,这还是没有办法的事情,小小的芯片里装的外设资源太多了,但是管脚就那么几个,所以只能复用了,不过NMI和Reset这两个管脚很多芯片没怎么敢动它们,毕竟这两个脚还是比较“敏感”的危险人物,颇有些老虎屁股摸不得的架势,但是总是有那么些个胆大的(实际上胆大的挺多,呵呵,现在大多芯片都可以支持将它们两个当成复用管脚)。下面我就说说如何把Freescale公司的Kinetis L系列(Cortex-M0+)的NMI脚和Reset脚复用成GPIO的方法及注意事项。

    可能用过KL系列的人会对它的管脚复用功能比较熟稔,觉着像配置其他管脚那样配置下管脚控制寄存器PORTx_PCRn中的MUX位就可以了,但是NMI和Reset比较还是“身份地位”比较特殊,单纯在管脚控制寄存器中配置还不能释放这两个管脚对IO的控制(这两位“大爷”比较固执,呵呵),我们还需要在软件上将不可屏蔽中断(NMI)和外部复位(Reset)这两个功能彻底禁掉才可以,也就是说需要两个操作才能让他们挪窝给GPIO用(其他管脚只需要第一步就可以了),如下图,需要将FTFA_FOPT这个寄存器的Reset pin或者NMI pin功能禁掉,然后再在代码中将该引脚复用成GPIO功能,这样就可以保证该管脚正常输出,下面具体介绍下配置的过程:



(1)该寄存器FTFA_FOPT寄存器为flash重加载寄存器,即上电或者复位时从0x40d这个flash地址读取数据到该寄存器,所以可以在下载代码的时候修改该flash地址内容;

(2)打开工程下IAR工程中Vectors.h头文件,找到如下内容修改CONFIG_4(代表的地址范围为0x40c~0x40f地址内容),即将0x40D地址内容修改成0xF7(我这里只修改了Reset,NMI类似):


(3)在新版本的IAR中默认对0x400~0x40f地址范围保护不擦写,所以即使上面做了修改也没有真正擦写成功,这样可以通过配置IAR的flashloader来解除这个对这个地址的保护,配置方法可以参考我之前的一篇博客《浅谈知识产权保护方法之加密Kinetis K60(方案一)》

(4)都配置完成后,再对Reset或者NMI管脚进行正常的复用功能配置就可以了。

    呼。。。闲扯了不少,重点的东西还是在后面4个配置步骤,这里写出来也是提醒大家复用配置Reset或者NMI脚需要注意的问题,不过实际上我觉着吧一般情况下(不到万不得已)还是不要修改这两个管脚为好,毕竟这两个脚的确是比较敏感的,尽量不要去碰,免得引来不必要的麻烦。好了,到这了,洗洗睡觉去,未完待续~

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
发表于 2014-7-17 12:52:33 | 显示全部楼层
我的经验是:在第一次下程序之前一定要把NMI脚拉高或悬空,第一次下程序时要把NMI禁用掉,以后就可以随便当GPIO使用了。
发表于 2014-7-17 13:15:05 | 显示全部楼层
wanstrive 发表于 2014-7-17 12:52
我的经验是:在第一次下程序之前一定要把NMI脚拉高或悬空,第一次下程序时要把NMI禁用掉,以后就可以随便当 ...

Kinetis E系列、Kinetis EA系列的禁NMI方式 与Kinetis 其他系列不一样呢。
发表于 2014-7-17 14:33:44 | 显示全部楼层
请问这些方法(或者原则)适用于K系列么?
另外如果Reset引脚用作GPIO了,这时看门狗需要复位芯片咋办……?
发表于 2014-7-17 14:57:17 | 显示全部楼层
lileistone 发表于 2014-7-17 14:33
请问这些方法(或者原则)适用于K系列么?
另外如果Reset引脚用作GPIO了,这时看门狗需要复位芯片咋办…… ...

适合K系列
复位信号由内部发启的还是可以正常复位芯片的,但此时你的Reset_b外部复位引脚功能就禁止了。
 楼主| 发表于 2014-7-17 16:56:51 | 显示全部楼层
wanstrive 发表于 2014-7-17 12:52
我的经验是:在第一次下程序之前一定要把NMI脚拉高或悬空,第一次下程序时要把NMI禁用掉,以后就可以随便当 ...

嗯,你的经验很对,呵呵。
 楼主| 发表于 2014-7-17 17:00:30 | 显示全部楼层
lileistone 发表于 2014-7-17 14:33
请问这些方法(或者原则)适用于K系列么?
另外如果Reset引脚用作GPIO了,这时看门狗需要复位芯片咋办…… ...

试用K系列,另外内部的看门狗复位不会受影响,因为这个禁用只是把Reset脚与外部Pin脚断开了。
发表于 2015-1-4 15:44:28 | 显示全部楼层
以前用过芯片的复位脚是不能用作GPIO的
发表于 2015-1-5 17:14:48 来自手机 | 显示全部楼层
作为测试学习还是不错的
发表于 2015-1-5 20:06:27 | 显示全部楼层
如果RST、SWD口都同时被复用,在芯片配置这部分IO前最好加段延时,否则重烧程序就会比较坑爹了,不知道飞思卡尔的上电复位到程序开始运行时间有多长,有没有足够的时间给仿真器成功连接上。
发表于 2015-9-30 17:12:18 | 显示全部楼层
请问KE系列的如何在系统运行前禁止掉,KE系列的与KL系列的不一样
友情提示:标题不合格、重复发帖,将会被封锁ID。详情请参考:论坛通告:封锁ID、获得注册邀请码、恢复被封ID、投诉必读
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs 东莞阿莫电子网站/东莞南城健逸电子贸易商行网站 ( 公安备案:44190002001997(交互式论坛) 工信部备案:粤ICP备09047143号 )

GMT+8, 2020-3-31 16:58

阿莫电子论坛, 原"中国电子开发网"

© 2004-2018 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表