随笔分类 - 单片机程序开发
此类笔记主要分享单片机程序开发相关的知识
摘要:借助五一假期,写了一个命令行解析的基础库,一般可用于串口命令解析、TCP命令解析等等。 具有以下几种特点: 不涉及到具体硬件, 纯软件协议,与具体硬件分离。支持不定长命令行,逐个字符解码,可以支持不定长的命令参数解析。支持解析过程中,对字符进行大小写转换,便于支持命令行大小写不敏感。内存空间占用可控
阅读全文
摘要:借助五一假期,写了一个串口通信协议基础库,虽然写着适用于单片机,但实际上并不限制具体的硬件平台。 特点如下: 不涉及到具体硬件,libserial_protocol 纯软件协议,与具体硬件分离。内存空间占用可控,libserial_protocol 支持动静态内存,内存空间可控。接口简单容易复用,l
阅读全文
摘要:一、介绍说明 目前常见流行的 RTOS 实现方式,如 FreeRTOS、uCosII、RT-Thread 等等,它们的内部的任务切换实现原理都差不多,都是通过借助汇编,根据不同的情况读写 CPU 寄存器(R0~R15)来实现保护现场和恢复现场以及指令跳转,效率很高,但也就意味着很难做到跨平台使用。
阅读全文
摘要:介绍说明 最近自己基于 XR872 在做一个小作品练习练习,具备可以配置的功能,选择了使用 ini 作为配置文件。我调研了网上常见的 ini 解析库,几乎都涉及到了 fopen()/fgets().. 以及 malloc()。 说明这些开源库都仅适用于支持完整 C语言标准库的系统,并不适用于 RTO
阅读全文
摘要:AndroidStudio:3.5.2 AndroidPhone:XiaoMi5 (Android 8.0) AndroidDemo:3.1.4-44 AndroidDemo 源码路径:SimplicityStudio\v5\developer\sdks\gecko_sdk_suite\v3.2\a
阅读全文
摘要:一、导入库文件 1. 拷贝以下两个文件到工程的 libs 目录下 ble_mesh-android_api_high-release.aar ble_mesh-android_api_low-release.aar 2. 修改 app 中的 build.gradle 增加以下内容 implement
阅读全文
摘要:硬件环境: SLTB010A(BRD4184A Rev A02 / EFR32BG22C224F512IM40) 软件环境: SimplicityStudio5/gecko_sdk_3.2.3 分析工程: Bluetooth Mesh SensorClient 恶补了 BluetoothMesh 相
阅读全文
摘要:不得不提 在移植的过程中,发现 LVGL 的文件操作接口并不十分完善,在我看来, LVGL 的文件操作接口,应该更多的是为了 LVGL 内部接口方便读取资源文件而设立的,例如读取图像文件,加载字库文件等等。 遍历目录也形同鸡肋,特别是读取目录的接口定义,简直要吐血,最后一个参数居然没有附带缓冲区长度
阅读全文
摘要:LVGL 介绍 官方网站:LVGL - Light and Versatile Embedded Graphics Library 源码位置:GitHub - lvgl/lvgl: Powerful and easy-to-use embedded GUI library with many wid
阅读全文
摘要:Xradio Sdk 的 Audio 驱动框架和 Linux 的 ASOC 驱动框架非常相似,只不过简化了很多。 驱动和芯片之间的关系图 下面的 SOC 表示的是 XR872 芯片,这里以 AC107 为例讲解,XR872 其实只有一路 I2S,这里画出了两路主要是便于后续的讲解。 从上图可以看出:
阅读全文
摘要:XR872 的 SDK 是我目前接触过那么多款 MCU 的 SDK 中,唯一一个将框架和 RTOS 结合的非常完美的 SDK 。无论是代码风格还是框架的设计,看起来都很赏心悦目,而且是源码开源。希望能有更多的机会可以在项目上应用这款芯片,便于更加深入的理解和学习它的框架设计思想,当然,如果有一段连续
阅读全文
摘要:问题简介 有个项目,主控需要将多路音频通过 I2S 传给山景芯片,然后借助山景芯片 USB 接口通过 UAC 协议传送给 PC 或其他 ARM 平台。 设计之初,主控作为 I2S 主机,山景芯片作为 I2S 从机,同时也作为 USB Audio 设备,可接入到 PC 或者其他的 ARM 平台。 我实
阅读全文
摘要:发现问题 客户反馈说我们的硬件关机漏电流很大,但是拔掉电池之后再上电(仍处于关机状态)就会恢复为 16~20uA 左右。这让我也讶异,因为亲自测试过,漏电流只有 MCU 的休眠电流 16~20uA 左右 (包含一些电子元器件),远远低于项目要求的 <100uA。 观看客户的复现步骤,发现客户每次在关
阅读全文
摘要:前言说明 在我所接触到的很多MCU源代码(不跑RTOS),无论是我们的同事还是其它方案的源代码,为了实现某些不需要太精确固定周期的工作,常见的做法都会是启动一个定时器,按照比较小的间隔来产生中断,如 0.1 毫秒一次,在定时器中断函数里面进行计数,根据计数值来给多个全局变量置1,在需要的源文件里面导
阅读全文
摘要:前言说明 现在有很多单片机的硬件定时器都具备PWM输出功能,不过有时候会因为器件成本或硬件设计等原因,导致数量不够或者所使用的引脚不支持定时器输出。尴尬的是,笔者接手的项目两种情况都存在,项目需要支持 8 个电机,每个电机支持正反转,因此需要 8 * 2 = 16 路 PWM 信号。 思考了一阵,觉
阅读全文
摘要:前言 有一个项目使用了 nRF52832 芯片作为主控,其中有用到蓝牙功能。在对蓝牙接口进一步封装的时候,发现 SDK 居然没有停止广播的接口,咨询了代理 FAE,对方也没有找到关闭广播的接口。后来通过分析代码,修改了 SDK 解决了这个问题。这次发出来是因为遇到很多人在问这个问题,记得自己解决过,
阅读全文