随笔分类 -  Embed/Mobile

嵌入式, 移动设备
STC8H8K64U 的 USB 功能测试(续)
摘要:对 STC8H8K64U 的USB测试昨天没搞定, 判断可能是供电的问题, 直接用5V不行, 从USB2TTL上采电3.3V时存在一个问题, 就是 D-/D+ 在上电前就已经连接了, 不符合 USB 的正常上电流程, 在 MCU 开始工作前接入 D-/D+, 可能会造成host的请求无法响应. 今天用AMS1117做了转接板, 把USB的5V转为3.3V给MCU供电. 现在连上USB接口就能正常识别了. 阅读全文

posted @ 2022-02-06 14:55 Milton 阅读(1606) 评论(0) 推荐(0) 编辑

STC8H8K64U 的 USB 功能测试(未成功)
摘要:对 STC8H8K64U 的 USB 功能测试, 因为存在很多问题并且未能解释/解决, 就不写到系列里了, 把记录放上来抛砖引玉吧. 也许是使用的方法不对, 这些记录对其他人也许会有帮助. 待有更多资料再试吧. 阅读全文

posted @ 2022-02-05 18:07 Milton 阅读(1233) 评论(0) 推荐(0) 编辑

合宙AIR105(一): Keil MDK开发环境, DAP-Link 烧录和调试
摘要:合宙AIR105(一): Keil MDK开发环境, DAP-Link 烧录和调试AIR105是合宙LuatOS生态下的一款芯片, 1月初上市, 开发板与摄像头一起搭售. 从配置信息看, 芯片性能相当不错: Cortex-M4F内核, 最高频率204Mhz, 片上内建640KB SRAM和4MB Flash. QFN88封装, 尺寸10x10mm, 56个可编程GPIO PIN. 合宙提供了这个芯片及开发板的 LuatOS 开发环境和工具链, 但还是有很多开发用户希望能使用纯C语言的环境和工具链. 以下说明如何在Keil5 MDK中使用 DAP-Link 和 WCH-Link 烧录 AIR105 开发板. 阅读全文

posted @ 2022-01-31 15:30 Milton 阅读(7100) 评论(2) 推荐(1) 编辑

STC8H开发(八): NRF24L01无线传输音频(对讲机原型)
摘要:STC8H使用NRF24L01无线传输音频, 发送部分需要实现的是8kHz采样, 并通过NRF24L01将每秒的8000字节数据发送出去. 语音输入MAX9814. NRF24L01在设置为1Mbps带宽时实际传输速度能达到23k字节每秒, 因此对于8bit 8kHz采样的传输是没问题的. 因为NRF24L01传输时的响应和重发机制, 在信号不好时, 容易卡顿, 为了避免中间传输时间的波动影响, 在实际实现中使用了双数组做缓冲. 阅读全文

posted @ 2022-01-28 10:58 Milton 阅读(3497) 评论(0) 推荐(2) 编辑

沁恒CH32F103C8T6(三): PlatformIO DAPLink和WCHLink下载配置
摘要:沁恒CH32F103C8T6(三): PlatformIO DAPLink和WCHLink下载配置DAP-Link 是ARM官方的一款开源的调试仿真器,也叫CMSIS-DAP, 几乎支持所有Cortex-M内核的MCU,不挑品牌厂家. 其功能等价于ST的ST-Link. 在 Linux 的 PlatformIO 中, 需要做一些配置才能对 CH32F103C8T6 进行烧录. WCH-Link是基于WCH549芯片的下载和调试模块, 支持3.3V/5V双电源输出, 支持USB转TTL串口, 用LED指示灯标识工作状态, CMSIS-DAP模式可以用于带有SWD接口的 ARM 内核MCU的调试和下载 阅读全文

posted @ 2022-01-27 00:44 Milton 阅读(5536) 评论(1) 推荐(2) 编辑

沁恒CH32F103C8T6(二): Linux PlatformIO环境配置, 示例运行和烧录
摘要:StdPeriphLib_CH32F1 是用于 CH32F1 系列MCU的 SPL 风格封装库, 使用 arm-none-eabi-gcc 工具链, 兼容 Linux 下的 VSCode+PlatformIO 开发环境 阅读全文

posted @ 2022-01-25 19:03 Milton 阅读(1701) 评论(0) 推荐(0) 编辑

沁恒CH32F103C8T6(一): Keil5环境配置,示例运行和烧录
摘要:沁恒CH32F103C8T6(一): Keil5环境配置,示例运行和烧录CH32F1系列是沁恒生产的32位Cortex-M3 MCU, 片上集成了时钟安全机制、多级电源管理、 通用DMA控制器等. 此系列具有 2 路 USB2.0接口、多通道 TouchKey、 12 位 DAC 转换模块, 多通道 12 位 ADC、 多组定时器、 CAN 通讯控制器、 I2C/USART/SPI 等丰富的外设资源. 与STM32F103系列芯片相比, 管脚和寄存器兼容, 增加了USB功能, 有2个USB, 一个Host, 一个Device, 增加了DAC, 供电兼容5V, flash下载算法和内部BootLoader和STM32不兼容, 需要使用沁恒提供的算法, 或者使用沁恒的下载软件通过串口和USB下载. 阅读全文

posted @ 2022-01-24 21:09 Milton 阅读(7480) 评论(1) 推荐(2) 编辑

SDCC 的 MCS-51 汇编基础概念和传参方式
摘要:SDCC汇编函数参数传递, 第一个参数和返回值总是使用全局寄存器 DPL, DPH, B 和 ACC, 对于第二个及之后的参数, 分非重入方法和重入方法两种情况, 可能存储在全局变量中也可能存储在堆栈上 阅读全文

posted @ 2022-01-23 21:06 Milton 阅读(2206) 评论(0) 推荐(0) 编辑

STC8H开发(七): I2C驱动MPU6050三轴加速度+三轴角速度检测模块
摘要:STC8H开发(七): I2C驱动MPU6050三轴加速度+三轴角速度检测模块MPU-6050是InvenSense生产的六轴运动跟踪芯片, 芯片尺寸4×4×0.9mm, QFN封装. 整合了三轴陀螺仪, 三轴加速度计, 片内温度传感器和数字运动处理器(DMP), 可以使用I2C接口外接三轴电子罗盘的输入,提供完整的九轴运动融合输出. 阅读全文

posted @ 2022-01-22 12:54 Milton 阅读(2521) 评论(0) 推荐(0) 编辑

STC8H开发(六): SPI驱动ADXL345三轴加速度检测模块
摘要:STC8H开发(六): SPI驱动ADXL345三轴加速度检测模块ADXL345是一款常见的的3轴加速度计, Analog Device生产. 13位分辨率, ±16 g测量范围, 分辨率3.9 mg/LSB. 可通过SPI(3线或4线)或I2C接口访问. 主要用于倾斜检测, 静态重力加速度测量, 以及运动或冲击导致的动态加速度测量. 能够测量不到1.0°的倾斜角度变化. 可以对单击, 双击, 自由落体等情况设置中断. 市面上的模块, 一般是8个pin脚, 在使用SPI接线方式的情况下, 与STC8H的接线方式如下. 除了SPI用到的CS, MISO, MOSI, SCLK以外, STC8H还需要提供两个中断输入, 因为INT0, INT1已经被SPI接口占用, 所以只能用INT2和INT3, 这两个外部中断只支持低电平触发, 所以在ADXL345中需要设置中断输出为active low. 阅读全文

posted @ 2022-01-19 11:51 Milton 阅读(2577) 评论(0) 推荐(3) 编辑

STC8H开发(五): SPI驱动nRF24L01无线模块
摘要:对应nRF24L01的SPI通信部分. 这里对发送作了一些优化: 1. 将命令和后续数据合并为字节数组一并发出, 节约发送开销, 2. 发送和接收使用同一段内存地址, 节约内存开销, 3. 每次交互后, 地址的第一个字节都是当前nRF24L01的状态数据, 在某些场景可以避免二次调用. 发送间隔1ms时发送速率最高, 能达到720~748个package每秒, 每个package是32字节, 差不多23K字节每秒 阅读全文

posted @ 2022-01-13 20:54 Milton 阅读(2499) 评论(0) 推荐(0) 编辑

联盛德 HLK-W806 (十三): 运行FatFs读写FAT和exFat格式的SD卡/TF卡
摘要:联盛德 HLK-W806 (十三): 运行FatFs读写FAT和exFat格式的SD卡/TF卡FatFs已经将Fat格式的操作作了抽象化, 在新环境下运行FatFs, 只需要实现 diskio.c 中的几个方法, 还需要实现RTC接口, 这样才能在创建文件时写入正确的时间. 完整的代码在演示用例下, 使用了最新的R0.14b版本的FatFs. 在选项中开启了长文件名支持, 开启了对exfat格式的支持, 能正常挂载和读写64GB的大容量TF卡. 阅读全文

posted @ 2022-01-13 16:32 Milton 阅读(1929) 评论(0) 推荐(0) 编辑

STC8H开发(四): FwLib_STC8 封装库的介绍和注意事项
摘要:前面已经介绍了如何在Keil5和PlatformIO环境下使用FwLib_STC8, 展示了ADC数模转换的例子. 这篇整体介绍一下这个封装库, 以及使用这个封装库进行开发的注意事项. 写这个封装库的初衷是希望知识和经验能复用, 避免每次在做STC8G和STC8H的开发时去查手册, 这个是最主要的动机; 其次是要在复用的情况下还能使程序接近直接操作寄存器的效率, 不能因为引入封装库造成明显的资源开销. 阅读全文

posted @ 2022-01-11 01:20 Milton 阅读(3061) 评论(1) 推荐(1) 编辑

STC8H开发(三): 基于FwLib_STC8的模数转换ADC介绍和演示用例说明
摘要:前面介绍了在Keil5和PlatformIO环境下使用FwLib_STC8, 接下来以STC8H系列为主, 结合demo中的演示用例介绍ADC(模数转换). STC8G和STC8H的ADC部分在寄存器设置上基本上一致, 但是不同型号对应的通道编号, 通道数量和精度有区别. ADC采样的精度实际上是不能设置的, 采样都是用的当前型号的最大精度, 结果存储在[ADC_RES, ADC_RESL]这两个寄存器. 为方便不同场合使用不同精度的结果, 可以将结果设置为左对齐或右对齐. 当设置为左对齐时, 可以只取ADC_RES的值(8位), 忽略最后两位. 当设置位右对齐时, 根据实际的精度, 可以取ADC_RES的低4位(12位精度)或低2位(10位精度), 加上ADC_RESL得到最终结果. 阅读全文

posted @ 2022-01-09 21:50 Milton 阅读(3374) 评论(9) 推荐(0) 编辑

STC8H开发(二): 在Linux VSCode中配置和使用FwLib_STC8封装库(图文详解)
摘要:STC8H开发(二): 在Linux VSCode中配置和使用FwLib_STC8封装库(图文详解)FwLib_STC8 是一个针对STC8G, STC8H系列MCU的C语言封装库, 适用于基于这些MCU的快速原型验证. 基于FwLib_STC8的项目, 可以在Linux下使用SDCC编译, 也可以在Windows下使用Keil C51环境进行编译. 前面介绍了在Windows的Keil5环境下使用FwLib_STC8, 以下介绍在Linux(本文使用Ubuntu20.04)的VSCode下的环境搭建 阅读全文

posted @ 2022-01-07 16:32 Milton 阅读(3073) 评论(0) 推荐(2) 编辑

STC8H开发(一): 在Keil5中配置和使用FwLib_STC8封装库(图文详解)
摘要:STC8H开发(一): 在Keil5中配置和使用FwLib_STC8封装库(图文详解)FwLib_STC8 是一个针对STC8G, STC8H系列MCU的C语言封装库, 适用于基于这些MCU的快速原型验证. 基于FwLib_STC8的项目, 可以在Linux下使用SDCC编译, 也可以在Windows下使用Keil C51环境进行编译. FwLib_STC12封装库较多采样函数方式对寄存器进行封装, 而函数与函数间的层级调用都会增加栈开支, 这样一方面容易对8位MCU的内存造成占用, 另一方面增加了固件尺寸. 在FwLib_STC8封装库中, 尽可能使用宏的方式对寄存器操作进行封装, 控制方法间的层级调用深度, 相比较FwLib_STC12, 节省了固件体积和堆栈占用. 阅读全文

posted @ 2022-01-05 14:00 Milton 阅读(7996) 评论(0) 推荐(1) 编辑

STC8A,STC8G,STC8H系列的IRC内部振荡源频率调节
摘要:从STC10/STC11系列开始出现内置RC震荡源(内置时脉, 宏晶称之为IRC). 最初的三代STC10/STC11/STC12, 在手册上的介绍都是"由于使用内部时钟源误差较大, ... 有串行通信的情况下不建议使用内部R/C时钟源". 到STC15这一代之后, 精度提升明显, 开始出现了默认不使用外置晶振的MCU型号. 从STC8开始对IRC进行了更多的改进, 从STC8A/8F的一个频段, 到STC8G/STC8H的两个频段, 到STC8A8K64D4的4个频段, 从CODE预置, 到XDATA只读预置, 可用性也在不断提升. 阅读全文

posted @ 2021-12-29 10:32 Milton 阅读(4108) 评论(0) 推荐(0) 编辑

STC8PROG - Linux下的 STC8A, STC8F, STC8G, STC8H 烧录工具
摘要:在Ubuntu20.04下测试的, 支持X86 64位的Linux环境, 支持型号为 STC8G, STC8H, STC8A8K64D4, STC15系列, 经过实际测试的型号: STC8G1K08A, STC8H1K08, STC8H3K32S2, STC8H3K64S4, STC8A8K64D4, STC8H8K64U, STC15F104W, STC15W104, STC15W408AS, 用于解决在Linux下stcgal无法烧录STC8系列的芯片的问题. 阅读全文

posted @ 2021-12-24 23:11 Milton 阅读(2298) 评论(4) 推荐(2) 编辑

联盛德 HLK-W806 (十二): Makefile组织结构和编译流程说明
摘要:通过 WM-SDK-W806 这个项目, 实例分析一下C语言项目中 Makefile 的组织结构. 从项目中与make相关的文件, 可以看到这是一个递归make的结构. 主要的文件都已经在结构中标出. 执行`make`时, 先执行主Makefile, 主Makefile中依次包含conf.mk, inc.mk, rule.mk. 行进到rule.mk, 在其中中执行指定的目标, 如果未指定, 则执行默认的all目标. 这里重点分析rule.mk文件, 因为这里定义了所有的规则, 以及对应的目标处理关系 阅读全文

posted @ 2021-12-20 23:37 Milton 阅读(2208) 评论(0) 推荐(0) 编辑

联盛德 HLK-W806 (十一): 软件SPI和硬件SPI驱动ST7567液晶LCD
摘要:联盛德 HLK-W806 (十一): 软件SPI和硬件SPI驱动ST7567液晶LCDST7567是128x64分辨率单色LCD液晶显示屏常用的芯片方案. ST7567是点阵LCD驱动集成电路, 可以使用8位并口或4线SPI串口(SPI-4)直接连接外部微控制器. 从MPU传输的数据存储在内部65x132 bits的显示数据内存(DDRAM). 在 DDRAM 中存储的数据与LCD点阵直接关联. ST7567 包含 132 段输出, 64 位输出和 1 个公共图标输出, 输出不需要外部时钟驱动. 阅读全文

posted @ 2021-12-19 22:36 Milton 阅读(8048) 评论(2) 推荐(0) 编辑

导航