• [架构之路-19]:目标系统 - 硬件平台 - 案例1 - 用单片机STM8/STM32搭建目标系统(以无线传感器LoRa终端为例)


    目录

    前言:

    第1章 用STM8/STM32搭建目标系统的总体步骤

    第2章 搭建的LoRa终端的系统需求和目标

    2.1  物联网系统分层架构

    2.2 搭建的LoRa终端的系统需求和目标

    2.3 设计Lora终端的软硬件系统

    第3章 搭建主机开发环境

    第4章 构建LoRa终端的目标系统的硬件

    4.1 基本步骤

    4.2 目标硬件示意图

    4.3   ASR6505-EVB开发板的实物图

    4.4   ASR6505-EVB开发板的原理图

    第5章 构建LoRa终端的目标系统的软件

    5.1 基本步骤

    5.2 目标系统软件构建架构

    5.3 目标系统软件架构(main函数和就是Lora的协议栈)


    前言:

    STM8/STM32称为单片机,但并不意味着只有要STM32,就可以构建一个目标系统,STM8/STM32只集成了大量的外设控制器,但并没有外设本身。因此,要构建特定应用的目标系统,除了STM8/32之外,还需要满足特定应用系统要求的实际外设,如果GPS, 如Lora无线终端等,以及与外设控制器向对应的驱动程序,还需要特定外设相关的应用程序。本文就是探讨如何用STM8/STM32搭建目标系统。

    第1章 用STM8/STM32搭建目标系统的总体步骤

    (1)搭建的LoRa终端的系统需求和目标

    (2)构建LoRa终端的软硬件开发环境

    (3)构建LoRa终端的目标系统的硬件

    (4)构建LoRa终端的目标系统的软件

    第2章 搭建的LoRa终端的系统需求和目标

    2.1  物联网系统分层架构

    STM8/STM32主要应用低功耗的物联网终端中,如下是物联网的网络架构

    物联网总体的系统组成以及分层架构:系统架构图、感知层、网络层、平台层、应用层。

     详细信息可参考:

    物联网LoRa系列-1:物联网系统分层架构_文火冰糖的硅基工坊的博客-CSDN博客_感知层网络层应用层

    2.2 搭建的LoRa终端的系统需求和目标

    (1)搭建一个低功耗的LoRa的通用终端,用于远距离传输传感器采集到数据。

    (2)能够支持多种传感器信息的采集,包括温度、湿度、压力、GPS定位等。

    (3)LoRa的终端主要用于LoRa协议的学习、开发调试,并非最终产品,因此暂不考虑终端相关的机械、外观、生产等。

    (4)尽可能的利用开源的、通用的软件和硬件平台实现。

    (5)支持LoRa MAC层标准,便于接入到第三方LoRa服务器。
     

    2.3 设计Lora终端的软硬件系统

     物联网LoRa系列-3:LoRa终端搭建的总体思路、步骤与架构_文火冰糖的硅基工坊的博客-CSDN博客_lora环境搭建

    LoRa终端开发版提供三类的对外接口:

    (1)外设传感器接口

    传感器类型:温度、湿度、速度、液压、GPS定位、摄像头、三轴传感器等。

    设备接口:采用单片机MCU的外部设备总线,包括GPIO、SPI、I2C、串口、工业CAN总线、显示屏LCD总线。

    (2)LoRa的射频天线接口

    用于发送和接收LoRa的射频电磁波信号,天线的长度与电磁波的波长相关。

    (3)LoRa主机调试接口

    串口:考虑到大量的笔记本没有提供串口,因此需要通过串口转USB芯片,提供USB串口

    仿真接口:用于下载目标程序和调试目标程序,仿真器接口包括:Jtag接口(10 pin)、SWD接口(20 pin)、SWIM接口(4 pin)
     

    第3章 搭建主机开发环境

    物联网LoRa系列-8:LoRa终端应用程序开发环境的搭建_文火冰糖的硅基工坊的博客-CSDN博客

    (1)主机硬件开发环境:

    Protel99SE:用于开发原理图和PCB.

    (2)主机调试串口程序:

    用于查看目标系统的程序执行的串口打印结果,如secureCRT等,这里的工具很多。

    (3)MCU开发环境:

    用来开发目标程序,包括编辑、编译、汇编、连接,特别是需要一个交叉编译器。

    这里工具有MCU硬件厂家提供的集成开发工具,如ST Visual Develop,也包括一些第三方厂家开发的通用继承开发环境,如IAR for ARM。

    这是通过集成开发工具的交叉编译编译出来的目标代码,包括中间每个源文件的目标代码,还包括最终连接后的在目标板上可执行程序。

    (4)目标系统的目标代码:

    这是通过集成开发工具的交叉编译编译出来的目标代码,包括中间每个源文件的目标代码,还包括最终连接后的在目标板上可执行程序。

    (5)目标系统的源代码:

    源代码是通过集成开发工具的工程文件来管理和维护的。

    包括MCU芯片厂家提供的MCU lib和外设接口驱动程序,也包括传感器设备的驱动程序、LoRa芯片驱动程序、LoRa MAC层协议。这些程序都不需要我们重新开发,可以利用芯片厂家提供的开源代码。而用户定制程序,属于代码集成,与业务相关和硬件电路板相关,需要我们开发。为了降低这块程序的开发量,通常可以基于开发板厂家提供的demo程序开发或基于LoRa芯片厂家提供的demo程序进行开发。

    (6)调试工具的选择:JTAG

    第4章 构建LoRa终端的目标系统的硬件

    4.1 基本步骤

    (1)LoRa射频芯片的选择

    (2)MUC芯片的选择

    (3)LoRa终端开发板的选择(可以通过淘宝购买)

    物联网LoRa系列-6:LoRa终端开发板硬件的搭建_文火冰糖的硅基工坊的博客-CSDN博客

    4.2 目标硬件示意图

    (1)射频部分

    ASR6505模组把STM8 MCU和射频芯片SX1262进一步集成在一个封装的模组中。简化了硬件的设计 。

    (2)传感器部分

    可以通过I2C、SPI总线、GPIO集成大量的传感器外设。

    4.3   ASR6505-EVB开发板的实物图

    LoRa点对点通信必需硬件列表如下:

    1) ASR6505-EVB 2个:在LoRa终端与LoRa基站通信前,用于在两个终端间进行点对点通信。

    2) 天线 2根:两个终端的天线

    3) USB线 2根:两个终端的USB线

    4) ST link V2仿真下载器 1个:用于下载程序和在线调试程序,不需要给每个终端配置仿真器。

    5) PC机 1台:开发主机

    4.4   ASR6505-EVB开发板的原理图

     

     

     

     

    第5章 构建LoRa终端的目标系统的软件

    5.1 基本步骤

    (1)来自于LoRa官网上的开源代码

    (2)来自MCU厂家官网上的开源代码

    (3)来自集成开发工具提供的内置的开源库

    (4)来LoRa终端开发板提供商(淘宝)提供的非开源代码

    (5)自己写的特定应用的demo和业务代码

    5.2 目标系统软件构建架构

    (1)MCU Lib库:芯片厂家通过集成开发环提供

    • C语言库
    • MCU的bootloader

    MCU库,为用户提供了一个开发平台,应用程序员只需要自己的main函数即可。

    有了MCU库,用户就可以不用关系CPU核是如何初始化的,也不需要关注bootloader是如何加载的。

    (2)MCU外设控制器程序

    • MCU外设控制器驱动程序

    有了MCU外设控制器程序,应用程序就可以访问单片机提供的各种外设控制器了。

    极大的方便了应用程序与各种传感器建立通信,获取传感器的信息 。

    (3)LoRa芯片驱动程序

    MCU lib提供了单片机内部的外设控制器的驱动程序,并没有提供外设本身的驱动程序。

    因此,需要外设芯片厂家提供相关的外设驱动程序,在此案例中,是Lora芯片的驱动程序,各种传感器驱动程序。

    (4)用户应用程序

    在这个案例中,main函数和就是Lora的协议栈。

    5.3 目标系统软件架构(main函数和就是Lora的协议栈)

    物联网LoRa系列-26:LoRaWAN Class A/B/C类型终端的软件架构_文火冰糖的硅基工坊的博客-CSDN博客

    在上图中:

    (1)main函数是应用程序的入口

    (2)main函数负责调用Lora的协议栈,从STM32芯片的角度来看,他们也是应用程序。

    (3)从Radio层以及之上的软件,有Lora提供

    (4)MCU层:单片机厂家的集成开发环境提供

    备注:

    • 在此单片机应用中,并没有uboot,也没有Linux操作系统。
    • bootloader被隐藏在集成开发环境中,基本不需要应用程序员关注。
    • main函数是应用程序的入口,集成开发环境自动把隐藏的bootloader和main函数关联起来。

  • 相关阅读:
    C语言操作符深度解析(四)
    java毕业设计汽车4S服务管理系统mybatis+源码+调试部署+系统+数据库+lw
    【Linux】环境变量
    Linxu 【权限,粘滞位】
    Apache Hudi 流转批 场景实践
    Spring动态代理源码分析
    Vuex安装以及简单封装
    Flink系列之Flink集群搭建
    【MATLAB源码-第83期】基于matlab的MIMO中V-BALST结构ZF和MMSE检测算法性能误码率对比。
    基于微信小程序的音乐播放器设计与实现(源码+lw+部署文档+讲解等)
  • 原文地址:https://blog.csdn.net/HiWangWenBing/article/details/127053943