tag 标签: 单片机

相关博文
  • 2025-4-16 15:26
    136 次阅读|
    0 个评论
    在Open开发环境中,电源管理API是平衡性能与功耗的利器。无论是实时监测电量消耗、智能调度任务执行时机,还是精细化控制硬件模块休眠策略,这些API为开发者提供了完整的技术工具链。本文精选核心API,结合实战案例解析其应用场景与优化技巧,助你打造续航更持久的应用。 最新资料详见:https://docs.openluat.com/air780epm/luatos/api/core/pm/ 在实际应用中可灵活结合硬件设计,实现物联网设备超低功耗待机‌、‌动态性能优化‌、‌电池保护及系统防崩溃‌的完整电源管理方案。 一、Air780EPM低功耗模式 1.1 功耗模式定义及典型功耗 Air780EPM三种功耗模式的介绍,“常规模式”、“低功耗模式”、“PSM+模式”,以及典型实网环境条件下的功耗测试数据,如下表所示: 1.2 如何设置Air780EPM功耗模式 我知道你一定会问:为什么1和2都是低功耗模式?Why? 历史原因,pm.WORK_MODE在LuatOS中定义了4个模式,但是,就Air780EPM这一特定型号来说,为了方便理解和简化设计,只定义了3种功耗模式,所以就出现了1和2都是低功耗模式的结果。 注意:1和2没有任何区别,设置1和2都是同一个低功耗模式,请大家在设计时务必注意!!! 1.3 pm.power(id, int) 设置Air780EPM进入常规模式、低功耗模式、PSM+模式的函数。 1)参数: id:int型(功耗模式控制id,pm.WORK_MODE); int:int型(0,常规模式;1,低功耗模式;2,低功耗模式;3,PSM+模式; )。 2)返回值: 返回值类型:boolean; 说明:处理结果true成功,false失败。 3)例子: 二、与定时器唤醒相关的函数 2.1 pm.dtimerStart(id, timeout) 启动底层定时器,在常规模式/低功耗模式/PSM+模式下都可以生效,只触发一次;注意,关机状态下无效。 1)参数: id:int型 定时器id;Air780EPM可以设置多个定时器,不同的定时器ID代表不同的定时器进程;一般来说,定时器进程不要超过6个。相应的,定时器ID的取值范围是0-5; 其中,0和1的最大休眠时长是2.5小时,2到5的最大休眠时长是740小时。 timeout:int型(定时时长,单位毫秒)。 2)返回值: 返回值类型:boolean; 说明:处理结果。 3)例子: 2.2 pm.dtimerStop(id) 关闭底层定时器 1)参数: id:int型(定时器id); 2)返回值:无 3)例子: 2.3 pm.dtimerCheck(id) 检查底层定时器是不是在运行。 1)参数: id:int型(定时器id); 2)返回值: 返回值类型:boolean(处理结果,true还在运行,false不在运行); 返回值类型:number(如果运行,运行剩余时间,单位毫秒)。 3)例子: 2.4 dtimerWkId() 检查定时唤醒是哪一个定时器,如果不是定时唤醒的,返回-1。 1)参数:无 2)返回值: int型(处理结果 =0 是本次定时唤醒的定时器ID,其他错误,说明不是定时唤醒的)。 3)例子: 三、开机、关机、重启等相关函数 3.1 pm.lastReson() Air780EPM共有如下几种开机形式: PSM+模式下,RAM掉电,PSM+模式前数据丢失,退出PSM+模式后代码需要从头开始运行,这个过程,也被视为"开机"; 从PSM+模式到低功耗模式或常规模式,原因有 定时器唤醒、WAKEUP唤醒、开机键唤醒、UART1唤醒 四种唤醒方式,这四种唤醒方式,是Air780EPM的开机原因之一; 除从PSM+模式到低功耗模式或常规模式的开机之外,还有关机状态下的PWRKEY开机、常规模式/低功耗模式/PSM+模式下的Reset重启,闹钟开机、软件重启、LuaTools等工具控制重启、内部看门狗重启、外部重启以及程序跑飞下的异常开机等。 pm.lastReson()函数,就是用来识别和返回Air780EPM这些开机原因的函数。 1)参数: id:int型 定时器id;Air780EPM可以设置多个定时器,不同的定时器ID代表不同的定时器进程;一般来说,定时器进程不要超过6个。相应的,定时器ID的取值范围是0-5; 其中,0和1的最大休眠时长是2.5小时,2到5的最大休眠时长是740小时。 timeout:int型(定时时长,单位毫秒)。 2)返回值: 3)例子: 3.2 pm.shutdown() 用于关机。 1)参数:无 2)返回值:nil(无返回值) 3)例子: 3.3 pm.reboot() 用于重启。 1)参数:无 2)返回值:nil(无返回值) 3)例子: 四、IO电平介绍及相关设置函数 pm.ioVol(id, val) IO高电平电压控制函数 Air780EPM的IO高电平,出厂默认3.0V: 可以通过将Air780EPM的PIN100:IO_Volt_Set拉低到GND改变IO高电平,开机即设置为1.8V; 也可以通过此函数,将IO高电平设置为典型值1.8V/2.8V/3.0V/3.3V。注意!设置IO高电平,实际设置的是Air780EPM的PIN24:VDD_EXT的电压,IO高电平与VDD_EXT电压保持一致。 任何情况下,无论Air780EPM的PIN100:IO_Volt_Set是悬空还是下拉到GND,IO高电平都是以本函数的设置为优先。 1)参数: id:int型(电平id,目前只有pm.IOVOL_ALL_GPIO); val:int型(电平值,单位毫伏)。 2)返回值: 返回值类型:boolean(处理结果true成功,false失败)。 3)例子: 五、相关补充说明 5.1 关于PSM+模式的补充说明 PSM+模式下,模组处于离线状态,无法接收服务器下发信息;退出PSM+模式后,Air780EPM大概在3秒内可以驻网成功。 5.2 关于低功耗模式的补充说明 给出的低功耗模式下的数据,是在特定条件下的测试数据,比如,DRX=2.56秒。 实际环境下,信号质量、DRX间隔等都是由模组所处环境的基站决定,模组并不能自行设置。因此,功耗表现可能与测试数据有差异。 一般情况下,低功耗模式下,模组的功耗在1mA左右都可以被认为是正常表现。 5.3 关于WAKEUP中断唤醒的补充说明 模组在PSM+模式下有四种常见的唤醒方式: 定时器唤醒; 开机键PWRKEY; 串口UART1接收数据; WAKEUP中断; 其中,WAKEUP中断的使用方式会在API库GPIO中进行介绍,开机键PWRKEY本质上也是WAKEUP。 比如:WAKEUP0,则用gpio.WAKEUP0;pwrkey,则用常量 gpio.PWR_KEY。 5.4 关于PWRKEY开机和Reset复位的补充说明 Air780EPM默认开启了PWRKEY开机防抖;因为开启了PWRKEY开机防抖,所以Reset复位功能就转变成了关机,不能复位。 所以,Air780EPM的Reset是关机,不是复位! Air780EPM最新开发资料详见: www.air780epm.cn 今天的内容就分享到这里了~
  • 2025-4-16 15:04
    87 次阅读|
    0 个评论
    本文将针对FOTA升级过程中的十大常见问题提供专业解答,帮助您规避风险,实现安全高效的固件更新。 一、FOTA远程升级常见问题 01. 远程升级需要做哪些准备工作? LuaTools升级至最新版本; 须检查要升级的设备imei是否在你的IoT账号,否则会提示“无权限”或“无效的设备”。 流量卡如果是定向卡,需要把服务器地址iot.openluat.com添加到白名单。 02. 后台配置后怎么点升级呢? FOTA升级并非推送式更新。设备每次重启时会自动向服务器发送FOTA请求,最长24小时内检测是否有新版本可用。如果检测到新版本,设备会自动下载并安装。 03. IOT后台远程升级提示“项目升级请求过于频繁”怎么办? IoT平台有一小时6次的升级限制,若超过此限制,需等待一段时间后再尝试; 如果一个项目设备较多,建议分批升级,避免同时大量设备请求升级; 大规模设备不建议统一时间点升级,可随机选择时间点进行升级。 限制FOTA升级时间参考资料链接:https://mp.weixin.qq.com/s/fHYm4X_lDNKg20m7vq5syA 04. 检测到循环升级(已禁止升级,请到设备列表解除)是什么原因? 云平台防止模块在升级失败后反复请求升级导致流量耗尽。若模块1小时内请求升级六次后,会被禁止升级。可在平台解除该限制。 05. 固件远程升级有数量限制吗? 没有数量限制,但需注意平台频率限制。 06. FOTA是否支持core版本回退? 不支持。FOTA升级只能向上兼容相同core版本,不同core版本需通过线刷完成。 07. 远程升级项目名与IoT中创建的固件名是一致,还是提示无效的固件? 不能使用docs上的差分工具生成差分包,需使用发布版本时提供的差分bin文件。 08. FOTA显示版本号格式错误怎么办? 一般是固件名不一致导致。检查固件名并修正(差分后固件名字需修改)。 今天的内容先分享到这里了,希望能帮助大家更好地理解和解决FOTA升级中的常见问题。
  • 2025-4-16 14:58
    66 次阅读|
    0 个评论
    10分钟学会LuatOS协程,从此你的程序也能像通勤族利用碎片时间一样游刃有余。现在就去动手试一试,开启异步编程新体验! 写给第一次听说协程的你‌: 别怕!协程不是复杂概念,看完这篇,10分钟就能上手写代码~ 1、协程是什么?——小白秒懂版‌ 场景‌:小明一边写作业,一边等外卖: ‌普通做法‌: 写5分钟作业→开门看外卖→再写5分钟→再去看外卖...(效率低) ‌协程做法‌: ‌协程A(写作业)‌:写5分钟 → ‌暂停‌,去检查外卖 ‌协程B(等外卖)‌:听到敲门声 → ‌继续‌写作业 简而言之,协程的本质‌是让代码学会‌“暂停-继续”‌,像切换作业和外卖一样切换任务! 2、极简三步写出第一个协程‌ 第1步: 创建协程 → sys.taskInit()‌ 划重点‌: sys.taskInit(函数) 用来包裹你的任务代码; sys.wait(时间) 是暂停协程的“魔法”。 第2步: 再创建一个协程 第3步: 启动所有协程 → sys.run()‌ 新手避坑指南‌: 忘记写sys.run() → 所有协程都不会运行! sys.wait()没写 → 协程会“卡死”其他任务。 3、查看运行结果 你会在控制台看到‌: 发现了吗?‌ 两个任务在‌自动交替执行‌;不用写复杂的时间管理代码! 4、实战试练:手机同时下载和听歌‌ 1)应用需求‌: 下载任务:每3秒下载1%; 听歌任务:每1秒显示歌词。 ‌2)代码实现‌: ‌ 3)输出效果‌: 关键理解‌: 下载任务暂停的3秒里,CPU自动去执行歌词任务; 协程之间‌不会互相阻塞‌! 5、小白常见问题‌ 1)为什么我的协程不执行?‌ 检查三件套‌: 是否用sys.taskInit()包裹了代码? 协程里有没有写sys.wait()? 代码最后有没有加sys.run()? 2)协程和函数有什么区别?‌ ‌普通函数‌:一旦调用,必须从头执行到结束(像必须一口气跑完100米)。 ‌协程‌:可以跑10米→暂停→去跑另一个任务→回来继续(像随时暂停的接力赛)。 ‌3)一个协程里能写多个sys.wait()吗?‌ ‌当然可以! 今天的内容就分享到这里了~即刻启动你的“任务切换器”协程,动手试试吧!
  • 2025-4-16 14:53
    62 次阅读|
    0 个评论
    随着物联网与智能终端的快速发展,传统GPS定位技术在精度、功耗与响应速度上的瓶颈日益凸显。本文将以Air8000核心板为例,教你掌握GPS功能的基本使用方法,可根据实际需求进行扩展和应用。 一、主要硬件准备 1.1 主要硬件 Air8000核心板套件; 支持数据传输的USB数据线; Win10及其以上PC电脑。 1.2 接线示意 Air8000核心板板载GNSS ipex连接器,同时内置3.3V LDO,用于有源天线供电。因此,可以使用外部有源天线直接连接GNSS连接器。 注意:目前仅支持3.3V有源天线,请注意连接的有源天线的供电范围。 二、最新源码及实操教程 Air8000适用于复杂工业场景的定位需求‌,相关应用示例持续更新中。 最新源码及实操教程详见: https://docs.openluat.com/air8000/luatos/app/gnss/loc/ 2.1 示例代码: 2.2 运行结果: 定位成功后,rmc解析出的参数中包含经纬度lat和Ing,此经纬度是wg-84坐标系。 将定位成功后的经纬度复制到下方链接,可以查看位置信息和坐标系转换后的经纬度: https://www.openluat.com/GPS-Offset.html 三、注意事项与常见问题 3.1 GPS定位经纬度为什么不准确? 坐标没有纠偏,纠偏处理参见:http://www.openluat.com/GPS-Offset.html 周围有比较高的障碍物,会导致定位误差; 不能在室内测试,必须到室外测试;如果只能在室内测试,可以淘宝搜索“GPS信号转发器”。 3.2 Air8000获取到的经纬度数据,是基于什么坐标系? 使用国际标准WGS-84坐标系,需要自己进行坐标系转换。 各GPS坐标系说明以及转换方法,详见: https://www.openluat.com/GPS-Offset.html 3.3 GPS天线如何设计? 可参考下方文档链接:https://docs.openluat.com/air8000/luatos/hardware/design/gnssant/ 须特别注意: GNSS天线需要做50欧姆阻抗匹配,且线长尽量短;预留天线Π形匹配;GNSS_VCC固定输出3.3V,其与GNSS同步打开和关闭,仅支持3.3V有源天线供电。对于5V有源天线需要外置5V供电。 3.4 可视卫星、可用卫星有什么区别? 可视卫星是当前区域,接收条件良好情况下,应该可以收到卫星信号的卫星。 可用卫星是当前已经收到信号并正在使用参与定位的卫星。 3.5 GGA和RMC应该用哪个? 视具体情况而定,建议用GGA,信息相对更全面。 3.6 车载使用时,需要天线引出到车顶上吗? 挡风玻璃如果没有贴膜或者贴了不含金属材料的膜,可以放在挡风玻璃下,但是GPS信号会有一定衰减,在万不得已的情况下,可以放在挡风玻璃下,最好再实际测试确认一下。 挡风玻璃如果贴了含有金属材料的膜,则不能放在挡风玻璃下,必须将天线到车顶。 3.7 如何输出原始NMEA数据? 可以通过 libgnss.bind(id, next_id)接口进行绑定。 今天的内容就分享到这里了~
  • 2025-4-15 17:35
    75 次阅读|
    0 个评论
    普冉半导体PUYA新推出了一颗超高性价比单片机,MS32C001-C系列单片机,有QFN16,QFN20两种封装。价格在相同配置单片机里算是最低,量大价格可以做到4毛。工作电压范围 1.7 ~ 5.5 V,工作温度范围为 -40 ~ 85 °C。芯片工作电流毫安级别,有两种低功耗模式,sleep 模式电流84.8uA,stop模式电流最低1.50uA,可以满足不同的低功耗应用。 MS32C001-C 系列单片机适用于多种应用场景,例如控制器、手持设备、PC 外设、游戏和 GPS 平台、数字控制等应用。 MS32C001-C系列单片机数据手册 参考手册 可以去我们官网上下载:www.xinlinggo.com。 MS32C001单片机产品特性一览: 内核: — 32 位 ARM® Cortex® - M0+ — 最高 24 MHz 工作频率 存储器: — 18 KB Flash 存储器 — 1.5 KB SRAM 时钟系统: — 内部 24 MHz RC 振荡器 (HSI) — 内部 32.768 kHz RC 振荡器 (LSI) — 32.768 kHz 低速晶体振荡器 (LSE) — 外部时钟输入 电源管理和复位: — 工作电压:1.7 ~ 5.5 V — 低功耗模式: Sleep/Stop — 上电/掉电复位 (POR/PDR) — 欠压复位 (BOR) 通用输入输出 (I/O): — 多达 18 个 I/O,均可作为外部中断 1 x 12 位 ADC: — 支持最多 8 个外部输入通道,3 个内部通道 — 四种参考源 :内置 1.5 V/2.048 V/2.5 V 参考电压,电源电压 VCC 定时器: — 1 个 16 位高级控制定时器 (TIM1) — 1 个通用的 16 位定时器 (TIM14) — 1 个低功耗定时器 (LPTIM),支持从 stop 模式唤醒 — 1 个独立看门狗定时器 (IWDG) — 1 个 SysTick 定时器 唯一 UID 串行调试 (SWD) 工作温度:-40 ~ 85 °C 封装:QFN20、QFN16
相关资源