目录
1. FRDM-MCXN947开发板
NXP FRDM-MCXN947板是NXP官方基于MCXN947器件的低成本设计和评估板。MCXN947器件将Arm Cortex-M33单片机和神经处理单元(NPU)集成到单个封装中。NXP支持MCXN947设备的工具和软件,包括硬件评估板,软件开发IDE,示例应用程序和驱动程序。
请参见FRDM-MCXN947快速指南 。
2. 开发环境搭建
2.1 Keil MDK V5.38
安装 MDK-ARM 5.38(或以上版本均可)。安装方法:参考 Keil MDK安装https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/tutorial/quick-start/keil/keil 安装NXP.MCXN947_DFP.19.0.0.pack:下载链接
https://mcuxpresso.nxp.com/cmsis_pack/repo/NXP.MCXN947_DFP.19.0.0.pack
2.2 安装ENV
目前已升级到env-windows-v2.0.0,安装步骤中包含了git的安装,安装步骤请参见Env 用户手册。
访问链接https://www.rt-thread.org/download.html#download-rt-thread-env-tool
特别说明:安装目录不能有空格!
2.3 安装串口调式助手
个人推荐使用Serial Studio。
3. 获取rt-thread-master源码
下拉代码git clone https://github.com/RT-Thread/rt-thread.git ,rt-thread 文件配置代码位置如下图分部,克隆的rt-thread文件在env环境大文件夹下图:
特别说明:国内访问github网络连接不太稳定可能导致连接失败,可待网页端连接成功后重新上述步骤!
4. 编译环境
4.1 修改EXEC_PATH
如:D:\Program\env-windows\rt-thread\bsp\nxp\mcx\mcxn\frdm-mcxn947目录中找到“rtconfig.py”,以记事本格式打开,根据使用的编译器类型,首先确认 EXEC_PATH 这个变量定义的路径对不对,不对的先按照自己计算机上的路径进行修改。
4.2 配置硬件驱动
以管理员身份运行env.exe,切换到frdm-mcxn947工程目录cd rt-thread\bsp\nxp\mcx\mcxn\frdm-mcxn947.
env环境中输入menuconfig后按回车,弹出当前工程的配置界面:
“HardWare Drivers Config”-> “On-Chip Peripheral Drivers”:
- 选择“Enable ADC Channel” -> 选中Enable ADC0 Channel0 ;
- 选择“Enable DAC Channel” -> 选中Enable DAC2 Channel .
保存后退出。
4.3 重新生成工程
输入“scons —target=mdk5”后按回车重新生成工程。
4.4 修改MDK配置
双击打开D:\Program\env-windows\rt-thread\bsp\nxp\mcx\mcxn\frdm-mcxn947目录下的“project.uvprojx”,打开kei MDK,启动工程编译环境,修改配置如下:
此步配置可减少编译警告。
5. 编写代码
在application中添加测试文件adc_test.c,并编写如下代码:
#include <rtdevice.h>
#define ADC_DEV_NAME "adc0"
#define REFER_VOLTAGE 3300 //max adc voltage is 3.3V
#define CONVERT_BITS (1<<16) //16bit adc0
void adc_test(int argv,char **argc)
{
rt_adc_device_t adc_dev;
rt_uint32_t value,vol;
rt_uint8_t i;
rt_err_t ret = RT_EOK;
adc_dev = (rt_adc_device_t)rt_device_find(ADC_DEV_NAME);
if(adc_dev == RT_NULL)
{
rt_kprintf("adc_test failed! can't find %s device!\n",ADC_DEV_NAME);
return;
}
ret = rt_adc_enable(adc_dev,0);
rt_kprintf("rt_adc_enable(adc_dev,0) is : %s\n",ret);
// while(1)
// {
// value = rt_adc_read(adc_dev,0);
// vol = value * REFER_VOLTAGE / CONVERT_BITS;
// rt_kprintf("the voltage is : [%d.%03d]V\n",vol/1000,vol%1000);
// rt_thread_delay(1500);
// }
value = rt_adc_read(adc_dev,0);
rt_kprintf("rt_adc_read(adc_dev,0) is : %x\n",value);
rt_kprintf("REFER_VOLTAGE is : %x\n",REFER_VOLTAGE);
rt_kprintf("CONVERT_BITS is : %x\n",CONVERT_BITS);
for(i=0;i<3;i++)
{
value = rt_adc_read(adc_dev,0);
vol = value * REFER_VOLTAGE / CONVERT_BITS;
rt_kprintf("the voltage is : [%d.%03d]V\n",vol/1000,vol%1000);
rt_thread_delay(1000);
}
return;
}
MSH_CMD_EXPORT(adc_test,adc_test);
在Keil MDK环境中重新编译工程文件,会出现一堆警报,只要不出现错误可暂时忽略。
6. 硬件连接
使用自带USB线将电脑与开发板J17连接;
使用杜邦线将FRDM-MCXN-947开发板上J4-2与J3-2短接。
7. 功能验证
在Keil MDK环境中下载上述编译好的程序到FRDM-MCXN-947开发板;
运行串口调式助手Serial Studio,配置好端口和波特率,点击连接;
触发FRDM-MCXN-947开发板上SW1(RESET)开关,观察串口调式助手信息:
7.1 DAC功能
在Serial Studio上使用DAC,,分先后输入如下指令:
- dac probe dac2
- dac enable dac2
- dac write 0 10000
7.2 ADC功能
在Serial Studio上使用ADC,分先后输入如下指令:
- adc probe adc0
- adc enable adc0
- adc read 0
7.3 数据验证
A. 数据转换
输入指令:adc_test
B. 综合验证
输入指令:dac write 0 15000
输入指令:adc_test