- 写在前面
新年好,各位,今天来分享制作一个三星单片机的编程器
嘿嘿,x鱼垃圾佬元件库有些三星单片机s3f9454,编程器不想买,基本拿来拆件玩的。但,前些时候csdn下载到它的编程时序,自己来做个编程器。资源中可以下载 
- 致谢
感谢csdn这位同仁分享 自制三星单片机烧写器sam-V1 代码,看来是脱机编程器工程,可能支持sam88 core系列mtp mcu
这里只有s3f9454一个型号,未在其他型号上测试过,请自行校验
 
- 接口
三星单片机支持isp下载,这里使用isp接口来编程。isp包含sda,scl两线类似i2c接口,比i2c更简易一些,不需要考虑多设备问题,电路实现也比较简单。下载相应型号的datasheet可以查询编程引脚。
略知一些电路,也能画一点板子,但很少用到,仅需要简单的写入工具,所以改用并口wiggler jtag编程
仅能烧录二进制文件,当使用hex文件时,请自行转换为二进制文件
 
- s3f9454 引脚图 

 
- 电路图
这里使用LPT wiggler jtag的i/o模拟isp下载接口,TDI TDO模拟sda,TCK模拟scl,运行在linux上。电路图如下

LPT wiggler jtag不是必须的,可以使用xx派或者开发板,需另编程 
- 实物图
少量元件在洞洞板上即可构建编程器。拆的贴片电阻,ldo焊在背面

 
- 编程命令简介
执行命令前应首先发送i2c的开始数据传送|结束数据传送两条命令 
- 擦除
 
	    // 擦除芯片需连续写入命令 0xe0,0x15,0x55,0xaa
	    send_byte(0xe0);
	    send_byte(0x15);
	    send_byte(0x55);
	    send_byte(0xaa);
 
- 写入
 
    // 写入命令 0x60
    send_byte(0x60);
    
    // 先发送地址高位BYTE
    send_byte(uword_h(addr));
    send_byte(uword_l(addr));
    // 循环发送字节至结束
    for(...)
    {
        send_byte(data...);
    }
 
- 读取
 
    // 读取命令 0x61
    send_byte(0x61);
    
    // 先发送地址高位BYTE
    send_byte(uword_h(addr));
    send_byte(uword_l(addr));
    // 循环接收字节
    for(...)
    {
        buffer[] = recv_byte();
    }
 
- 执行过程

 
- 附录
LPT wiggler jtag电路图和更多

 
就到这里吧
treeyan 
1/14/2025 重庆



















