- 写在前面
新年好,各位,今天来分享制作一个三星单片机的编程器
嘿嘿,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 重庆