[PIC®/AVR® MCU]

【CuriosityNano测评报告】+开箱及呼吸灯

[复制链接]
52|0
手机看帖
扫描二维码
随时随地手机跟帖
xu@xupt|  楼主 | 2022-11-7 23:38 | 显示全部楼层 |阅读模式
1、初遇[size=1em]Curiosity Nano
[size=1em]      很荣幸能够参加21ic的活动,并有幸体验AVR64DD32 Curiosity Nano 评估工具包(部件编号:EV72Y42A)。开发板如图所示:


3472636917f372dc2.jpg

图1 近景

330916369181555cf1.jpg

图2 远景--正面

43636636918387ad39.jpg

图3远景--背面

18332636918642fd14.jpg

图4 焊接之后



      开发板有几点很神奇:1、使用的错位孔,焊接不焊接差别不大,就是DIP针脚很难插件去;2、CPU是24 MHZ的速度,使用的是24MHZ的晶振,不知道这样设计有什么特别的好处
2396263691933108ca.png

图5 开发板外接资源

2、开发环境搭建
2.1 开发环境(github推荐)
  • [color=var(--color-accent-fg)]MPLAB® X IDE 6.00 or newer
  • [color=var(--color-accent-fg)]MPLAB® XC8 2.36 or a newer compiler
  • [color=var(--color-accent-fg)]AVR-Dx Series Device Pack v2.1.152 or newer
  • [color=var(--color-accent-fg)]MPLAB® Code Configurator Melody core 2.1.13 or newer
  • [color=var(--color-accent-fg)]MPLAB® Code Configurator Melody Drivers
  • [color=var(--color-accent-fg)]MPLAB® Data Visualizer v1.2.1160 or newer
2.2 开发环境安装

     1、开发环境一路无脑NEXT就好,安装好之后,用USB-type B 线插上板子会自动识别;
     2、建议安装好之后建议先观看官方快速上手指南:https://www.microchip.com/en-us/product/AVR64DD32;
     3、开发板有大量例程可以参考,参见:https://github.com/microchip-pic-avr-examples?q=AVR64DD32;
9014063691cdaa8f20.png

图6 部分官方例程


3、LED呼吸灯
3.1 例程下载
      首先,下载官方历程:microchip-pic-avr-examples/avr64dd32-getting-started-with-gpio-mplabx-mcc。在该例程里有使用GPIO控制LED0的程序,并附有详细的说明和程序。
1. Blink LED
This project shows how to blink the on-board LED on the Curiosity Nano Development Board. The LED is connected to a GPIO pin and it spends 500 ms in ON state and 500 ms in OFF state.
1.1 Setup
The following configurations must be made for this project:
CPU clock frequency is 4 MHz
Pin        Configuration
PF5        Digital Output
1.2 Demo
The image below shows the waveform of the pin connected to the LED. The pin spends 500 ms in a high state and 500 ms in a low state.
<blockquote>#define F_CPU    4000000UL

3.2 加载程序加载程序的步骤如下
Step1:打开mplab软件
48663691f5b6dc9d.png

Step2:文件——>打开工程
936463691f21f1f4c.jpg

Step3:打开文件夹
9348463691ff2f391a.png

Step4:找到工程->加载工程
5744463691fd6ba39b.png

Step5:选中工程——>右键清除并编译
8433763692064e594c.png

Step6:连接开发板——>下载工程
27230636920bba9cfe.png

编译已成功 (总时间: 753ms)
* Load symbols when building or programming for production is enabled. Loading from: D:/project/AVR64DD32/avr64dd32-getting-started-with-gpio-mplabx-master1/avr64dd32-getting-started-with-gpio-mplabx-master/Blink_LED.X/dist/free/production/Blink_LED.X.production.elf...
正在加载代码D:/project/AVR64DD32/avr64dd32-getting-started-with-gpio-mplabx-master1/avr64dd32-getting-started-with-gpio-mplabx-master/Blink_LED.X/dist/free/production/Blink_LED.X.production.hex...
Program loaded with pack,AVR-Dx_DFP,2.2.159,Microchip
加载完成
3.3 修改程序
     官方给的Blink_LED.X程序实现了LED等1秒内实现亮灭。通过简单修改就可以实现不同亮灭的对比。程序如下:
#define F_CPU    4000000UL
#include <avr/io.h>
#include <util/delay.h>
/* Default fuses configuration:
- BOD disabled
- Oscillator in High-Frequency Mode
- UPDI pin active (WARNING: DO NOT CHANGE!)
- RESET pin used as GPIO
- CRC disabled
- MVIO enabled for dual supply
- Watchdog Timer disabled
*/
FUSES =
{
.BODCFG = ACTIVE_DISABLE_gc | LVL_BODLEVEL0_gc | SAMPFREQ_128Hz_gc | SLEEP_DISABLE_gc,
.BOOTSIZE = 0x0,
.CODESIZE = 0x0,
.OSCCFG = CLKSEL_OSCHF_gc,
.SYSCFG0 = CRCSEL_CRC16_gc | CRCSRC_NOCRC_gc | RSTPINCFG_GPIO_gc | UPDIPINCFG_UPDI_gc,
.SYSCFG1 = MVSYSCFG_DUAL_gc | SUT_0MS_gc,
.WDTCFG = PERIOD_OFF_gc | WINDOW_OFF_gc,
};
#define LED_init() do { PORTF.OUTSET = PIN5_bm; PORTF.DIRSET = PIN5_bm; } while (0) //初始化LED
#define LED_turnOn() do { PORTF.OUTCLR = PIN5_bm; } while (0) //开启LED
#define LED_turnOff() do { PORTF.OUTSET = PIN5_bm; } while (0)//开启LED
int main(void)
{
    LED_init();
while (1)
    {
            _delay_us(50);; //延时20u秒
            LED_turnOn(); //开启LED
            _delay_us(1);;//延时4u秒
            LED_turnOff();//关闭LED
}
}
此时,亮度较低。效果如下:
63264636922f5260cd.jpg

[size=1em]通过修改程序的延时函数,可以提高亮、暗比。修改程序如下:
#define F_CPU 4000000UL
#include <avr/io.h>
#include <util/delay.h>
/* Default fuses configuration:
- BOD disabled
- Oscillator in High-Frequency Mode
- UPDI pin active (WARNING: DO NOT CHANGE!)
- RESET pin used as GPIO
- CRC disabled
- MVIO enabled for dual supply
- Watchdog Timer disabled
*/
FUSES =
{
.BODCFG = ACTIVE_DISABLE_gc | LVL_BODLEVEL0_gc | SAMPFREQ_128Hz_gc | SLEEP_DISABLE_gc,
.BOOTSIZE = 0x0,
.CODESIZE = 0x0,
.OSCCFG = CLKSEL_OSCHF_gc,
.SYSCFG0 = CRCSEL_CRC16_gc | CRCSRC_NOCRC_gc | RSTPINCFG_GPIO_gc | UPDIPINCFG_UPDI_gc,
.SYSCFG1 = MVSYSCFG_DUAL_gc | SUT_0MS_gc,
.WDTCFG = PERIOD_OFF_gc | WINDOW_OFF_gc,
};
#define LED_init() do { PORTF.OUTSET = PIN5_bm; PORTF.DIRSET = PIN5_bm; } while (0) //初始化LED
#define LED_turnOn() do { PORTF.OUTCLR = PIN5_bm; } while (0) //开启LED
#define LED_turnOff() do { PORTF.OUTSET = PIN5_bm; } while (0)//开启LED
int main(void)
{
LED_init();
while (1)
{
_delay_us(1);; //延时20u秒
LED_turnOn(); //开启LED
_delay_us(50);;//延时4u秒
LED_turnOff();//关闭LED
}
}
效果如下:可以通过绿灯的亮度分辨出二者的差异。
5409063692388a1bf9.jpg


附心得:

1、平台太大,安装完成之后的平台使用了十几个G的空间。

2、官方函数对新手不是很友好。在编程的过程中,想通过官方函数_delay_us()快速实现呼吸灯效果,最后发现该函数只接受常数(__builtin_avr_delay_cycles expects a compile time integer constant   __builtin_avr_delay_cycles(__ticks_dc);)。


9643163692458eaa51.png

1334563691f0c23b9e.png

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则