
AM29便携编程器
简介
本设计采用STM32的FSMC硬核实现对AM29系列的16位3.3V NOR FLASH器件进行编程,这样在器件正式装板前进行AM29芯片的验证。采用离线设计,免上位机,可以接充电宝使用。
简介:本设计采用STM32的FSMC硬核实现对AM29系列的16位3.3V NOR FLASH器件进行编程,这样在器件正式装板前进行AM29芯片的验证。采用离线设计,免上位机,可以接充电宝使用。开源协议
:CC BY-NC 4.0
描述


注意:
本项目仅供个人学习与研究使用,欢迎复刻,但禁止用于任何商业用途。
演示视频:https://www.bilibili.com/video/BV1KsXABEEVm/
设计的背景:
进入21世纪后,街机基板广泛采用3.3V NOR Flash器件,例如Cave的CV1000系列、IGS的PGM2。然而传统编程器如Willem PCB v4.5,最初基于5V设计,无法适配新制程对低电压要求(如:使用十分先进工艺45纳米的S70GL02GT),直接用5V进I/O很容易缩短芯片寿命。本人曾因使用该编程器烧坏一片昂贵的S70GL02GT,因此决定基于STM32重新设计一款适用于3.3V NOR Flash、面向街机基板爱好者的编程器。
并且传统编程器有个大问题:需要配套的上位机软件。一但找不到配套的软件,或者配套的软件不支持新的操作系统,或者接口不兼容时,编程器就没法使用。(等于是变砖)
还是以Willem PCB v4.5编程器为例,2026年的现在要找一台Windows XP+打印口的电脑实在是太难太难了。本人为了侍候这个Willem PCB V4.5,不得不保留一台2007年的Core 2古董PC。
所以本项目,使用TF卡作为中间存储的介质。只要将要写入的放在TF卡的AM29目录,就可以不用上位机,直接在编程器上对AM29器件进行写入、擦除、读取操作。由于不需要上位机,所以只需要1个USB口供电即可使用。你可以直接插到充电宝上使用,这样去现场需要重新烧录时,就不到处找电。
但考虑到频繁插拔TF,比较麻烦。所以,也提供了将TF卡经STM32模拟成U盘的操作。尽管速度只有感人的USB 1.1但胜在使用方便。(大文件或者不愿意耐心等的话,建议还是拔TF下来用读卡器进行读写)
考虑用户的操作,或者说SSD1306未来可能的停产,因此不仅提供OLED的操作界面,并且在UART下也能进行相同的操作(UART的设置为最常用的,波特率: 115200,数据位:8,校验位:无,停止位:1)。而在UART下,提供比OLED更详细的排障信息。
而大容量的芯片,擦除、写入、读取耗时极长,因此设计有蜂鸣器,对于超过60秒的操作,在完成时,发出声音提醒。(如果不想发声音,请烧录NO-SOUND固件)
本编程器主要功能:
目前测试支持的芯片:MX29LV320、S70GL02。理论支持AM29LV200~S70GL02,以及所有兼容AM29指令的16位芯片,例如:MX29GL系列、MX68GL系列、S29AL系列、EN29LV系列。(不支持Intel 28系列)。后续会根据实际街机基板的需要,可能会增加其它街机基板常用的3.3V芯片支持(例如:RTC9701)
我测试的S70GL02芯片:


1.获取AM29的ID并读取前10字:主要是看一下型号是否和数据手册的对得上,以及是否为空的粗糙判断
2.整芯片擦除并查空验验:先对整芯片进行擦除,然后再检查擦除后是否还有不为空。(为什么要用整片擦除,而不是扇区擦除,主要的原因是芯片可能有扇区锁,只能用整片擦除才能清除扇区锁)
3.选择BIN文件写入并校验:读取TF卡里的AM29目录中的.bin文件,如果.bin文件有非英文字符,将跳过。列出来选择用那个文件写入。注意写入的文件不能超过芯片的容量。(实测写入速度:4M的MX29LV320,只需要70秒。如果用Willem PCB V4.5的话,要半小时。而S70GL02,只需要1200秒,如果用Willem PCB V4.5的话要50小时!)。写入完成后,会读取芯片逐word进行校验。
4.读取AM29芯片内容保存到TF卡:将芯片的内容读取出来,写到TF卡中的AM29R目录下。此目录按照8位数字的方式进行命名。(实测读取速度:4M的MX29LV320,只需要30秒。Willem PCB V4.5要10+分钟)
5.切换到U盘模式:将TF卡模拟成U盘,方便在电脑上进行读取和写入。(切换前就要接好USB线,否则切换会失败。受限于USB 1.1,读写速度只有300~400K)
固件开源地址(欢迎各位提交PR):
https://github.com/motozilog/am29fsmc
考虑到MX的GL系列buffer只有32Bytes,而S29GL128~S70GL02是有512Bytes。 而S70GL02只有一家厂生产(原AMD后被SPANSION、Cypress、Infineon收购),所以代码中只在S70GL02中启用buffer功能(如果不开buffer写一片S70GL02大约要20000秒,开启后只需要1200秒)。其它芯片请自行根据实现情况开启。(注意:buffer只有在GL系列才有,LV系列是都没有)。除了S70GL02均采用保守的逐word写入
复刻建议:
1.考虑到STM32F103ZGT6的价格较贵,可以采用STM32F103ZET6进行代替。固件同时适配ZET6和ZGT6。原计划是打算将中文字库(U8G2)也放进去,但发现实在太麻烦了就放弃在OLED上显示中文,所以OLED只显示英文和数字。因此只要ZET6的容量就足够了。(当然国产的兼容品可以尝试,但我没有测试。我只试了STM的)
2.R20如果焊接时,请不要使用USB供电,否则DAP-Link的3.3V会与USB供电的3.3V有冲突。(即:R20不需要焊接,除非你不用USB功能。DAP-Link的供电只在一开始验证STM32焊接的时候使用)
3.如果接上DAP-Link时,请将DAP-Link上电,否则DAP-Link不上电时默认会将RESET下拉,这样STM32就不会启动
4.OLED是按照SSD1306的指令进行开发,如果使用SSD1315可能会有些地方不正常,请自行修改。(虽然我测试了一翻没有发现问题,但是SSD1315比SSD1306小了一圈,个人不太喜欢)
5.考虑到蜂鸣器的声音,会干扰他人。所以设计时,音量是按照只在自己的工作桌能听的微小音量进行设计。如果觉得音量不够,将R33从200欧换成1欧
6.TF卡注意要使用MBR格式(而不是GPT),分区只分1个FAT32(不支持NTFS,也不支持ExFAT)。建议使用正规渠道的正品TF卡,本人使用的TF卡是C42416578(非广告,仅供参考)
https://item.szlcsc.com/mro/44416823.html
7.手工焊接顺序:STM32→DAP-Link(此时先焊上R20)→使用Keil能正常识别到STM32,并下载固件成功→晶振&起振电容→验证时钟正常(用示波器)→拆掉R20→USB&开关&LDO&主电容→验证供电正常→STM32的退耦电容(因为焊上排母后就会很难焊)→ESD器件(可选,但强烈建议焊上。虽然会有点难焊。建议至少要焊D1)→拿己经焊好的转换板插上排母的情况下焊排母(这样避免转换板与排母有对位误差,设计上没有采用带定位孔的排母就是方便人工焊的时候可以调整误差)→剩下根据自己的顺手来焊
后记:
没有想到过去了这么多年,我竟又一次因为街机基板的需要而搞起了编程器。
willem编程器的二次开发,是我人生中第一个软硬结合的项目。许多年前,我从未想过有一天自己能够设计PCB,制作出真正适合自己的电子作品;更没有想到,我竟能完成OSSC Pro这种6层2300pin的复杂设计。willem带给我太多回忆——从最初手搓willem的调试板,到后来在bios repaire站长的帮助下拥有PCB的调试板,再到自己花了3个月时间学习用立创EDA标准版设计出willem 32位扩展板( https://oshwhub.com/motozilog/32bit-willem )。而今年,正是因为willem对3.3V器件支持不足,我得以参与到星火计划中重新思考willem的不足,而做针对AM29的编程器。
我由衷地感叹立创这家公司的伟大!如果没有立创,或许我现在还在打通一个又一个街机游戏,又或者用一条又一条飞线去维护那些8、90年代街机基板。
(图:当年本人手搓的willem编程器debug板)

(图:当年在bios repair站长帮忙做的willem debug板)

设计图
未生成预览图,请在编辑器重新保存一次BOM
暂无BOM
克隆工程知识产权声明&复刻说明
本项目为开源硬件项目,其相关的知识产权归创作者所有。创作者在本平台上传该硬件项目仅供平台用户用于学习交流及研究,不包括任何商业性使用,请勿用于商业售卖或其他盈利性的用途;如您认为本项目涉嫌侵犯了您的相关权益,请点击上方“侵权投诉”按钮,我们将按照嘉立创《侵权投诉与申诉规则》进行处理。
请在进行项目复刻时自行验证电路的可行性,并自行辨别该项目是否对您适用。您对复刻项目的任何后果负责,无论何种情况,本平台将不对您在复刻项目时,遇到的任何因开源项目电路设计问题所导致的直接、间接等损害负责。


评论