[{"content":"SSD1306 Datasheet V1.5\nSSD1306 Datasheet V1.5 第61页接线图放大\nSSD1306 的高版本手册不太好找，这里先甩俩文件日后备用。。\n128×64 的单色 OLED 屏幕模块，淘宝上卖五块钱，搞过单片机的应该都把玩过。\n淘宝上出售的 128×64 小屏，主控芯片有 SSD1306/SH1106/SSD1315 这些指令大体上兼容但是又有区别的型号，都支持 SPI/I2C/8080并口 之类的接口，可以通过短接0欧电阻来配置功能。\n大一刚学 STM32 的时候，把玩过 SSD1306 SPI 的屏幕。当时打算拿状态机做个带灰度效果的 UI 界面动效玩玩，设置成水平寻址模式，拿 SPI+DMA 全屏刷新，一秒刷他个几百帧，再给每个像素调占空比，实现四阶灰度效果。然后发现灰度的效果很奇怪，画面撕裂，闪烁的厉害，压根没法看。后面改成了纯黑白UI，把动效也砍掉了。当时我还去翻过了英文文档，SSD1306 的屏幕刷新速率可以通过内部RC振荡器进行配置，最快大概是106帧左右，显存刷新速率取决于外部接口有多快。B站上还有一秒刷一千多帧的。\n学过了信号与系统之后再回头看看，屏幕刷新速率就是采样速率，感觉可能是混叠了？汗。。。\n今天刷B站，看到有人讨论 ST7789 的画面撕裂和完美刷屏方案，提到了一个用于同步画面的 TE 引脚，但是很少有厂家引出。SSD1306 似乎也有类似的问题。\nSSD1306 的第 51 号引脚 FR，用作同步信号，可以避免帧撕裂，但是不知道为什么原因，这个引脚在所有的市售模组上都未被引出。\n其他 29 个引脚都有电气连接，唯独 7脚 是悬空的，一看就很可疑。\n可以看到，和 BLOCK DIAGRAM 对比，中景园的 SSD1306 30P FPC 模组缺少了三个引脚没有引出。\n其中两个是外部时钟输入与内外部时钟切换 CL 和 CLS，另一个就是 FR。这三个引脚，只要任意引出其中一组，都可以实现画面的垂直同步，从而实现完美的灰度效果。然鹅全都没有引出，那就肯定是厂商的阴谋，让你去买专门的灰度屏，多多爆金币了。\n互联网冲浪找到了一些难得的相关讨论，在这里放下链接记录下。\n通过 FPC排线的连接细节放大，可以肯定厂商就是故意的，傻而逼之。\n发现一个热衷于拿 Arduino 和 OLED 小屏搓游戏掌机的神秘小众论坛，他们对于这些东西应该有挺多研究，这个帖子 非常重要，提供了很多有用的信息。\n在 18楼 有个自称搞机 50 年的老资历爆改成功，把漆包线飞上去了，牛而逼之。老资历的灰度显示效果展示\n说不定之后啥时候闲着蛋疼，可以自己改一个玩。\n","date":"2026-05-27T22:14:35+08:00","permalink":"/post/128x64oled_missing_pin/","title":"再看12864OLED：消失不见的引脚"},{"content":"参考资料：\nSTM32 MPU 完整介绍 ST AN4838 Introduction to memory protection unit management on STM32 MCUs STM32H7 体系结构介绍 以及 不同存储设置下的性能对比 ST AN4891 STM32H72x, STM32H73x, and single-core STM32H74x/75x system architecture and performance 0x01 前情提要 去年搞了一块挣点元子的 H743IIT6 核心板和一块 1024*800 的七寸 LTDC RGB 电容触摸屏，核心板上是带一片 SDRAM 的，挂在 FMC 上，正好给屏幕做显存用。\n当时用的是 CubeMX + Keil MDK5 + AC6 工具链。\n当时还没仔细研究过 MPU，以为是在相对比较复杂的工程中使用的，方便工程资源管理。于是拿 CubeMX 配置的时候，一直都选的是 NOT USED。 至于 Cache，听起来就是能够加速运算的好东西，于是把 I-Cache 和 D-Cache 都勾上了。\n然后死的很惨烈，天天花式螺旋升天，各种诡异问题层出不穷。当时发现 AC5/AC6 编译器的选择和不同的编译优化等级都会影响代码执行结果，和闹鬼了一样，一直以为是 Keil 和编译器的问题。\n单独配置 SDRAM 和屏幕的时候好像还没出现什么问题。 后来把 ADC 采样和大点数 FFT 计算加上的时候，就出现了各种诡异的问题。\n比如屏幕会有闪烁纹，ADC 采样的数据更新异常，在触摸中断里面修改的变量失效之类的。 虽然当时靠给变量加上 volatile 修饰符之类的办法让整个工程跑起来了，但还是感觉不太好，而且要往里面加点新功能的时候也不太方便，很容易暴毙，当时搞的痛不欲生。\n再然后，电赛封箱前一天的下午，LTDC的屏幕挂掉了，屏幕全黑，原因未知，留下了深刻的心理阴影。于是自闭了半年，发誓什么“这辈子都不会再摸H7一下”之类的。\n后面就跑去玩 STM32G4 了，有单精度浮点加速单元，还有全新的 Cordic 和 FMAC 加速器外设，玩的很开心。\n最近发现 STM32 的 H72x 和 H73x 系列的产品线都装上了 Cordic 和 FMAC。 看资料这个是相对比较新的产品线，ST 在 2020 年发布的，比 H74x 和 H75x 晚四年，优化了主频和功耗。（大火炉 H743 没给我留下好印象，摸起来很烫手，生怕那天芯片自己烧挂了。中间确实换过一块 H743IIT6 核心板，疑似工作电流太大 LDO 没撑住，短路把 5V 电压引到 H7 上电死了\u0026hellip;\u0026hellip;\u0026hellip;\u0026hellip;\u0026hellip;\u0026hellip;\u0026hellip;.）\n对比 G4 系列 12bit 的 ADC，H7 全线都是 16bit 的，感觉这部分的优势很大。\n于是吸取教训，搞了一块 H723ZGT6 和一块 2 寸 SPI 小屏。打算重新把 STM32H7 内存相关的东西搞明白。\n0x02 STM32H7 体系结构 M7 内核 Cortex-M7 基于 ARMv7-M，6 级超标量流水线，双发射，带分支预测。带双精度 FPU。\nSTM32H72x/73x 有 32 KB 的 I-Cache 和 32 KB 的 D-Cache，和核心同频，CPU零等待。哈佛架构同时取指令和数据这一块。\n存储结构 Internal memory summary of the STM32H72x and STM32H73x Memory type Memory region Address start Size Access interfaces Domain Maximum frequency Flash memory FLASH-1 0x0800 0000 1 Mbyte AXI (64 bits) D1 275 MHz RAM DTCM-RAM 0x2000 0000 128 Kbytes DTCM (64 bits) D1 550 MHz RAM ITCM-RAM 0x0000 0000 64 Kbytes ITCM (64 bits) D1 550 MHz RAM AXI SRAM 0x2400 0000 320 Kbytes AXI (64 bits) D1 275 MHz RAM SRAM1 0x3000 0000 16 Kbytes AHB (32 bits) D2 275 MHz RAM SRAM2 0x3000 4000 16 Kbytes AHB (32 bits) D2 275 MHz RAM SRAM4 0x3800 0000 64 Kbytes AHB (32 bits) D3 275 MHz RAM Backup SRAM 0x3880 0000 4 Kbytes AHB (32 bits) D3 275 MHz 其中，AXI SRAM 有 192 KB 可以被重配置为 ITCM，配置粒度为 64 KB。\n可以看到 紧密耦合内存（TCM）直连 M7 Core，和核心跑在相同频率上，不经过 Cache，CPU零等待，妥妥的一等公民。\nITCM 的接口是单个 64bit，DTCM 的接口是两个 32bit。AN4891 明确提及 DTCM 也可用于取指令。\nGPT5.5的解释：\n为什么 DTCM 是两个 32-bit 端口？因为 Cortex-M7 的数据访问经常有 load/store 并行需求，例如：c[i] = a[i] + b[i];\n这类代码会频繁读写数据。DTCM 的设计更适合数据通路。\n为什么 ITCM 是 64-bit？因为取指希望一次喂给流水线更多指令，尤其 Thumb-2 有 16/32-bit 混合指令，64-bit fetch 对连续指令流更友好。\n片内的 Flash 和其他 SRAM 的频率，最快只能有主频的一半，会经过 Cache，根据不同的配置，会执行不同的缓存策略。\n片外配置的存储器，也同样会经过 Cache，也能被缓存加速。\n0x03 MPU 介绍 施工中\u0026hellip;\u0026hellip;\n","date":"2026-05-07T01:12:56+08:00","permalink":"/post/stm32h7-ram-cache-mpu-and-fucking-memory-consistency/","title":"STM32H7笔记（一） RAM、Cache、MPU和沟槽的内存一致性"},{"content":" 依然憧憬未知的明天\n依然怀念感动的昨天\n不知不觉已经过了二十年\n也曾怀念那个 勇敢做梦的少年\n想起妈妈年轻的笑脸\n想起她离开的瞬间\n别让失败的眼泪淋湿了双眼\n今天（或者说昨天？）晚上一直在搞电赛的东西，一直在看和 H7 的 MPU/Cache 相关的博客和官方手册，前前后后应该有十个小时吧。\n今年二十周岁了。好像已经没有时间忙着去做无厘头的事了。\n网易云深夜日推到了这首歌。《明天会更好》的变奏，我很喜欢。\n亿万人必须听合成器浪潮，，，\n","date":"2026-05-06T03:04:10+08:00","permalink":"/post/2026-5-6-emo/","title":"深夜emo，分享一首歌"},{"content":"\nTOC1 TOC2 TOC3 TOC1 TOC2 TOC3 ","date":"2026-04-05T17:17:12+08:00","permalink":"/post/helloworld/","title":"Hello,world"}]