LLCC68+HC32L110

news2024/11/28 5:30:27

一、准备

最近研究一下LORA,因为LLCC68是阉割版本的SX126X,所以就选用这颗芯片了

  1. 模块:随便选一家都可以在这里插入图片描述
  2. 我简单做了个测试板,接口如下:只需要注意DIO配置成中断引脚即可
    在这里插入图片描述

二、程序流程

  1. RX TX初始化

    #define RF_FREQUENCY 433000000 // Hz
    bool EnableMaster = false; //主从选择
    
    #define TX_OUTPUT_POWER   20 // 22 dBm
    
    #define RX_TIMEOUT_VALUE 5000
    
    
    
    
    
    #define LORA_BANDWIDTH        2   // [0: 125 kHz, \
                                      //  1: 250 kHz, \
                                      //  2: 500 kHz, \
                                      //  3: Reserved]
    #define LORA_SPREADING_FACTOR 8   // [SF7..SF12]
    
    #define LORA_CODINGRATE       2   // [1: 4/5, \
                                      //  2: 4/6, \
                                      //  3: 4/7, \
                                      //  4: 4/8]
    
    #define LORA_PREAMBLE_LENGTH 2048 // 1049.66ms    //计算发射时间通过此网站进入:https://loratools.nl/#/airtime
    
    #define LORA_SYMBOL_TIMEOUT 200 // Symbols
    #define LORA_FIX_LENGTH_PAYLOAD_ON  false
    #define LORA_IQ_INVERSION_ON        false
    
       lora_gpio_init();//lora gpio init
       RadioEvents.TxDone = OnTxDone;
       RadioEvents.RxDone = OnRxDone;
       RadioEvents.TxTimeout = OnTxTimeout;
       RadioEvents.RxTimeout = OnRxTimeout;
       RadioEvents.RxError = OnRxError;
       RadioEvents.CadDone = OnCadDone;
    
       Radio.Init(&RadioEvents);
       Radio.SetChannel(RF_FREQUENCY); //设置频率
       // HAL_Delay_nMS(100);
        
       Radio.SetTxConfig(MODEM_LORA, TX_OUTPUT_POWER, 0, LORA_BANDWIDTH,
                         LORA_SPREADING_FACTOR, LORA_CODINGRATE,
                         LORA_PREAMBLE_LENGTH, LORA_FIX_LENGTH_PAYLOAD_ON,
                         true, 0, 0, LORA_IQ_INVERSION_ON, 3000);
    
       Radio.SetRxConfig(MODEM_LORA, LORA_BANDWIDTH, LORA_SPREADING_FACTOR,
                         LORA_CODINGRATE, 0, LORA_PREAMBLE_LENGTH,
                         LORA_SYMBOL_TIMEOUT, LORA_FIX_LENGTH_PAYLOAD_ON,
                         0, true, 0, 0, LORA_IQ_INVERSION_ON, true); //true 连续接收,false 单次接收
    
  2. CAD初始化:
    关于CAD的配置,可以参考这里:https://blog.csdn.net/u011638175/article/details/121899630
    在这里,我建议就选用推荐的SF12的最大配置,对于功耗影响其实并不大

    #define CAD_SYMBOL_NUM LORA_CAD_04_SYMBOL //建议用04 可以兼容多个
    
    #define CAD_DET_PEAK     28
    
    #define CAD_DET_MIN      10
    
    #define CAD_TIMEOUT_MS   100
    
    #define RX_TIMEOUT_VALUE 1000
    
        SX126xSetDioIrqParams(IRQ_RADIO_ALL, IRQ_RADIO_ALL,
                                  IRQ_RADIO_NONE, IRQ_RADIO_NONE);
        SX126xConfigureCad(CAD_SYMBOL_NUM,
                          CAD_DET_PEAK, CAD_DET_MIN,
                           CAD_TIMEOUT_MS); // Configure the CAD, CAD_ONLY 模式
        Radio.StartCad();
    
  • 主程序中,周期调用中断事件
    不需要丢IO中断里面去,只要配置了中断,唤醒后跑主循环即可

    Radio.IrqProcess(); // Process Radio IRQ
    

    重新进入CAD,调用此函数即可

    Radio.StartCad(); // 启动cad
    

    检测到CAD或者超时,都会进入此回调

    void OnCadDone(bool channelActivityDetected)
    {
     //   printf("OnCadDone\r\n");
        Radio.Standby();
        if (channelActivityDetected == true) //检测到信号
        {
            printf("channelActivityDetected\r\n");
            TickCounter = 0;
            CadRx = CAD_SUCCESS;
            Radio.Rx(RX_TIMEOUT_VALUE);
            State = RX;//进入RX状态
        }
        else //没检测到信号
        {
            TickCounter = 0;
            CadTime = 0;
            CadRx = CAD_FAIL;
            
            
            Radio.Sleep(); //射频休眠
            Lpt_Run();//开始定时器唤醒
            Lpm_GotoLpmMode();//休眠
            State = START_CAD;//重新进入CAD状态
            
        }
        
    }
    

    数据接收成功,会进入此回调

    void OnRxDone(uint8_t *payload, uint16_t size, int16_t rssi, int8_t snr)
    {
        Radio.Standby();
       // printf("OnRxDone\r\n");
        
        BufferSize = size;
        memcpy(RX_Buffer, payload, BufferSize); //获取用户数据
        
        RssiValue = rssi;
        SnrValue = snr;
    
        PacketReceived = true;
    
        CadTime = 0;
        /*
        {
            printf("OnRxDone[%d]:",size);
            uint8_t i;
            for(i=0; i< size;i++)
            {
                printf(" %02x",payload[i]);
            }
            printf("\r\n");
        }
        */
        
    
        State = RX;
    }
    

    == 接收超时/失败/成功;发送成功等回调我就不贴了==

  • 需要和SX1278进行互通的话,需要注意以下几点:
    具体可以参考一下http://bbs.lierda.com/forum.php?mod=viewthread&tid=11400&extra=

       ●中心频率
      ●扩频因子(SF)
      ●调制带宽(BW)
      ●纠错率(CR)
      ●CRC是否开启
      ●报头显隐性格式
      ●低速率优化(Low Data Rate Optimize)
      ●IQ信号极性
      ●前导码长度
      ●数据包长度
    

三、CAD的功耗

配置如下:

  • BW:500K
  • CR:4/6
  • SF8
  • CAD_SYMBOL_NUM LORA_CAD_04_SYMBOL
  • CAD_DET_PEAK 28
  • CAD_DET_MIN 10
  • 1S唤醒一次

功耗大概在37ua

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/626800.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

springboot openfeign Sentinel统一降级处理

背景 openfeign降级常规操作如下: 此种方式太过于麻烦&#xff0c;每一个方法都要写一个降级逻辑&#xff0c;并且降级逻辑大多是雷同的。 目标 提供默认的降级方式&#xff0c;若openfeign未指定FallbackFactory则走默认降级方式&#xff0c;否则就走自定义的FallbackFact…

C++【unordered_map/set的底层实现-哈希表】—含有源代码

文章目录 前言一、unordered_map/unordered_set容器&#xff08;1&#xff09;unordered_map容器介绍及使用&#xff08;2&#xff09;unordered_set容器介绍及使用&#xff08;3&#xff09;它们和map/set对比 二、容器底层结构&#xff08;1&#xff09;哈希表概念&#xff0…

分布式算法之一致性 Hash 算法

tip&#xff1a;作为程序员一定学习编程之道&#xff0c;一定要对代码的编写有追求&#xff0c;不能实现就完事了。我们应该让自己写的代码更加优雅&#xff0c;即使这会费时费力。 &#x1f495;&#x1f495; 推荐&#xff1a;体系化学习Java&#xff08;Java面试专题&#…

第35步 机器学习实战DLC:不平衡数据处理(下)

失踪人口回归的第二期&#xff0c;继续说一说用PSM处理不平衡数据。 一、啥叫PSM PSM全称为Propensity Score Matching&#xff0c;翻译过来就是倾向匹配得分&#xff0c;为了省流&#xff0c;让小Chart介绍一下&#xff1a; 放到我们的数据就是&#xff1a;根据某个特征&…

架构师需要看透公司的用户心智定位

一个架构师要站在用户的角度去思考架构的规划和设计。把注意力放在用户身上&#xff0c;已经有无数案例证明是可以带来重大商业和技术突破的。 很多创业公司&#xff0c;从初创到倒闭&#xff0c;都没搞清楚自己的目标人群和心智。如果一个公司&#xff0c;能锁定目标人群及其…

7个最佳WooCommerce跨境电商社交媒体插件

在互联的早期&#xff0c;您通常可以将产品直接放到网上并出售。但在今天你必须进行营销和做广告。如果没有包括社交媒体在内的可持续营销策略&#xff0c;您的商店可能会被忽视。值得高兴的是&#xff0c;有很多 WooCommerce跨境电商社交媒体插件可以用来传播信息&#xff0c;…

【CMake 入门与进阶(5)】 CMakeLists.txt 语法规则基础及部分常用指令-续(附使用代码)

project project命令用于设置工程名称&#xff1a; # 设置工程名称为 HELLO project(HELLO)执行这个之后会引入两个变量&#xff1a;HELLO_SOURCE_DIR 和 HELLO_BINARY_DIR&#xff0c;注意这两个变量名的前缀就是工程名称&#xff0c;HELLO_SOURCE_DIR 变量指的是 HELLO 工程…

华为推出首款全栈自主数据库 GaussDB,你怎么看?

鸿蒙套壳&#xff0c;鸿蒙套壳完了ERP套&#xff0c;ERP套壳&#xff0c;ERP套壳完了数据库套壳&#xff0c;数据库套壳完了…… 犹记得GaussDB之前一直宣传是基于PostgreSQL研发而来&#xff0c;不知道今天为啥摇身一变为首款全栈自主分布式数据库了。 基于开源研发改不恶心。…

智能设备管理系统

传统设备实施管理难点&#xff1a; 1、日常工作繁琐&#xff0c;手动纸质记录和 Excel 管理设备数据麻烦&#xff0c;后期难以汇总管理&#xff0c;且数据易丢失。 2、需核对设备巡检、保养、故障维修记录&#xff0c;手动更新设备状态和最近维修时间等。 3、无法实时获取设备最…

大学生网络工程想走网络安全方向该怎么规划?

明确需求,确定方向 网络安全 网络安全 是一个很广的概念&#xff0c;涉及的岗位也是非常多的&#xff0c;有安全服务、安全运维、渗透测试、web安全、安全开发、安全售前等等。可以看看下面每个岗位的要求与自身兴趣能力匹配度再决定最适合自己的方向。 渗透测试/Web安全工程师…

开启人机协作新时代:协作机器人的应用与展望

原创 | 文 BFT机器人 01 蓄势待发&#xff0c;产业变革新引擎 近年来&#xff0c;在政策扶持、资本助推和技术创新的共同作用下&#xff0c;产业迎来发展黄金期。日前&#xff0c;各行各业正经历产业智能化转型&#xff0c;机器人市场规模不断扩大&#xff0c;发展前景广阔&…

万宾建筑结构健康监测系统方案

建筑结构健康监测是现代建筑工程领域的重要措施之一。通过实时监测和评估建筑物的结构状态&#xff0c;可以及早发现潜在的问题&#xff0c;保障建筑物的安全性和稳定性。 随着城市化进程的加速和建筑规模的扩大&#xff0c;建筑结构的安全性和稳定性越来越受到关注。然而&…

chatgpt赋能python:Python快速打开:如何提高Python执行速度

Python 快速打开&#xff1a;如何提高 Python 执行速度 介绍 Python 是一种解释型语言&#xff0c;由于其简洁易读&#xff0c;广泛用于数据科学、机器学习、Web 开发等领域。然而&#xff0c;它的执行速度相对较慢&#xff0c;这通常是由于其解释器中面临的硬件资源限制以及…

如何查看docker下的mysql版本

进入运行的mysql的容器 docker exec -it mysqlserver bash 标红的位置可以是我们运行的别名&#xff0c;也可以为id 我们想连接mysql服务时报错了 我们看下配置文件 cat /etc/my.cnf 可以看到配置文件的sock文件位置并不在/var/lib/mysql文件夹中 这里又两种办法 1.直接修改…

JVM--方法区元空间

前言 本篇对java的JVM线程共享内存中的方法区进行系统性的讲解。 1、方法区&元空间概念 方法区是《Java虚拟机规范》中规定的一个内存区域&#xff0c;它用于存储已被虚拟机加载的类型信息、常量、静态变量、即时编译器编译后的代码缓存等。 元空间是方法区的实现。方法…

python基础----09-----类、对象、魔法方法、封装、继承、类型注解、多态、数据分析案例

一 初识对象 说白了就是类的实例化&#xff0c;类是一个抽象层的定义。 例如下面class Student就是定义的一个类&#xff0c;它是抽象层&#xff0c;然后stu_1 Student()&#xff0c;我们根据类创建了一个对象&#xff0c;就是对类的实例化&#xff0c;这个实例化对象我们是可…

paas云底座-数字化转型,你真的了解么

云底座是什么&#xff1f; 如图 底座其实就是一个基础打个比方&#xff1a; 把底座看成一块土地&#xff0c;我们在这块土地上可以盖楼房&#xff0c;可以挖一个游泳池&#xff0c;可以开一家饭店 也就是说我们这块土地可以开发很多东西言归正传 云底座其实就是数字化转型的“底…

【快速幂】-迭代法:详解

何为快速幂&#xff1f; 我们经常会计算&#xff1a;。STL中有自带的pow函数&#xff0c;如果当n很大的时候&#xff0c;那么一定会TLE。 因此&#xff0c;我们需要另一种求值的方法&#xff1a;快速幂&#xff01; 快速幂有两种做法&#xff1a;1&#xff1a;递归 2…

谷歌云 | 宣布跨云互连:无缝连接到您的所有云

【本文由Cloud Ace整理发布&#xff0c;Cloud Ace 是谷歌云全球战略合作伙伴&#xff0c;拥有 300 多名工程师&#xff0c;也是谷歌最高级别合作伙伴&#xff0c;多次获得 Google Cloud 合作伙伴奖。作为谷歌托管服务商&#xff0c;我们提供谷歌云、谷歌地图、谷歌办公套件、谷…

1 软件测试基本概念

文章目录 课程目标1. 入门前的7个基础问题2. 软件测试基本概念2.1 需求的概念2.1.1需求的基本概念2.1.2 从软件测试人员角度看需求2.1.3 为什么需求对软件测试人员如此重要&#xff1f;2.1.4 如何才可以深入理解被测试软件的需求 2.2 bug的概念(了解)2.3测试用例的概念2.3.1 概…