在线时间347 小时
UID3766738
注册时间2021-8-2
NXP金币257
该用户从未签到
版主
- 积分
- 2691
- 最后登录
- 2024-4-4
|
本帖最后由 eefocus_3766738 于 2022-12-20 13:53 编辑
垃圾分类系统到现在基本完成了,断断续续,边鸽边做,差不多两个月的时间。由于平时也只能下了班、周末抽出时间来搞一下,但是想了下,这些原因可能也只是为了迷惑那似有还无的上进心。主要还是那跟随自己多年的拖延症起到了主导作用。回看了开始做这个系统的前第一篇帖子,从陌生的这颗MCU,没用过的UI软件GUI-Guider和LVGL,没用过几次MCUXpresso IDE 和MCUXpresso Config Tools ,这一套做下来,心里还是有一点成就感的。从被RT跨界MCU的性能吸引过来,到用LPC系列做了点东西,窥一斑而见全豹,也算对NXP的MCU入门了,自己履历中的MCU+1,更是感受到了NXPMCU的强大。
完了,扯远了,还是说回主题吧。
一、使用到的MCU外设资源:
1、5路USART,其中4个连接超声波测距模块,测距模块放在垃圾桶的桶盖上,当盖上垃圾桶盖时测量垃圾桶深度,MCU计算出当前垃圾桶剩余容量;另一个USART接口连接语言识别模块,语音识别模块作为系统中的唯一用户接口,通过对话识别使用者要扔的垃圾种类,并把识别结果通过USART发送给MCU。
2、1路SPI,用来连接一块320*240TFT液晶屏,采用进度条的方式展示当前垃圾桶剩余容量值;
3、4路PWM,控制舵机的正转、反转、停止,舵机主要是负责吧垃圾箱盖打开和关闭功能。
不得不说一下LPC55S69外设资源,还是相当丰富的,9个Flexcomm串行外设,每个Flexcomm配置成USART、SPI、I2C或I2S接口,一般的项目根本用不完,所以我在用USART的时候,根本没有克制,怎么嚣张怎么来。
二、SRAM和FLASH占用情况:
1、SRAM使用了82K+,主要是LVGL和FREERTOS占用比较多,做彩屏显示还是比较吃内存的,逻辑程序占用的直接可以忽略;
2、FLASH使用了406K+。 还好这颗MCU的FLASH有640 KB,用的还不到总量的65%,SRAM总共是320 KB,只用到了32%左右;加上MCU是双核的,我这边也只用了单核,还有一颗没用上,在做项目时候突然有种,虽然用了一个单片机但是好像又没用的错觉。
三、MCU软件说明:
1、采用实时操作系统FreeRTOS,总共创建了3个任务,分别处理:液晶屏的UI内容刷新、语音指令的解析和垃圾箱盖运动、刷新垃圾桶剩余容量并展示,系统之外还有5个USART口中断等;
2、UI展示采用的LVGL,通过GUI-Guider直接绘制,生成代码后直接移植使用,非常简洁方便,本人也是第一次使用,就不在各位大佬面前班门弄斧了;
软件是基于SDK中lvgl_guider示例写的,FreeRTOS也不用移植,很是方便。
- usart_init();
- //创建系统任务
- stat = xTaskCreate(lvgl_task, "lvgl_task", configMINIMAL_STACK_SIZE + 800, NULL, tskIDLE_PRIORITY + 2, (TaskHandle_t*)&LvglTask_Handler);
- if (pdPASS != stat)
- {
- //PRINTF("Failed to create lvgl task");
- while (1);
- }
- stat = xTaskCreate(speak_task, "speak_tast", configMINIMAL_STACK_SIZE + 50, NULL, tskIDLE_PRIORITY + 4, (TaskHandle_t*)&SpeakTask_Handler);
- if (pdPASS != stat)
- {
- //PRINTF("Failed to create speak task");
- while (1);
- }
- stat = xTaskCreate(detect_task, "detect_task", configMINIMAL_STACK_SIZE + 50, NULL, tskIDLE_PRIORITY + 3, (TaskHandle_t*)&DetectTask_Handler);
- if (pdPASS != stat)
- {
- //PRINTF("Failed to create speak task");
- while (1);
- }
- vTaskStartScheduler();
- for (;;)
- {
- } /* should never get here */
复制代码
四、直接上演示视频吧,感觉这样能说的更清楚一点
|
|