码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • [架构之路-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函数关联起来。

  • 相关阅读:
    软件设计模式白话文系列(八)桥接模式
    QGIS制作精美地图
    ValueError: invalid literal for int() with base 10: 'CLS'
    Effective C++改善程序与设计的55个具体做法 6. 继承与面向对象设计
    Linux:基础命令
    【python】(9)迭代与生成器
    Semantic-Guided Zero-Shot Learning for Low-Light ImageVideo Enhancement
    flink的起源、概念、特点、应用
    (173)Verilog HDL:设计一个卡诺图电路之Exams/ece241 2014 q3
    深入浅出【图卷积神经网络GCN】从 邻接矩阵、特征值矩阵、单位阵、度矩阵 入手,深刻理解融合邻居节点(信息) | GCN从公式到代码实现 全过程 | 在Cora数据集上实现节点分类任务
  • 原文地址:https://blog.csdn.net/HiWangWenBing/article/details/127053943
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号