基于NXP i.MX RT1021制作的环境温湿度数据采集
基于恩智浦跨界处理器芯片RT1021的环境温湿度数据采集展示系统。智能家居类应用,用于检测家居环境数据进行展示。
标签
KiCad
智能家居
物联网
传感器
学习
温湿度
ST7735
DHT11
RT1020
TFT-LCD
鲜de芒果
更新2023-08-17
444

一、项目介绍

  • 基于NXP i.MX RT1020单片机芯片,使用 KiCAD 7.0 绘制原理图和PCB。
  • 完成PCB打样并焊接。
  • 编写单片机程序,实现读取环境温湿度数据,并通过TFT-LCD进行展示。

 

二、项目设计思路

由于是以芯片为核心进行开发设计,因此需要先对芯片有所了解,例如最小系统的原理,芯片数据手册,硬件设计手册等等。

然后在最小系统的基础上,根据最终需求以及参考现有案例的原理图,进行外围电路的拓展设计,以满足最终需求的电路。

2.1 设计框图

FgzKmqA_bNVRvGLnK90Asyf9hZYR

 

2.2 器件选型

2.2.1 供电

恩智浦官方的开发板供电电路略显复杂,根据芯片手册可得知只需要给芯片供电3.3v即可。考虑供电可以直接从USB或DAP-LINK进行供电,因此供电电压考虑使用5V。因此电源芯片选用简单的AMS1117-3.3。只需要搭配两个电容即可实现电压从5V到3.3V的转换,需要注意的是输出端最好选用坦电容,这点在数据手册中有相应说明。

FkGo2ddyInP-toMOu4r0UCdwC2tS

2.2.2 传感器

温湿度传感器的选择就比较随意了,使用了上个项目买的器件 DHT11。这里有些失算,在RT1021的基础上完全不知道该如何读取数据,后面在做软件调试的时候浪费了挺长时间。

FnoIkTA8pXIHNpQP_hHj70PLp6DI

2.2.3 灯光

灯光部分使用了两种,一种是普通GPIO驱动的LED灯,高电平亮,低电平灭。这一步在后续程序调试的时候实现了闪烁。第二种是WS2812B LED灯,这种是单线制支持多个串连也只占用一个GPIO口。遗憾的是后续软件部分未能调试成功。

2.2.4 Flash

Flash的选型使用的是 Winbond 的 W25QXXJV 系列芯片。这款芯片应用广泛,容易找到相应教程。

2.2.5 显示屏

基于想学习SPI驱动的目标,显示屏的选择是淘宝上很容易买到的基于ST7735S驱动芯片的0.96寸TFT LCD屏幕,这款屏幕使用的是插接式,使用FPC座进行安装。

 

三、搜集素材的思路

  1. 从恩智浦官网查找 i.MX RT1020 系列芯片的 硬件设计手册 和 芯片数据手册
  2. 根据硬件设计手册以及官方评估板案例进行外围电路设计选型。
  3. 通过项目设计思路章节 2.2 的器件选型,获取各芯片、器件的数据手册和封装规格书。
  4. 通过封装网站查找选型器件的封装。

 

四、成果展示

 

硬件实物展示

Flvs7_4Xu1PJ5Ljf6oKjw2h_KvXdFqSLQ6cgkiObh6TsEPb5etLN13VB

 

五、关键代码及说明

 

LED闪烁

 

...

while (1)
{
    /* Delay 1000 ms */
    SysTick_DelayTicks(1000U);
    if (g_pinSet)
    {
        GPIO_PinWrite(EXAMPLE_LED_GPIO, EXAMPLE_LED_GPIO_PIN, 0U);
        GPIO_PinWrite(EXAMPLE_LED2_GPIO, EXAMPLE_LED2_GPIO_PIN, 1U);
        g_pinSet = false;
    }
    else
    {
        GPIO_PinWrite(EXAMPLE_LED_GPIO, EXAMPLE_LED_GPIO_PIN, 1U);
        GPIO_PinWrite(EXAMPLE_LED2_GPIO, EXAMPLE_LED2_GPIO_PIN, 0U);
        g_pinSet = true;
    }
}

...

 

六、心得体会

 

原理图设计

这次的芯片引脚数量比较多,因此在使用 KiCad 进行原理图绘制的时候使用了分页功能。这样从原理图第一页来看,会有一个概览的效果。使用分页绘制原理图的过程中也遇到了很多的问题,好在使用的人比较多,基本都能解决。但有一个仿真相关的检测错误一直未能解决,最后只能通过忽略的方式跳过检查。其次是任务使用的芯片 MIMXRT1021DAF5B 能找到的参考资料均为 LQFP144 封装的,在进行原理图绘制时供电部分设计犹豫了很久,最终找到了一份 LQFP100 封装的原理图才最终定型。

 

PCB设计

在使用 KiCad 进行PCB绘制的时候,这次有几个芯片是从 UltraLibrarian 网站下载的封装文件。但还是有一些接插件不知道如何查找现成的封装,只能在基本库中使用相近的封装。

 

PCB焊接

打板回来第一次进行焊接时,由于粗心大意把 WS2812B 供电的两个电阻都焊接上了,导致芯片的 BOOT_CFG_5 对 VCC短路(这个问题在编写程序测试的时候折磨了我好久)。去掉一个电阻之后,芯片暂时工作正常(供电,DCDC1.1v,晶振起振,DAP-LINK能识别到芯片)。

当查到 BOOT_CFG_5 与 芯片 VCC 短路之后,更换芯片之后,出现的现象是 DCDC1.1V 没有输出, 24M晶振不起振(原因不明,群里有一个小伙伴也遇到同样现象)。无奈只能重新焊接一块板子,好在最后一块板子硬件工作正常。

 

程序编写与调试

当看到该任务时,纠结了好久要不要参加。原因是从未学习过 NXP,STM32 这类单片机的相关知识,在小伙伴及工作人员的鼓励下勇跃报名了。果然在搭建开发环境时遇到挺多的问题。在小伙伴都很乐于帮助与耐心解答下才把开发环境安装好。

根据 MCUXPresso IDE 的示例,修改了一个 GPIO 引脚后,编译正常通过。但烧录过程简直是一种折磨,一开始真是完全不懂,对于一个从未用过JLink、STLink、这类工具的我来说完全不知所措。最终经群友的指导下使用USB将点灯程序烧录进去,并成功点亮板载LED灯和示例中的LED灯。由于示例自带的LED灯管脚我未焊接,所以通过外接的形式也成功点亮。

非常遗憾的是原本设计的功能未能实现,总的来说 NXP 芯片的开发难度是我目前遇到的门槛最高的。对于我这种从 Arduino 入门电子的人来说要学习的东西还很多。

 

七、芯片的优势与局限

通过这次制作,我对该芯片的优势与局限总结如下,仅代表个人观点。

 

优点:

  • 性能强劲,外设丰富
  • 官方IDE支持图形化管脚配置,Keil工程生成
  • LQFP100封装方便手工焊接

 

缺点或局限:

  • MCUPrsso IDE 调试设备限制多,调试麻烦(也可能是我不懂配置吧)
  • 入门门槛较高
  • 资料相对较少

 

八、原理图与PCB图

 

8.1 原理图概览

FiU39x40y4cmVIuM8-fqcw14O5JF

 

8.2 PCB

FhPYCDYn0KSHf4W71TnQLX9KTPKu

 

8.3 3D效果图预览

Fvhnz-h__N4r59YrCp3GJpstdVL7

 

九、总结

NXP i.MX RT1021 这款单片机性能强大,外设丰富。但入门难度也比较大,原理图的绘制参考了很多的案例才完成。

之前未接触过MTK、Keil这类单片机开发,此次任务的难度对于我来说还是比较有挑战的,这么多引脚的芯片也是第一次焊接。高速芯片的PCB绘制也从示未有过,总之这次任务收获巨大。

最后感谢电子森林推出的 《WeDesign》 系列活动,对于我们这些新手是个很好的学习机会,理论结合实践。我们下期活动再见!

附件下载
evkmimxrt1020_iled_blinky.rar
工程源码
eetree-NXP i.MX RT1021.zip
KiCAD7工程
团队介绍
业余爱好者
团队成员
鲜de芒果
评论
0 / 100
查看更多
目录
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2023 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号