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

Posted 文火冰糖的硅基工坊

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[架构之路-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函数关联起来。

以上是关于[架构之路-19]:目标系统 - 硬件平台 - 案例1 - 用单片机STM8/STM32搭建目标系统(以无线传感器LoRa终端为例)的主要内容,如果未能解决你的问题,请参考以下文章

[架构之路-20]:目标系统 - 硬件平台 - 嵌入式系统硬件电路基础:架构设计流程总线外设基本电路编码

[架构之路-14]:目标系统 - 硬件平台 - CPUMPUNPUGPUMCUDSPFPGASOC的区别

[架构之路-17]:目标系统 - 硬件平台 - ARM CPU架构与系列选型

[架构之路-12]:目标系统 - 硬件平台 - 单核CPU的架构与基本工作原理

[架构之路-16]:目标系统 - 硬件平台 - CPU主要物理性能指标

[架构之路-57]:目标系统 - 平台软件 - 用户空间驱动与硬件抽象层HAL