
在当前智能化快速发展的背景下,嵌入式应用对系统性能以及通信可靠性的要求越来越高。聚沃科技推出的双网口通信开发板采用兆易创新600MHz高性能MCU,具备强大的运算能力和稳定的双网口设计,能够很好地满足工业制造、医疗设备、智慧交通等对通信可靠性要求极高的场景。下面,让我们来一起了解这款开发板的主要特点。
一、旗舰级硬件配置
GD32H759IMK6作为主控芯片,BGA176封装,主频高达600MHz
内置大容量存储3840KB Flash和1024KB SRAM
外扩存储芯片32MB SRAM和32MB GD25Q256 NOR Flash
GD30LD1000和GD30LD1002提供板载供电
接口资源丰富,包含两路独立以太网接口/SRAM/NOR Flash/USB接囗/SWD+USART接口/多路串口/CAN接口/扩展IO等
软件开发资源丰富,包括提供基于FreeRTOS的双网口通信开发例程
<提供软件开发资源截图>
1、代码架构介绍
在进行软件代码介绍之前首先为读者介绍本例程代码整体架构,使读者能够从整理了解代码框架以及如何阅读及使用。
如图所示,本例程主要包含以下文件夹,具体每个文件夹的功能说明如表所示。
如下表所示,GD32H7xx_Peripherals为MCU底层固件库集合,是将MCU所有的外设进行初步封装的函数集,该驱动文件为GD官方提供的驱动文件,也是最底层的封装库函数文件;在此基础上,聚沃针对本开发版使用的主要外设,包括exmc、ADC、DAC、串口、DMA等再次进行驱动封装,形成MCU_Driver文件夹,该文件夹内容主要为底层固件库的二次封装,供BSP使用;在driver层的基础上,针对本开发板使用的硬件资源进行初始化及应用操作封装,包括SRAM、四路串口、ADC、DAC、TIMER、SPI Flash等,进而应用层可直接调用bsp层函数进行硬件资源操作;其他第三方驱动文件包括文件系统、LWIP协议栈、FreeRTOS操作系统等也在对应的文件夹中进行实现。
表11 代码架构文件夹说明
2、主函数流程介绍
本例程主函数代码如下所示,在主函数中,首先将中断优先级分组分配为4位抢占0位次优先级,也即是本例程可支持16级抢占优先级,不支持次优先级,之后采用xTaskCreate创建init_task任务,创建任务后执行vTaskStartScheduler()开启操作系统任务调度器。
intmain(void) { /* configure 4 bits pre-emption priority */ nvic_priority_group_set(NVIC_PRIGROUP_PRE4_SUB0); /* init task */ xTaskCreate(init_task, "INIT", configMINIMAL_STACK_SIZE * 2, NULL, INIT_TASK_PRIO, NULL); /* start scheduler */ vTaskStartScheduler(); while(1) {} }
init_task初始化任务函数代码如下所示,在该任务函数中,首先进行部分外设初始化,包括MPU初始化、驱动初始化、LED初始化、创建操作系统信号量、以太网模块初始化、LWIP堆栈初始化等,之后分别创建四个串口通信测试任务(FOUR_UART_test)、SRAM擦写测试任务(SRAM_test)、SPI NorFlash以及文件系统测试任务(FATFS_SPINOR_test)、Timer定时修改DAC输出码值测试任务(TIMER_DAC_test)、以及ADC采样测试任务(ADC_test),之后通过FileSystemInit进行网络文件传输初始化配置。
相关任务的功能实现以及使用测试将在后续章节进行介绍。
voidinit_task(void *pvParameters) { /* enable the CPU Cache */ // cache_enable(); /* configure the MPU */ //mpu1_config(); driver_init(); bsp_led_init(&LED1); //初始化LED1,用于定时器定时验证 /* create a binary semaphore. */ binary_semaphore = xSemaphoreCreateBinary(); /* configure ethernet (GPIOs, clocks, MAC, DMA) */ enet_system_setup(); /* initilaize the LwIP stack */ lwip_stack_init(); #ifdef USE_DHCP /* start DHCP client */ xTaskCreate(dhcp_task, "DHCP", configMINIMAL_STACK_SIZE * 2, NULL, DHCP_TASK_PRIO, NULL); #endif /* USE_DHCP */ xTaskCreate(FOUR_UART_test, "FOUR_UART_TEST", configMINIMAL_STACK_SIZE*2, NULL, UART_TASK_PRIO, NULL); xTaskCreate(SRAM_test, "SRAM_TEST", configMINIMAL_STACK_SIZE*2, NULL, SRAM_TASK_PRIO, NULL); xTaskCreate(FATFS_SPINOR_test, "FATFS_SPINOR_TEST", configMINIMAL_STACK_SIZE*4, NULL, FATFS_TASK_PRIO, NULL); xTaskCreate(TIMER_DAC_test, "TIMER_DAC_TEST", configMINIMAL_STACK_SIZE*2, NULL, TIMER_DAC_TASK_PRIO, NULL); xTaskCreate(ADC_test, "ADC_TEST", configMINIMAL_STACK_SIZE*2, NULL, ADC_TASK_PRIO, NULL); FileSystemInit(); for( ;; ) { vTaskDelete(NULL); } }
二、双网口设计的三大优势
网络故障容错:当一个网口出现故障或网络链路中断时,另一个网口可以立即接管数据传输任务,确保设备与网络的连接不中断,保证系统的稳定运行。
持续稳定通信:对于一些需要长时间连续运行的设备,如服务器、网络存储设备等,双网口提供了冗余的网络路径,能够避免因单点网络故障而导致的服务中断,提高了系统的可用性和稳定性。
流量分担:当设备需要处理大量网络数据时,双网口可以将数据流量分散到两个网络链路上,实现负载均衡。例如,在视频监控系统中,多个摄像头的视频数据可以通过双网口同时传输,减轻单个网口的负担,提高数据传输效率,避免网络拥塞。
三、典型场景应用方案
远程监控与数据采集:工业物联网中的远程监控设备,如M120E以太网远程I/O无线数据采集模块。其嵌入式32位高性能微处理器MCU集成2路工业10/100M自适应以太网模块,通过双网口可同时连接到工厂内部网络和外部互联网。一方面将采集到的现场设备运行数据、环境参数等上传到工厂内部的监控系统,另一方面通过互联网将数据传输到远程监控中心,方便工程师随时随地进行监控和管理,且在网络出现故障时,双网口可实现冗余备份,确保数据传输不中断。
智能交通信号控制:在城市交通路口的信号控制机中,采用双网口的MCU。一个网口连接到交通管理部门的中心控制系统,接收交通流量数据、实时路况信息以及控制指令等,另一个网口连接到路口的各个交通信号灯、车辆检测器等设备,实现对交通信号灯的精确控制,根据实时交通流量动态调整信号灯时长,优化交通流,提高道路通行效率。
轨道交通车辆控制:在地铁、高铁等轨道交通车辆中,双网口的MCU用于车辆的控制系统。一个网口与车辆的列车网络连接,实现车辆之间的通信和协同控制,如牵引、制动等系统的协调工作;另一个网口连接到地面的运维网络,方便车辆在运行过程中实时上传车辆的状态信息、故障数据等,以便地面运维人员及时掌握车辆情况,进行预防性维护和故障处理。
综上所述,聚沃科技双网口通信开发板集成了兆易创新MCU、模拟芯片和存储芯片,具备高算力、大存储和双网口设计等特点。该产品已成功应用于工业制造和智慧交通等领域,为行业用户提供了可靠的硬件解决方案。相信这类高性能通信设备将在更多应用场景中发挥重要作用。
来源:兆易创新
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。