Embed
文章平均质量分 85
Embed
IOsetting
呵
展开
-
在嵌入式设备中用多项式快速计算三角函数和方根
在 MCS-51, Cortex M0, M3 之类的芯片上编程时, 能使用的资源是非常有限, 通常只有两位数KB的Flash, 个位数KB的RAM. 如果要使用三角函数和开方就要引入 math.h, 会消耗掉10KB以上的Flash空间. 在很多情况下受硬件资源限制无法使用 math.h, 这时候使用简化的方法进行三角函数和开方运算就非常有意义, OlliW's Bastelseiten在2014年的一篇文章里, 提供了几个实用的计算方法. 下面介绍其计算方法和代码实现.原创 2024-03-03 01:56:25 · 787 阅读 · 0 评论 -
惯性传感器的倾角计算
在判断物体在空间中的姿态以及运动轨迹时, 用得最多的是加速度和角速度传感器. 加速度传感器可以计算倾角, 陀螺仪可以计算角速度, 本文介绍常用的倾角计算方法, 结合陀螺仪提高动态精度的互补滤波.原创 2024-03-03 01:48:27 · 651 阅读 · 0 评论 -
卡尔曼滤波器的定义,实例和代码实现
卡尔曼滤波器(Kalman filter)是一种高效的递归滤波器, 能够从一系列包含噪音的测量值中估计动态系统的状态. 因为不需要存储历史状态, 没有复杂计算, 非常适合在资源有限的嵌入式系统中使用. 常用于飞行器的导引, 导航及控制, 机械和金融中的时间序列分析, 轨迹最佳化等. 本文对卡尔曼滤波器的定义进行简化并提供了C语言的简易实现.原创 2024-02-28 19:31:07 · 1010 阅读 · 0 评论 -
JLink OB相关的一些记录
新购买的 JLink OB会提示Clone警告, 如何烧录正常的JLink OB固件原创 2023-11-11 00:16:13 · 237 阅读 · 0 评论 -
普冉PY32系列(九) GPIO模拟和硬件SPI方式驱动无线收发芯片XL2400
前面介绍了 XN297LBW, 顺带再介绍一个非常类似的型号 XL2400, 生产商是深圳芯岭技术, 同时市面上还有一个 WL2400, 从数据手册看和 XL2400 是一模一样的. XL2400 和XN297LBW 一样都是 SOP8 封装的2.4GHz频段无线收发芯片, 但是零售价格更便宜, 在0.7元左右. 寄存器设置也存在大量 NRF24L01 的痕迹, 但是有一些区别原创 2023-10-15 12:29:06 · 421 阅读 · 0 评论 -
普冉PY32系列(八) GPIO模拟和硬件SPI方式驱动无线收发芯片XN297LBW
XN297LBW 是一个SOP8封装的2.4GHz频段无线收发芯片, 价格在1元左右, 因为面向的主要是低成本应用, 大多数搭配的MCU为廉价的8位8051, 不一定有硬件SPI, 为了保证兼容在SDK中使用的都是GPIO模拟SPI方式进行驱动. 但是实际上可以通过硬件SPI方式进行驱动. 本文分别对GPIO模拟和硬件SPI方式的驱动进行介绍.原创 2023-10-14 20:55:11 · 824 阅读 · 0 评论 -
R3300L, Q7 SlimBoxTV/ATV Android9固件
这可能是R3300L/Q7当前最好的固件了. 安卓9, 内核4.9, 开箱支持WIFI, 内建Google Service Framework, 可以运行油管原创 2023-09-23 21:49:42 · 1420 阅读 · 0 评论 -
S905L3A(M401A)拆解, 运行EmuELEC和Armbian
S905L3A(M401A)拆解, 运行EmuELEC和Armbian. S905Lx系列属于大客户版本, 对外没有公开资料, 最早的 S905L/S905LB 是 S905X 的马甲, 而这个 S905L3A/S905L3AB 则是 S905X2 的马甲, 因为在性能评测里这两个U的得分几乎一样. S905L3A/S905L3AB 和 S905X2, S905X3 一样 GPU 是 G31, 相比前一代的 MALI450 性能提升明显原创 2023-08-28 01:42:55 · 16853 阅读 · 1 评论 -
Hi3798MV200 恩兔N2 NS-1 (四): 制作 Debian rootfs
Debian 没有像 Ubuntu 提供 Ubuntu-Base 那样提供打包好的 rootfs, 但是 Debian 提供了一个制作 rootfs 的工具 debootstrap. 以下介绍使用 debootstrap 制作 Debian rootfs 的过程.原创 2023-08-07 20:58:54 · 1399 阅读 · 0 评论 -
Hi3798MV200 恩兔N2 NS-1 (三): 制作 Ubuntu rootfs
如果把整个Linux操作系统看作层级关系, 根文件系统是位于内核之上的模块,对于同样的硬件和架构, Linux各个发行版的区别主要在于根文件系统, 而底层的内核部分几乎是一样的. 通过制作根文件系统, 可以更换成其它发行版, 定制自己的最小化安装原创 2023-08-07 12:48:47 · 879 阅读 · 0 评论 -
Hi3798MV200 恩兔N2 NS-1 (二): HiNAS海纳思使用和修改
2.5寸SATA机械盘HDD的电流要求一般为0.5A, 盒子带动机械盘没什么问题. 但是对于电流要求普遍在 0.9A 以上的 SSD 固态, 就可能会有问题. 经过测试, 可以带动绝大部分 500GB 以下的固态, 对于 1TB 以上的固态, 尤其是电流要求为 1.7A 的镁光系列SSD固态, 无法识别, 无法初始化, 或者即使能初始化, 在读写过程中也很可能报错重置. 测试过 闪迪ECO 1.92T 可以识别, 工作不稳定, 镁光1100 2T 不识别.文件内容如下, 如果不合适可以自己改。原创 2023-08-06 20:11:08 · 9433 阅读 · 3 评论 -
Hi3798MV200 恩兔N2 NS-1 (一): 设备介绍和刷机说明
恩兔N2是一个家庭存储的系列产品, NS-1 是其中体积最小的一个型号, 基于海思ARM64 CPU Hi3798MV200. 和其他设备相比, 特点是内置2.5寸SATA盘位, 并且带千兆网口. 这个设备比较小众, 存量很小, 不如斐讯N1, 玩客云那样有广泛的认知度, 甚至在百度和Google上搜索都没什么结果. 生产商恩兔科技这个公司已经停止经营, 其网站 n2yun.com 也已经无法访问. 因为有海思 Hi3798 系列内核的SDK和刷机工具, 使得这个盒子可以注入新的灵魂, 发挥余热, 物尽其用原创 2023-08-06 01:58:34 · 2043 阅读 · 0 评论 -
沁恒 CH32V208(五): CH32V208 运行FreeRTOS示例的说明
以沁恒的FreeRTOS示例项目为例, 说明如何在 CH32V208 评估上运行 FreeRTOS, 以及运行 FreeRTOS 涉及的库文件改动原创 2023-05-16 01:49:23 · 758 阅读 · 0 评论 -
沁恒 CH32V208(四): CH32V208 网络DHCP示例代码分析
通过 CH32V208 评估板, 验证 网络 DHCP 功能, 并通过分析代码执行流程了解 CH32V 系列的网络工作方式原创 2023-05-15 02:10:27 · 686 阅读 · 0 评论 -
沁恒 CH32V208(三): CH32V208 Ubuntu22.04 Makefile VSCode环境配置
以沁恒官方的定制版 RISC-V Embedded GCC 和 OpenOCD 为例说明 Ubuntu 下如何配置基于Makefile的开发环境, 如何进行命令行Debug, 以及VSCode下Debug环境的配置原创 2023-05-03 11:04:43 · 1417 阅读 · 0 评论 -
沁恒 CH32V208(二): CH32V208的储存结构, 启动模式和时钟
这一篇简单说明 CH32V208 的片内存储结构和时钟的特点, 以及通过 SDK 中的示例代码分析 CH32V208 的时钟设置原创 2023-05-02 00:33:58 · 1450 阅读 · 0 评论 -
沁恒 CH32V208(一): CH32V208WBU6 评估板上手报告和Win10环境配置
CH32V208系列是沁恒32位RISC-V中比较新的一个系列, 基于青稞RISC-V4C内核, 最高144MHz主频, 64KB SRAM,128KB Flash, 供电电压2.5/3.3V. 这个型号的特点: 除了特有的硬件堆栈区、快速中断入口, 片上集成了 2Mbps低功耗蓝牙BLE 5.3, 10M以太网MAC+PHY, USB2.0全速设备+主机/设备接口, CAN控制器. 10M以太网是带 PHY 的, 可以直连网口, 省掉焊接LAN8720了原创 2023-05-01 12:31:46 · 3359 阅读 · 0 评论 -
普冉PY32系列(七) SOP8,SOP10,SOP16封装的PY32F002A/PY32F003管脚复用
这篇主要介绍对于SOP8,SOP10,SOP16封装的PY32F002A/PY32F003, 没有BOOT0的情况如何修改Option Bytes, 以及如何在物理管脚上使用不同的PIN原创 2023-04-01 03:20:23 · 2692 阅读 · 1 评论 -
AIR32F103(十二) 搭载 AIR32F103CBT6 的Bluepill核心板
合宙说要出Bluepill已经很久了, 之前的黑色板子虽然也不错但是对于习惯STM32的同学总是有些别扭, 有几个PIN没引出而且PB12和PB14之间有电阻, 会对SPI造成干扰. 换成喜闻乐见的 Bluepill 板型后就友好多了, 一些STM32的场景也能无缝替换原创 2023-03-30 23:55:47 · 786 阅读 · 0 评论 -
AIR32F103(十一) 在AIR32F103上移植微雪墨水屏驱动
在合宙上买了一片1.54寸的墨水屏一直在吃灰, 这次趁点亮的机会把AIR32F103上的驱动示例给做了. 将微雪的墨水屏驱动移植到 AIR32F103 上, 代码已经提交到 GitHub 仓库, 如果需要驱动其它型号的墨水屏, 编辑 EPD_Config.h 将 #define EPD_1IN54 注释掉, 再将需要启用的型号取消注释即可原创 2023-03-11 00:26:58 · 1109 阅读 · 0 评论 -
AIR32F103(十) 在无系统环境和FreeRTOS环境集成LVGL
LVGL是嵌入式设备中常用的图形显示库, 这篇基于 256K Flash 的 AIR32F103CCT6 和 SPI接口的 ST7735 128x160 LCD屏, 介绍 LVGL 在无系统环境和FreeRTO环境, 带DMA和不带DMA方式的集成步骤原创 2023-03-10 18:26:54 · 1575 阅读 · 2 评论 -
PAM8403 3.3V音频功放调试笔记
做I2S输出用了PT8211(实际上买到的丝印是GH8211), 双声道, LSB格式, 工作正常但是输出功率非常低, 喇叭声音要贴近了才能勉强听到, 所以打算做一个PT8211带功放的I2S模块. 最开始用的是PT8211 + LM386 * 2, 能正常工作就是LM386的电压要求比较高, 只能工作在5V下, 在3.3V下不行, 测了完全不工作, 所以需要额外供电, 于是换成能在3.3V下工...原创 2022-12-11 11:06:00 · 3391 阅读 · 1 评论 -
普冉PY32系列(六) 通过I2C接口驱动PCF8574扩展的1602LCD
1602LCD 是工业上常用的模块, 在工厂交通运输设备上经常能见到. 驱动芯片为 HD44780, 1602LCD 的字符显示为两行, 每行16个字符, 字符基于5×8的像素矩阵原创 2023-03-04 10:19:14 · 1848 阅读 · 0 评论 -
AIR32F103(九) CAN总线的通信和ID过滤机制及实例
CAN 是一种典型的广播式网络, 在实际应用中, 如果只希望接收到特定类型的数据, 就要借助过滤器来实现. AIR32/STM32的CAN控制器包含14个过滤器, 可以设置为 屏蔽模式 或 列表模式 对CAN总线上的报文进行过滤. 当节点希望接收到一种报文时, 可以用屏蔽位模式进行过滤原创 2023-02-25 22:51:16 · 1499 阅读 · 0 评论 -
Ubuntu20.04/22.04 ESP32 命令行开发环境配置
ESP32分三个系列: ESP32-S(ESP32-S3, ESP32-S2), ESP32-C(ESP32-C3), ESP32(ESP32-D0xx, ESP32-S0xx), 在开发环境下, 这些属于不同的target, 需要单独指定. 配置环境, 导出esp-idf项目仓库原创 2023-02-24 22:09:47 · 702 阅读 · 0 评论 -
STM32F407VET6 / BLACK_F407VE开发板间隔0.5秒不断重启
有一块 STM32F407VET6 的故障开发板, 之前的问题是经常无法烧录, 必须reset之后才能连接, 并且程序运行一断时间后会halt. 原本打算把这片 STM32F407VET6 换到新板子上, 已经重新打好了板子. 今天在动手换板子前, 上电试一下, 发现烧录是正常的, 跑一个最简单的闪灯程序, 跑了十几分钟后依然在闪, 莫非这个板子又好了? 然后又跑了一个带串口输出的程序, 发现问题了, 这个 STM32F407VET6 会不断重启原创 2023-02-12 23:37:03 · 753 阅读 · 0 评论 -
普冉PY32系列(五) 使用JLink RTT代替串口输出日志
JLink RTT(Real Time Transfer) 是用于嵌入式系统监控和交互的工具, 类似于SWO, 可以双向通信, 特点是性能很高, 基本上不影响嵌入式应用的实时行为, 可以对比一下使用printf输出日志时的各种限制. 而且因为和 JLink 接口集成, 不需要再浪费一个串口输出 printf原创 2023-02-11 20:26:50 · 2191 阅读 · 0 评论 -
普冉PY32系列(四) PY32F002A/003/030的时钟设置
PY32F002A, PY32F003, PY32F030 三个系列硬件相同, 下面以 PY32F030的时钟树结构为例说明 内部时钟有32KHz和24MHz(从代码上看其实是8MHz),外部时钟是直接接入, PLL只有2倍. 使用外置晶振时如果要达到标称的48MHz, 晶振频率就必须用24MHz, 而不是常见的8MHz了. 在示例代码中有备注在PLL启用时, 外置晶振的频率需要大于12MHz, 因此外部晶振的频率可以选择的是12MHz - 24MHz原创 2023-02-11 13:53:39 · 4233 阅读 · 8 评论 -
Ubuntu 22.04 GCC Arm 12.2.rel1编译 DAPLink
记录一下过程. Arm Mbed 应该属于Arm的机构或者是Arm资助的机构. 常用的 DAPLink 基本上都是从这个项目派生的. 仓库主要是使用 Keil, 对 GCC 的支持是 2020 年才正式合并进来的. Ubuntu 下使用 GCC Arm 编译原创 2023-02-02 22:23:28 · 514 阅读 · 0 评论 -
Ubuntu下的LGT8F328P MiniEVB Arduino开发和烧录环境
基于 LGT8F328P LQFP32 的 Arduino Mini EVB, 这个板型资料较少, 记录一下开发环境和烧录过程以及当中遇到的问题原创 2023-01-21 13:27:05 · 1826 阅读 · 0 评论 -
Ubuntu20.04/22.04 安装 Arduino IDE 2.x
这周收到两片基于LGT8F328P LQFP32的Arduino Mini EVB, 机器上没有 Arduino 环境需要新安装, 正好感受一下新出的 Arduino IDE 2.x, 记录一下 Ubuntu 20.04/22.04 下安装 Arduino IDE 2.x 的过程.原创 2023-01-21 01:16:27 · 3492 阅读 · 0 评论 -
STM32F103和AIR32F103的FreeRTOS中断优先级
Cortex M 的中断和优先级, 首先要区分开 中断 和 中断优先级 这是两个不同的东西, 对于 Cortex-M0 和 Cortex-M0+ 内核, 除了系统内建中断外, 支持最多 32 个中断. 对于 Cortex-M3 内核, 除了 16 个内核中断外, 支持最多 240 个中断, 有8-bit的优先级, M0至少需要实现2-bit, 即4个优先级, M3/M4 至少需要实现3-bit, 即8个优先级原创 2023-01-19 13:26:21 · 1028 阅读 · 0 评论 -
普冉PY32系列(三) PY32F002A 资源实测 - 这个型号不简单
如同 STM32F103C8T6 与 CBT6 有着同样的128K flash容量一样, 市面上很多芯片, 同一系列的多个型号其实底下使用的是相同的硬件, 只是通过软件, 芯片ID, 某些隐藏寄存器(例如AIR32F103)或者物理熔断对容量进行限制. 让我们看一看 PY32F002AF15P 这颗标称 20K Flash, 3K RAM 的芯片还隐藏着哪些资源原创 2023-01-15 10:40:06 · 8987 阅读 · 5 评论 -
AIR32F103(八) 集成Helix MP3解码库播放MP3
Helix 解码库提供了MP3内容的MPEG兼容解码, 支持可变比特率, 恒定比特率以及立体声和单声道音频格式. Helix 的定点解码库专门针对ARM处理器进行了优化. Helix 解码库是以帧为解码单位的, 一次解码一帧, 运行需要占用的资源很少, 可以在任何能够执行长整数乘法运算(两个32位输入生成一个64位结果)和长整数乘法-累加(具有64位累加器的长整数乘法)的32位处理器上运行. 在 air32f103-template 项目中, 已经将 Helix 加入 Library 并在 Makefile原创 2023-01-15 00:14:44 · 1171 阅读 · 0 评论 -
普冉PY32系列(二) Ubuntu GCC Toolchain和VSCode开发环境
以下介绍PY32F0系列在Ubuntu下如何使用GCC Arm Embedded Toolchain环境进行开发和烧录. GitHub 仓库地址: https://github.com/IOsetting/py32f0-template原创 2023-01-14 16:15:53 · 2049 阅读 · 1 评论 -
普冉PY32系列(一) PY32F0系列32位Cortex M0+ MCU简介
PY32F0 属于 32位 M0 内核的MCU, 配置上有 16KF+2KR, 20KF+3KR, 32KF+4KR, 64KF+8KR 这些组合, 根据外设的丰富程度分成了 PY32F002, PY32F003, PY32F030, PY32F072 这四个系列, 另外还有一家芯岭科技贴牌的 XL32F003 系列. 基础的外设 ADC, TIM, SPI, I2C, UART 都有, 除了002, 其它系列都带DMA支持, 其1元左右的价格在市场上非常有性价比. 开发上, 因为是通用的 32位 M0内核原创 2023-01-14 15:06:22 · 5954 阅读 · 4 评论 -
AIR32F103(七) AIR32F103CBT6/CCT6启用96K内存
AIR32F103CBT6 和 AIR32F103CCT6 分别带 32K Byte和 64K Byte 内存. 对于48pin封装的 AIR32F103, 32K和64K的内存已经是市面上M3芯片中相当不错的容量, 至于64pin封装的AIR32F103RPT6, 96K的内存只在市场上的高端型号中出现, 例如雅特力的AT32F403A系列. 但是实际上这两个型号和 AIR32F103RPT6 一样, 内存空间为96K. 这个隐藏的内存空间, 是 Hedley Rainnie 在观察切换216MHz的过程原创 2022-12-25 21:27:48 · 1747 阅读 · 1 评论 -
PyOCD Notes
PyOCD notes for Ubuntu users原创 2022-11-29 00:33:36 · 409 阅读 · 0 评论 -
AIR32F103(六) ADC,I2S,DMA和ADPCM实现的录音播放功能
使用的MCU型号为 AIR32F103CCT6. 通过工作机制和示例代码, 说明如何使用AIR32自带的内存实现简单的语音录制和播放功能, 以及使用 ADPCM 对音频数据进行压缩, 提高录制时长. 通过这些机制, 可以快速扩充为实用的录制设备, 例如外挂I2C或SPI存储, 或提升无线传输的音质, 在同样的码率下使用更高采样率原创 2022-11-23 21:01:21 · 2067 阅读 · 0 评论 -
AIR32F103(五) FreeRTOSv202112核心库的集成和示例代码
AIR32F103CBT6的存储容量加上206MHz频率, 跑RTOS才能充分利用它的性能. 关于FreeRTOS的介绍和集成, 网络上已经有不少文章, 可以直接百度搜索查看, 这里主要介绍一下项目中的FreeRTOS集成步骤和代码说明.原创 2022-11-11 17:39:22 · 1192 阅读 · 0 评论