2022年1月13日

STC8H开发(五): SPI驱动nRF24L01无线模块

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

posted @ 2022-01-13 20:54 Milton 阅读(32) 评论(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 阅读(170) 评论(0) 推荐(0) 编辑

2022年1月11日

STC8H开发(四): FwLib_STC8 封装库的介绍和注意事项

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

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

2022年1月9日

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 阅读(68) 评论(9) 推荐(0) 编辑

2022年1月7日

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 阅读(115) 评论(0) 推荐(1) 编辑

2022年1月5日

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 阅读(174) 评论(0) 推荐(0) 编辑

2021年12月29日

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 阅读(159) 评论(0) 推荐(0) 编辑

2021年12月24日

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 阅读(185) 评论(0) 推荐(0) 编辑

2021年12月20日

联盛德 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 阅读(338) 评论(0) 推荐(0) 编辑

2021年12月19日

联盛德 HLK-W806 (十一): 软件SPI和硬件SPI驱动ST7567液晶LCD

摘要: 联盛德 HLK-W806 (十一): 软件SPI和硬件SPI驱动ST7567液晶LCD ST7567是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 阅读(966) 评论(0) 推荐(0) 编辑

老王电子的拆机 ESP32-SOLO-1 填坑报告

摘要: 老王电子的拆机 ESP32-SOLO-1 填坑报告 ESP32-SOLO-1 拆装, 都是带板的, 长这个样子, 需要用热风枪从背面吹, 因为中间有焊点, esp32朝下, 用280度大概2到3分钟, 四周需要均匀着风, 用镊子试探天线部分是否松动, 将外沿稍微剥离后加热后边直到自然脱落, 再焊到转接板上. IDF SDK 如果烧录对象是solo, 需要勾选`Component config -> FreeRTOS -> Run FreeRTOS only on first core` 阅读全文

posted @ 2021-12-19 00:25 Milton 阅读(172) 评论(0) 推荐(0) 编辑

2021年12月18日

联盛德 HLK-W806 (十): 在 CDK IDE开发环境中使用WM-SDK-W806

摘要: 联盛德 HLK-W806 (十): 在 CDK IDE开发环境中使用WM-SDK-W806 CDK全称C-SKY Development Kit, 是平头哥推出的, 支持平头哥自研指令集C-SKY架构和RISC-V架构的芯片的集成开发环境, 为开发者提供统一的图形开发界面, 帮助开发者进行应用开发. 这篇说明是为了让CDK用户能快速上手使用SDK运行示例代码. 阅读全文

posted @ 2021-12-18 22:34 Milton 阅读(708) 评论(2) 推荐(0) 编辑

Thinkpad笔记本指点杆(小红点)自动漂移的问题

摘要: Thinkpad笔记本指点杆(小红点)自动漂移的问题 在T60, T410s, T420s, X240, T550这些机器上都遇到过这个问题. 产生漂移的问题根源是指点杆的校准机制. 这个机制的工作原理, 就是对指点杆连续采样的值进行监控, 如果在一段时间内x轴y轴的采样值保持不变(就像持续受到同一个方向的均匀的力), 程序就会认为这个采样值是本底偏差, 校准机制就会把这个x轴y轴采样值作为静止状态的参考值(类似于电子秤的清零). 阅读全文

posted @ 2021-12-18 15:11 Milton 阅读(65) 评论(0) 推荐(0) 编辑

2021年12月17日

联盛德 HLK-W806 (九): 软件SPI和硬件SPI驱动ST7789V液晶LCD

摘要: 联盛德 HLK-W806 (九): 软件SPI和硬件SPI驱动ST7789V液晶LCD ST7789/ST7789V/ST7789H2, 用于单片驱动262K色图像TFT-LCD, 包含 720(240*3色) x 320 线输出, 可以直接以SPI协议, 或者8位/9位/16位/18位并行连接外部控制器. 显示数据存储在片内 240x320x18 bits内存中, 显示内存的读写不需要外部时钟驱动. ST7789有 ST7789, ST7789V, ST7789H2等型号, 分辨率有240x204, 240x240, 240x320等多种类型, 驱动方式都是一样的 阅读全文

posted @ 2021-12-17 19:11 Milton 阅读(313) 评论(0) 推荐(0) 编辑

2021年12月16日

离岸人民币和跨境人民币收款业务

摘要: 离岸人民币 CNH 人民币实质上是政府信用背书的两套货币, 分为在岸人民币和离岸人民币. 日常使用的是CNY, 是在中国大陆流通的货币, 这是在岸人民币, 岸即指中国大陆. 离岸人民币则指在中国大陆以外进行交易的人民币, 使用的缩写为CNH. 在岸人民币的特点为固定型汇率,与美元挂钩, 规模大, 波 阅读全文

posted @ 2021-12-16 15:07 Milton 阅读(112) 评论(0) 推荐(0) 编辑

2021年12月15日

清算(清分)与结算的区别

摘要: 清算(清分)与结算 支付活动的过程一般包括交易, 清分和结算. 其中, 清分和结算均是清偿收付双方债权债务关系的过程及手段, 在支付活动中, 同行内账户资金往来直接结算便可, 而涉及不同行之间账户资金往来的, 则需先清分再结算. 清算与结算是金融交易后都需要处理的两个环节. 清算和结算不是一个意思, 阅读全文

posted @ 2021-12-15 21:08 Milton 阅读(138) 评论(0) 推荐(0) 编辑

2021年12月12日

Freaktab将于12月底关闭

摘要: Freaktab将于12月底关闭 出过众多优秀固件的电视盒子论坛Freaktab, 将于2021年12月31日关闭 R.I.P 阅读全文

posted @ 2021-12-12 22:31 Milton 阅读(43) 评论(0) 推荐(0) 编辑

联盛德 HLK-W806 (八): 4线SPI驱动SSD1306/SSD1315 128x64 OLED液晶屏

摘要: 联盛德 HLK-W806 (八): 4线SPI驱动SSD1306/SSD1315 128x64 OLED液晶屏 0.96的128x64 OLED液晶屏是嵌入式应用中最常见的一种屏幕, 这种屏幕常见的pin脚类型有两种: I2C和SPI, 驱动通常是SSD1306, 最近会有一些是SSD1315, I2C类型的OLED只有4个pin脚, 不可修改连接模式, 比较好辨认, SPI类型的OLED有6/7/8pin几种类型, 最常见的是7pin, 带协议选项的模块, 这种模块的背面PCB会有三种模式的选择说明, 后面列出的Rx代表那些位置需要焊接电阻, 通常这些电阻阻值都是5KR, 默认出厂都是4线SPI的模式. 在SPI模式下, SSD1306和SSD1315的驱动方式是一样的. 因为W806可以使用硬件SPI, 刷新速度比I2C方式要快将近10倍, 这里介绍的是4线SPI模式的驱动 阅读全文

posted @ 2021-12-12 14:00 Milton 阅读(452) 评论(0) 推荐(0) 编辑

2021年12月11日

联盛德 HLK-W806 (七): 兼容开发板 LuatOS Air103

摘要: 联盛德 HLK-W806 (七): 兼容开发板 LuatOS Air103 Air103和W806实际上是同一个芯片, 唯一区别就是丝印不同, W806与Air103的软件理论上都是通用的, W806 SDK也可以运行在Air103上, 所以也可以用C语言给Air103开发固件了. 代码编写和编译与W806一致, 需要注意的差别是, GPIO和PWM的demo中因为使用了板载LED, 与Air103有差异(PB0, PB1, PB2 => PB24, PB25, PB26), 需要调整. 阅读全文

posted @ 2021-12-11 17:40 Milton 阅读(544) 评论(0) 推荐(0) 编辑

2021年12月8日

STC12C5A56S2和DS12C887做的电子闹铃

摘要: STC12C5A56S2和DS12C887做的电子闹铃 配件信息 控制器: STC12C5A56S2 定时芯片: DS12C887 显示: 4位0.56寸数码管 其它: 无源蜂鸣器, 三极管S9012, 电阻10K*2, 100*1, 电容30p*2, 104*2, 12MHz晶振, 轻触开关*2, MicroUSB转接口 功能 24小时计时, 包含年, 阅读全文

posted @ 2021-12-08 19:04 Milton 阅读(34) 评论(0) 推荐(0) 编辑

导航