本帖最后由 jinglixixi_457498010 于 2021-9-12 23:55 编辑

拿到开发板已有一段时间了,其实开发板的主体并不大,且扩展引脚也并非常规的引脚间距,而是采用0.5 mm间距的,见图1所示,其功能结构图2所示。
1.jpg
图1 核心板
2.jpg
图2 功能结构框图
为了便于使用且支持Arduino 接口,故还配置了转接控制板,两者组合的形式如图3所示。
3.jpg
图3 组合形式
那上电后开发板又是怎样一番景象呢?
若直接以核心板来连接电脑,则如图4所示,除电源指示灯被点亮外,似乎并无其它效果。应该说直接以USB口供电不是一个好的使用方式,还是以micro口来供电比较方便。
不能不说若非使用控制口,直接通过核心板来上电似。
4.jpg
图4 上电效果
在上电后,若打开设备管理器则可见到图5所示的虚拟串口。
5.jpg
图5 虚拟串口
本想能够快速开始测评,但遗憾的是这块板子的开发环境构建太不同一般了,以前曾用过多款恩智浦的测评,学习ARM时就是从LPC1114开始的,因此就没太在意,因为恩智浦的产品基本上是支持用KEIL来开发的,轻车熟路而已。
然而在收集相关资源时却发现,对于K32W系列只有K32W042的资源,却未提供K32W061的例程和相关资源,空耗了一段时间后,只好转用恩智浦的自家兄弟MCUXpresso IDE。
但从相关资料看,要构建开发环境还真不那么简单,其具体的操作过程如下:
1.基本准备
先到官网去下载MCUXpresso SDK、MCUXpresso IDE及Python 3.8。
t.jpg
2.安装Python
1)双击“Python-3.9.6-amd64.exe”,则会出现图6所示的界面,从中点击“Install NOW”。
6.jpg
图6 安装Python
7.jpg
图7安装过程中
2)当呈现图8所示界面时,则完成安装,此时点击“Close”退出即可。
8.jpg
图8完成安装
3) 将软件的安装路径添加到系统路径中,然后在终端窗口中,输入“pip install pycryptodome”来安装库。

3. 安装Flash编程器
1)解压SDK包,其内容如图9所示。
9.jpg
图9 解压后内容
2)进入“JN-SW-4407-DK6-Flash-Programmer”目录,并双击“JN-SW-4407-DK6 Production FlashProgrammer v2282”进行安装。
9p.jpg
3)点击“IAgree”接受协议,见图10所示。
10.jpg
图10 接受协议
4)按图11所示指定安装路径,然后点击“Install”进行安装即可。
11.jpg
图11 指定安装路径
5)按图12所示,将编程器的安装路径添加到windows的环境变量中。
file:///C:/Users/fengqili/AppData/Local/Temp/msohtmlclip1/01/clip_image035.gif
12.jpg
图12添加环境变量
4. 安装MCUXpressoIDE
1)双击“MCYXpressoIDE_11.4.0_6237.exe”进行安装,然后按图13所示接受协议并点击“Next”。
13.jpg
图13接受协议
2)按图14 所示设置安装路径,并点击“Next”。
14p.jpg
图14设置安装路径
4)一路“Next”,至图15所示界面时,选取创建桌面快捷方式并点击“Next”。
15.jpg
图15 设置安装路径
5)在图16所示界面,点击“Install”进行安装。
16.jpg
图16进行安装
6)至图17所示界面,点击“Finishhl”完成安装,随后其界面如图18所示。
17.jpg
图17完成安装
18.jpg
图18 运行界面
5. 安装SDK
将下载的K32W061 SDK压缩包拖到installed SDKs窗口进行加载,见图19所示。
19.jpg
图19 加载SDK
20.jpg
图20 完成加载
6. 导入例程
1)在左侧“Quickstart”栏,点击“import SDK example(s)”,则可见到图21所示的界面,然后点击“下一步”。
21.jpg
图21导入例程
2) 按图22所示,从SDK工程包中获取相应的功能例程,以加载到MCUXpresso IDE中,则主界面如图23所示。
22.jpg
图22导入例程
23.jpg
图23完成导入
7.编译与下载
1)点击“锤子”图标进行编译,编译完成后其结果如图24所示。
24.jpg
图24 完成编译
2)按理说应该用绿色的三角图标即可下载运行,无奈并不可行。据说需要在命令终端窗口,进入到
“C:\Users\tongxin\Documents\MCUXpressoIDE_11.4.0_6237\workspace\k32w061dk6_led_blinky\Debug”目录下,执行“DK6Programmer -l”指令来查看当前的串口号,然后用 “DK6Programmer.exe-V5 -s COM8 -P 1000000 -p FLASH@0x00=” +“工程编译后生成的hex文件的路径” 指令来下载,有待实际验证。
8.程序分析
板载LED的电路原理图如图25所示,也就是说PIO1控制着绿色的LED,而PIO0控制着红色的LED。
25.jpg
图25 LED电路
例程led_blinky.c的程序如下:
  1. #include "board.h"
  2. #include "fsl_gpio.h"
  3. #include "pin_mux.h"
  4. #include <stdbool.h>
  5. #define DEMO_USART USART0
  6. #define DEMO_USART_CLK_SRC kCLOCK_Fro32M
  7. /* Can't use GREEN LED as conflicts with SW2 usage */
  8. #define BOARD_LED_PORT BOARD_LED_RED1_GPIO_PORT
  9. #define BOARD_LED_PIN BOARD_LED_RED1_GPIO_PIN
  10. volatile uint32_t g_systickCounter;
  11. void SysTick_Handler(void)
  12. {
  13.     if (g_systickCounter != 0U)
  14.     {
  15.         g_systickCounter--;
  16.     }
  17. }
  18. void SysTick_DelayTicks(uint32_t n)
  19. {
  20.     g_systickCounter = n;
  21.     while (g_systickCounter != 0U){}
  22. }
  23. int main(void)
  24. {
  25.     /* Define the init structure for the output LED pin*/
  26.     gpio_pin_config_t led_config = {kGPIO_DigitalOutput,0,};
  27.     /* Board pin init */
  28.     /* Security code to allow debug access */
  29.     SYSCON->CODESECURITYPROT = 0x87654320;
  30.     /* attach clock for USART(debug console) */
  31.     /* reset FLEXCOMM for USART */
  32.     RESET_PeripheralReset(kFC0_RST_SHIFT_RSTn);
  33.     RESET_PeripheralReset(kGPIO0_RST_SHIFT_RSTn);
  34.     BOARD_BootClockRUN();
  35.     BOARD_InitDebugConsole();
  36.     BOARD_InitPins();
  37.     /* Init output LED GPIO. */
  38.     GPIO_PortInit(GPIO, BOARD_LED_PORT);
  39.     GPIO_PinInit(GPIO, BOARD_LED_PORT, BOARD_LED_PIN, &led_config);
  40.     /* Set systick reload value to generate 1ms interrupt */
  41.     if (SysTick_Config(SystemCoreClock / 1000U))
  42.     {
  43.         while (1){}
  44.     }
  45.     while (1)
  46.     {
  47.         /* Delay 1000 ms */
  48.         SysTick_DelayTicks(1000U);
  49.         GPIO_PortToggle(GPIO, BOARD_LED_PORT, 1u << BOARD_LED_PIN);
  50.     }
  51. }
由程序可以看出,该例程是采用SysTick进行计时,以函数SysTick_DelayTicks()实现延时功能,并以绿色的LED为控制对象,用函数GPIO_PortToggle()每一秒切换一次LED的状态,从而得到闪烁的效果。
不得不说这个开发环境的构建实在有些麻烦,大部分计时都好在这方面了,后面解决了下载问题后,相信进度会快许多!不得不说这个开发环境的构建实在有些麻烦,大部分计时都好在这方面了,后面解决了下载问题后,相信进度会快许多!