[PIC®/AVR®/dsPIC®产品] 【CuriosityNano测评报告】+开箱及呼吸灯

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



图1 近景


图2 远景--正面


图3远景--背面


图4 焊接之后



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

图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;

图6 部分官方例程


3、LED呼吸灯
3.1 例程下载
      首先,下载官方历程:microchip-pic-avr-examples/avr64dd32-getting-started-with-gpio-mplabx-mcc。在该例程里有使用GPIO控制LED0的程序,并附有详细的说明和程序。
  1. 1. Blink LED
  2. 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.
  3. 1.1 Setup
  4. The following configurations must be made for this project:
  5. CPU clock frequency is 4 MHz
  6. Pin        Configuration
  7. PF5        Digital Output
  8. 1.2 Demo
  9. 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.
  1. <blockquote>#define F_CPU    4000000UL

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

Step2:文件——>打开工程

Step3:打开文件夹

Step4:找到工程->加载工程

Step5:选中工程——>右键清除并编译

Step6:连接开发板——>下载工程

  1. 编译已成功 (总时间: 753ms)
  2. * 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...
  3. 正在加载代码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...
  4. Program loaded with pack,AVR-Dx_DFP,2.2.159,Microchip
  5. 加载完成
3.3 修改程序
     官方给的Blink_LED.X程序实现了LED等1秒内实现亮灭。通过简单修改就可以实现不同亮灭的对比。程序如下:
  1. #define F_CPU    4000000UL
  2. #include <avr/io.h>
  3. #include <util/delay.h>
  4. /* Default fuses configuration:
  5. - BOD disabled
  6. - Oscillator in High-Frequency Mode
  7. - UPDI pin active (WARNING: DO NOT CHANGE!)
  8. - RESET pin used as GPIO
  9. - CRC disabled
  10. - MVIO enabled for dual supply
  11. - Watchdog Timer disabled
  12. */
  13. FUSES =
  14. {
  15. .BODCFG = ACTIVE_DISABLE_gc | LVL_BODLEVEL0_gc | SAMPFREQ_128Hz_gc | SLEEP_DISABLE_gc,
  16. .BOOTSIZE = 0x0,
  17. .CODESIZE = 0x0,
  18. .OSCCFG = CLKSEL_OSCHF_gc,
  19. .SYSCFG0 = CRCSEL_CRC16_gc | CRCSRC_NOCRC_gc | RSTPINCFG_GPIO_gc | UPDIPINCFG_UPDI_gc,
  20. .SYSCFG1 = MVSYSCFG_DUAL_gc | SUT_0MS_gc,
  21. .WDTCFG = PERIOD_OFF_gc | WINDOW_OFF_gc,
  22. };
  23. #define LED_init() do { PORTF.OUTSET = PIN5_bm; PORTF.DIRSET = PIN5_bm; } while (0) //初始化LED
  24. #define LED_turnOn() do { PORTF.OUTCLR = PIN5_bm; } while (0) //开启LED
  25. #define LED_turnOff() do { PORTF.OUTSET = PIN5_bm; } while (0)//开启LED
  26. int main(void)
  27. {
  28.     LED_init();
  29. while (1)
  30.     {
  31.             _delay_us(50);; //延时20u秒
  32.             LED_turnOn(); //开启LED
  33.             _delay_us(1);;//延时4u秒
  34.             LED_turnOff();//关闭LED
  35. }
  36. }
此时,亮度较低。效果如下:

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


附心得:

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

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



本帖子中包含更多资源

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

×
起点116 发表于 2022-12-10 19:57 | 显示全部楼层
厉害,大神啊
yangxiaor520 发表于 2022-12-11 09:30 来自手机 | 显示全部楼层
这个颜色好骚气
maudlu 发表于 2023-1-5 14:53 | 显示全部楼层
呼吸灯的效果不太一样               
wangdezhi 发表于 2023-1-5 15:02 | 显示全部楼层
期待楼主ATSAMD51EVK的设计。
jkl21 发表于 2023-1-6 14:13 | 显示全部楼层
这个使用的是pwm吗?              
phoenixwhite 发表于 2023-1-6 19:21 | 显示全部楼层
这个使用的 是定时器的设计的吗?
backlugin 发表于 2023-1-6 21:33 | 显示全部楼层
可以是要用mcc配置代码的吗?              
您需要登录后才可以回帖 登录 | 注册

本版积分规则

134

主题

757

帖子

3

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