搜索

[8/16位单片机] 【Curiosity Nano测评报告】 外部引脚重定位之初体验(一)

[复制链接]
2405|28
 楼主 | 2020-6-4 15:01 | 显示全部楼层 |阅读模式
本帖最后由 guojunhope 于 2020-6-5 06:24 编辑

      本文对PIC18F27-47Q10系列新增的PPS(Peripheral Pin Select)——“外部引脚重定位”模块进行简单介绍,并以配置EUSART2端口,实现Curiosity Nano开发板与PC通过串口通讯为例,详细展示其使用方式。

一.开发环境搭建
       1.    硬件
           PIC18F47Q10 Curiorisity Nano 开发板
889255ed96ef27986e.png
2.    软件
  •   MPLAB X
  •   XC8
  •   MCC
  •   Data Visualizer

      这里前3项作为Microchip的老用户,应该都比较熟悉了,相关的下载按照请参阅Microchip官网或其他帖子,这里就不复述了。Data Visualizer原来是Atmel公司为本公司开发工具配备的一款独立的功能强大的开发工具,由于被Microchip收购,现在这款工具也能配合MPLABX 使用了。
      在Microchip英文官网中直接搜索“Data Visualizer”
227715ed96f6111e0d.png

      会来到以下界面:
655885ed96f7ae2c62.png

      选择其中第一项,会进入以下页面:
964915ed96f92201bd.png
      单击“Download Data Visulizer Now”按钮,就可以直接下载软件的安装程序了。这个界面同时也简要介绍了Data Visualizer的强大功能,有空可以仔细研究一下。
      这里想对初学者做一个提醒,对于开发板这类器件,一定要先装软件,再插USB口安装硬件,这样会减少很多不必要的麻烦。
      所有软件及插件安装好后,关闭MAPLABX IDE。通过USB转接线连接开发板和电脑,此时操作系统会自动将Curiorisity Nano 开发板识别为一个U盘。
51005ed96fce10743.png

      带有Microchip图标的U盘,打开后,里面的内容如下:
356415ed96fe616794.png
      打开KIT-INFO.HTM,会直接转到开发板的主页,一点都不怕你迷路。
      此时运行MPLABX,会自动识别到系统已经连接的Nano开发板,显示Kit界面如下:
919105ed96ff831738.png

      需要提醒大家关注的是它的外部链接部分,把最重要的开发板的文档全囊括了,真的是很方便。
568565ed9700be1c09.png

      这个界面是全新的开发板显示的界面,当你编译下载新程序后,不关闭工程退出后,再次打开IDE,显示的界面就是下面这样的了:
204535ed97026cdb15.png

二.具体操作流程
      下面我们通过一个具体的示例,来展示端口重定向功能的使用。选择“File -> New Project”,
176945ed9706743eb9.png

      在Wizard中选择“独立项目”
11455ed9707a6271a.png

      单击下一步,在器件输入框中输入“PIC18F47Q10”,然后从下拉列表中选中对应的器件。
971635ed9708fa8589.png

      单击下一步,进入工具选择界面,确保Nano开发板被选中:
777615ed970b23845d.png

      单击下一步,根据系统安装情况,选择最新的XC8编译器:
100575ed970dc42c03.png

      单击下一步,为项目设置名称及存放位置。这里提醒大家,虽然MAPLABX已不再强调项目路径长度及空格,但个人认为,项目路径还是要尽量符合早期的规范——纯英文,无空格,这样不会给自己埋下隐患。
643455ed970f6d8305.png

      单击Finish,完成项目的创建。
      下面就进入工程开发的实际阶段,这里,要强烈推荐大家采用MCC的开发模式进行单片机的开发。个人认为,这种由ST公司提出,被其他单片机厂商广泛效仿的图像化配置方式,一定是今后一段时期内的主流开发模式。
由于当今的单片机内部结构越来越复杂,模块不断增加,功能复用也是越来越多,由此给配置工作带来很大的困扰。采用传统的基于寄存器的开发模式,需要做大量繁杂的配置工作,不仅耗费时间,而且极易出错。而采用MCC的模式开发,无需记忆大量的寄存器,只需在图形界面上勾选,就能生成基本框架函数及核心功能。最关键的一点,这种方式生成的是源代码,可以方便的进行后期的调整、修改。
      当然,要想用好MCC,必须对单片机内部的结构,工作原理,配置选项等有一定的了解,否则,面对众多的选项,你还是无所适从。简单地总结,MCC只能辅助你提高开发效率,而不可能替代你进行开发,这种工具是适合专家用的,完全的“小白”不建议直接上手。学习一些早期的中档单片机,如PIC16F877,用汇编编几个小程序,再来使用MCC这样的工具,必然是如虎添翼!
      好,下面正式进入设计阶段,单击工具栏的“MCC”按钮,会打开如下界面:
611745ed9711946fea.png

      系统首先要求保存MCC配置文件,选择默认位置及名称MyConfig.mc3,直接单击“保存”即可。MCC回到初始配置界面:
258035ed97149af805.png

      对所有的单片机项目开发,第一步都要正确地配置时钟,拖动“System Module”右侧的边框,使其内容完整展现。针对开发板的实际情况,本项目我们选择内部晶振HFINTOSC,频率选择4MHz,ClockDivider 选择1。
253015ed971aca7329.png

      界面下方的开门狗及低电压编程,保持缺省选项。
621475ed971c9c6948.png

      下面我们来看一下为什么需要用到端口重定位,打开Nano板的原理图,在首页可以看到调试芯片和目标芯片,也就是PIC18F47Q10之间的总体连接框图。我们可以看到,这两者之间有一个CDC_UART的接口,从名字上就可以猜出,这是一个串口。
254875ed971eaede9d.png

     在第2页的附注里,可以验证我们的猜测,
611415ed972632d72c.png

      下面我们来具体看一下CDC RX和CDC TX具体在哪,
113415ed972766591f.png

      从图中可以看出,它们分别与RD0和RD1引脚相连。
      查看PIC18F47Q10的Data Sheet,器件有2个EUSART,缺省的引脚分别是RB6、RB7和RC6、RC7。
      其实,通过MCC查看这些信息更为方便。在“Device Resources”面板中,找到EUSART,单击前面的小三角,打开下拉菜单,如图:
781985ed972a1758ed.png

      依次单击绿底的+号,将两个功能模块加入。此时项目资源面板在外部模块显示新加入的EUSART1和EUSART2,同时,在主窗口对应的配置面板也被打开,如图所示:
491995ed972bbac9a2.png

      此时,打开“Pin Module”选项卡,就可以清楚地看到,两个EUSART缺省的引脚配置。
431745ed972d350c41.png

      很显然,这里没有我们正在寻找的RD0和RD1。那我们和CDC_UART怎么才能连通呢?难道要飞线?答案当然是否定的,这时候,就是今天的主角,PPS正式登场的时刻了。
      这里简单对PPS进行一下介绍,这是Microchip增强型中档8位单片机新增的功能模块之一,个人认为是很有特色的一个。我们都知道,随着单片机功能不断增多,而引脚又不愿意不断增加,解决的办法就是复用,即同一个引脚可以根据需要配置为不同的应用功能,这当然是非常漂亮的解决方案,已经成果运行了很多年。但这里有一个前提假设,某一个功能,只能在具体的一个引脚实现,大家对这已经习以为常,从来没考虑过这样有什么问题,直到PPS的推出,为我们开辟了一片崭新的天地。
      简单的说,PPS就是让原来固定在某一个引脚才能实现的功能,可以根据需要,在很多个引脚中间选择了。
      我们从PIC18F47Q10 Data Sheet,PPS小节中,可以查到每一个功能模块能够重定位的范围(个人感觉,这是一种缺陷,只能实现部分的重定位)。
720395ed9730392054.png

      从表中可以看出,EUSART1只能重定位到B、C口,而EUSART2可以重定位到B、D口。
      其实,利用MCC能够更方便的理解这种限制,我们以EUSART2为例,单击“Pin Manager: Grid View”选项卡,可以清楚的看到有小锁头的区域,这里就是该功能可被重定位的区域,那些没有锁头的地方,是不能被重定位的。
380655ed9731e89602.png

      从图中可以直到,希望在RD0,RD1端口实现串口功能,我们只能选择EUSART2。
      单击“Project Resource”中EUSART1前面的红叉,将该模块从配置中去除。然后依次勾选Enable EUSART, Enable Transmit, Enable Receive以及Redirect STDIO to USART,波特率保持缺省的9600。
64055ed97344cdd47.png

      转到“Pin Manager”选项卡,打开之前RX2,TX2对应的小锁,将其功能重定向到RD0,RD1。此处一定要确保定义准确!
521735ed973610c65b.png












































407795ed9712aa02a2.png

使用特权

评论回复
| 2020-6-5 14:05 | 显示全部楼层
使用PPS,硬件布线也方便。

使用特权

评论回复
| 2020-6-5 19:42 | 显示全部楼层
这个开发板挺不错的。

使用特权

评论回复
| 2020-6-6 14:42 | 显示全部楼层
精度怎么样呢     

使用特权

评论回复
 楼主 | 2020-6-6 15:48 | 显示全部楼层

不明白你的精度是什么意思。外部引脚重定位,只能针对数字引脚实现,对模拟功能,如ADC,DAC是无效的,所以谈不上精度不精度的

使用特权

评论回复
 楼主 | 2020-6-6 15:49 | 显示全部楼层
lcczg 发表于 2020-6-5 14:05
使用PPS,硬件布线也方便。

高杆,正解!

使用特权

评论回复
| 2020-6-7 07:23 | 显示全部楼层
非常详细的资料了。     

使用特权

评论回复
| 2020-6-7 07:24 | 显示全部楼层
具有完整的编程和调试功能

使用特权

评论回复
| 2020-6-7 07:24 | 显示全部楼层
MPLAB®X集成开发平台   

使用特权

评论回复
| 2020-6-7 07:25 | 显示全部楼层
            

使用特权

评论回复
| 2020-6-7 07:25 | 显示全部楼层
无需外部工具即可对SAMD21G17D器件进行编程

使用特权

评论回复
| 2020-6-7 07:26 | 显示全部楼层
这个性能怎么样   

使用特权

评论回复
| 2020-6-7 07:26 | 显示全部楼层
测评报告满分。   

使用特权

评论回复
| 2020-6-7 07:27 | 显示全部楼层
Curiosity Nano免费的吗   

使用特权

评论回复
| 2020-6-7 07:27 | 显示全部楼层
期待楼主更多的分享了。  

使用特权

评论回复
| 2020-6-7 07:27 | 显示全部楼层
新增的PPS?怎么用

使用特权

评论回复
| 2020-6-7 07:27 | 显示全部楼层
评估套件包含用于编程和调试的板载Nano调试器

使用特权

评论回复
| 2020-6-7 07:27 | 显示全部楼层
跟着楼主学习学习。   

使用特权

评论回复
| 2020-6-7 07:27 | 显示全部楼层
PIC18F27-47Q10系列相当高端了。  

使用特权

评论回复
| 2020-6-7 07:27 | 显示全部楼层
MPLAB代码配置器  

使用特权

评论回复
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 投诉建议 创建版块 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

在线客服 快速回复 返回顶部 返回列表