完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我们在做项目的时候,偶尔会遇到芯片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来解除这个对这个地址的保护; (4)都配置完成后,再对Reset或者NMI管脚进行正常的复用功能配置就可以了。 |
|
相关推荐 |
|
只有小组成员才能发言,加入小组>>
1904个成员聚集在这个小组
加入小组我的项目我做主,使用GN+Ninja来完成构建系统(VSCode开发RT106X)
36342 浏览 0 评论
NXP IMX8应用处理器快速入门必备:技巧、使用、设计指南
4391 浏览 0 评论
6043 浏览 1 评论
6757 浏览 0 评论
NXP i.MX6UL开发板(linux系统烧录+规格+硬件+模块移植)使用手册
4207 浏览 0 评论
615浏览 2评论
求助,S32G上Core M启动后如何让Core A在Flash指定位置加载uboot?
612浏览 2评论
ESP32-WROVER-IE + LAN8720以太网,GPIO0电压只有1.6v,无法正常进入spi flash boot模式如何解决?
602浏览 2评论
求分享适用于PN7160 Android的NFC工厂测试应用程序
692浏览 2评论
789浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-17 19:15 , Processed in 0.471924 second(s), Total 38, Slave 31 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号