本帖最后由 小恩GG 于 2024-7-17 15:59 编辑
MCX N947:Ethernet和Camera功能的同时实现 一、概述 NXP FRDM-MCXN947板是一款基于MCXN947设备的低成本设计与评估板。NXP为MCXN947设备提供了包括硬件评估板、软件开发集成开发环境(IDE)、示例应用程序和驱动程序在内的工具和软件支持。该板配备了Ethernet PHY,同时板子还支持摄像头模块和NXP的低成本LCD模块PAR-LCD-S035。 在本文中,我们将探讨如何在MCXN947板上同时实现Ethernet连接传输和使用摄像头获取图像的功能。 硬件环境: l 开发板:FRDM-MCXN947 l 显示屏:3.5" TFT LCD(P/N PAR-LCD-S035) l 摄像头:OV7670 l 网线:RJ45 软件环境: l IDE:MCUXpresso IDE v11.9.0
二、引脚配置及复用 在设计电路时需要注意避免引脚冲突,即确保同一引脚在不同时间不会被配置为执行相互冲突的功能。配置引脚功能时则需要考虑其电气特性(如电压范围、电流驱动能力等)是否满足外设的要求。编写软件需要考虑不同版本的MCU固件或库文件对引脚复用的支持情况,以确保软件的兼容性和稳定性。 导入FDRM-MCXN947的SDK中的"lwip_examples"->"lwip_ping_bm"工程,打开"board"->"pin_mux.c"文件,可以看到在Ethernet连接中其引脚的配置情况,如下表所示: 从NXP官网上下载一份MCXN947板的原理图,在其中分别找到Camera和FlexIO LCD所对应的模块,如下图所示: FlexIO是由NXP开发出来的一种灵活的输入/输出(I/O)技术,用于在微控制器(MCU)和外部设备之间提供高速、可编程的通信能力。它允许开发者通过配置微控制器内部的FlexIO模块,来实现对多种通信协议的模拟和自定义协议的开发。 这里需要注意,这块LCD仅支持3V I/O电压,因此在配置该连接器上的所有引脚时,必须确保它们都被设置为3V3操作模式。 下图为SDK中的例程用摄像头采集图片并将其传输并显示在LCD显示屏上的工作原理: 可以看到,LCD模块并没有引脚与Ethernet和Camera功能实现所需的引脚冲突,而配置Camera模块所需的引脚与Ethernet有重复,在NXP官网提供的datasheet可以查到引脚复用如下表所示: 可以看到,其中P1_4、P1_5、P1_6、P1_7四个引脚是与Ethernet功能所需要配置的引脚相互冲突的。而Ethernet配置的引脚已经引出与网线接口固定好,所以我们需要将这些引脚进行更改,寻找它们在Camera模块中相对应的功能再对它们进行复用。 在datasheet中可以查到,P3_0、P3_1、P3_2、P3_3分别与之对应,因此我们需要打开软件准备所提到的Demo中的工程中的"pin_mux.c"文件里的引脚配置更改为新的设置。 然而,P3_2、P3_3已经被用作I²C的传输了,因此需要将这两个引脚原先的配置进行变更,查找datasheet,发现可以分别将其更改为P3_8、P3_7,这里需要注意,源代码中引脚复用功能的号码也有所变更,需要将其更改为"kPORT_MuxAlt3"。 其他引脚不做改变,更改后的引脚如下表所示:
三、功能实现 将所需的外设与开发板连接好,便可以进行代码的整合了。此处,P3_0、P3_1、P3_7、P3_8四个引脚并未直接引出来,查询开发板的原理图可以发现,板上有裸露的焊盘TP12、TP31、TP18、TP16与之一一对应,此时用线将摄像头上引脚与焊盘相连即可。 连接后实物图如下所示: 将SDK->"display_examples"->"smartdma_camera_flexio_mculcd"中的程序整合到SDK-> "lwip_examples"-> "lwip_ping_bm"中,注意将"board","drivers","component","source"文件夹中的.c和.h文件整合到一处,并在"项目"->"属性"->"C/C++ Build"->"Settings"->"Includes"中添加好对应文件夹作为头文件路径。 工程整合完成后,便可以进行编译并下载到板子里了。输出结果如下图所示:
四、总结 观察上述结果,可以看到Ethernet和Camera的功能可以同时在MCX N947的板子上同时实现。其中"lwip_ping_bm"演示应用程序在 lwIP TCP/IP 协议栈上展示了一个 Ping 演示,该演示使用了 ICMP 协议。应用程序会定期向 PC 发送 ICMP 回显请求,并处理 PC 的回复。而"smartdma_camera_flexio_mculcd"演示应用则是展示了如何使用smartDMA(智能直接内存访问)技术从OV7670摄像头接口逐帧获取图像数据,并通过FlexIO LCD接口将这些捕获的图像显示在ST7796S低成本液晶面板上。 通过对引脚的重新配置和复用,即可以实现在MCX N947上同时使用Ethernet和Camera功能。
|