打印

俺DIY的MEGA8开发板

[复制链接]
楼主: XZL
手机看帖
扫描二维码
随时随地手机跟帖
21
xwj| | 2009-9-16 11:07 | 只看该作者 |只看大图 回帖奖励 |倒序浏览
老x(不是LZ)继续解惑:
至于17楼说的:
不管怎么接,都是山寨用法,下载完成后还得拨动开关,要不isp上的几个io就被占用
宇容创行 发表于 2009-9-16 10:49


这确实是山寨用法,而正规点的做法就是加个74HC244做选通,LZ可以考虑一下

毕竟,SIProg作为随插随拔的简易下载线用用还可以,毕竟焊接简单,搭棚焊相当的方便。
但既然做了PCB,那就不要再这么"简易"了哦~

使用特权

评论回复
22
xwj| | 2009-9-16 11:23 | 只看该作者
老x以前也是很喜欢用SIProg线的,因为这个线用串口限压,所以就算很长的线(2米)也没一点问题,而简易并口线一般0.6米以上就不行了
再就是只要插串口一根电缆就行了,加个开关就和通讯不相干了,便于和PC联机调试串口
而且,串口窃电也不错,有时想烧个AVR芯片直接把这个往串口上一插即可,电源都不要;P
现在很多本本没有并口却又串口,也可以用用这个(当然,还是用USB工具好,而且也并不贵)

好了,感兴趣的就看下面的详细原理介绍吧,21ic上的**哦~
http://www.21ic.com/app/mcu/200906/43891.htm
http://www.21ic.com/app/mcu/200906/43891_2.htm
http://www.21ic.com/app/mcu/200906/43891_3.htm

SI-PROG编程器的工作原理及其程序设计时间:2009-06-16 13:03:06 来源:现代电子技术 作者:安郁宽1,李宏2,闫 鹏1 1.滨州医学院物理教研室 2
摘 要:介绍SI-PROG编程器的工作原理,利用PC机串口UART芯片实现单片机的ISP下载。PC机串口8250芯片中SOUT,DTR,RTS,CTS四个引脚的电平可通过其内部的几个寄存器分别进行控制或读取,利用引脚可实现单片机的ISP下栽。介绍了8250与单片机之间通信信号的逻辑关系以及电平转换,分析了接收器的阈值电压的特点,给出了使用SI-PROG编程器的条件。最后,以AVR单片机为例介绍了下载程序设计。结果表明,利用PC机串口UART芯片可以实现对AVR单片机的ISP下载,其硬件电路和软件设计都很简单。
关键词:S1-PROG编程器;程序设计;UART;AVR单片机

    SI-PROG编程器为PonyProg 2000软件中使用的一种ISP编程器,该编程器利用PC机串口电路的异步通信控制器UART实现AVR,PIC,AT89等单片机的ISP编程。虽然该编程器不为Atmel的AVRStudio所支持,但是其硬件电路简单,成本低,便于制作,适于初学者进行学习和简单开发。下面以AVR单片机为例,介绍SI-PROG编程器的工作原理及其程序设计。

l SI-PROG编程器的工作原理
1.1 电路组成
    图1为SI-PROG串口编程器的工作原理图。电路分为PC机串口电路、SI-PROG编程器和目标机3部分。编程器通过9针D型连接器DB9与PC机串口连接,通过10针连接器J1与目标机连接,电路在文献[4]的基础上做了适当的简化。J1引脚定义与Atmel的STK200下载线相同。

1.1.1 PC机串口电路及SI-PROG编程器
    PC机串口电路由U1~U4组成。8250(U1)为异步通信控制器UART,SN75150(U2,U3)为驱动器,SN75154为线接收器。U2,U3,U4实现8250引脚上TTL电平与串口DB9上RS 232电平转换。SI-PROG编程器则完成DB9上RS 232电平与目标机上TTL电平的转换。
1.1.2 串行SPI接口
    编程器通过目标机的SPI接口对其片内的FLASH程序存储器进行下载编程。SPI接口由SCK,MOSI和MISO等几条信号线组成。下载编程的过程实际上是PC机与AVR的通信过程。两者的关系是一种主从关系,PC机为主机,AVR为从机。主机经MOSI引脚将串行数据发给从机,从机经MISO引脚将数据返回给主机。SCK为串行时钟脉冲,由主机发往从机。主机通过SCK脉冲控制与从机的数据传输。图2为串行下载编程时序图。单片机在SCK上升沿读取MOSI上的数据位,在SCK下降沿输出数据位到MISO。


使用特权

评论回复
23
xwj| | 2009-9-16 11:24 | 只看该作者
SI-PROG编程器的工作原理及其程序设计2时间:2009-06-16 13:03:06 来源:现代电子技术 作者:安郁宽1,李宏2,闫 鹏1 1.滨州医学院物理教研室 2

1.2 信号的逻辑关系
    由图1可见,8250的11,33,32,36四个引脚分别通过编程器与AVR的RESET,MOSI,SCK,MISO相连进行通信。这4个引脚的电平可通过8250内部的3个寄存器进行设置或读取,如图3所示。3个寄存器依次为线路控制寄存器(LCR)、Modem控制寄存器(MCR)和Modem状态寄存器(MSR)。对于串口1,3个寄存器的端口地址一般为3FBH,3FCH和3FEH。LCR的SB位、MCR的DTR位和RTS位分别控制11,33,32三脚的电平。MSR的CTS位则反映了36脚的电平。

    下面分析8250与AVR通信信号间的逻辑关系。为了避免引起混乱,这里全部采用正逻辑描述。
1.2.1 RESET与SB位的逻辑关系
    线路控制寄存器LCR的D6位SB决定了8250的11脚的电平。当SB=1时,11脚被强制拉到低电平,DB9的3脚为高电平。当SB=O时,DB9的3脚为低电平。逻辑关系在Q1上又反相一次。因此,RESET信号与SB位的逻辑关系为:
    RESET=SB (1)
    编程时只要通过OUT指令改变SB位的值,就可以控制RESET端的电平。当8250复位后,SB=0,RESET=SB=1,RESET引脚为高电平。
1.2.2 MOSI,SCK信号与DTR,RTS位的逻辑关系
    MODEM控制寄存器MCR的D0位DTR控制着33脚的电平。置DTR=1,则33脚DTR为低电平,是逻辑非关系。U3相当于非门,故MOSI信号与DTR位的逻辑关系为:
    MOSI=DTR (2)
    类似的,SCK信号与MCR的D1位RTS的逻辑关系为:
    SCK=RTS (3)
1.2.3 CTS位与MISO信号的逻辑关系
    MODEM状态寄存器(MSR)的D4位CTS反映了8250的36脚的电平,当CTS端为高电平时,CTS=O;反之CTS=1。CTS位与CTS端是逻辑非关系。因此,CTS位与MISO信号的的逻辑关系为:
    CTS=MISO (4)
    根据式(1)~式(4),下载编程时,设置或读取AVR的RESET,MOSI,SCK,MISO脚的电平问题就变成通过I/O指令设置或读取8250内部寄存器的SB,DTR,RTS,CTS位的问题。
1.3 SI-PROG编程器的电平转换
    根据RS 232标准,串口DB9上的两种电平分别为5~15 V和-5~-15 V。编程器电路采用分立元件实现DB9上的RS 232电平与AVR的TTL电平间的转换。
1.3.1 RS 232到TTL电平的转换
    图1中,用限流电阻R3和4.7 V的稳压二极管Z2完成DB9的4脚上RS 232电平到J1的1脚上TTL电平的转换。5~15 V与-5~-15 V高低两种电平通过R3后将分别变成4.7 V和O V(实际为-O.7 V),符合TTL电平的要求。
    类似的,限流电阻R4和4.7 V的稳压二极管Z1完成DB9的7脚上RS 232电平到J1的7脚上的TTL电平的转换。
    Q1,R1,R2接成反相器,DB9的3脚上的5~15 V与-5~-15 V两种电平分别使Q1处于饱和导通和截至状态,实现了RESET信号的电平转换。
1.3.2 TTL到RS 232电平的转换
    TTL到RS 232电平的转换由SN75154线接收器实现。图4为SN75154的施密特电压传输特性曲线。
    当阈值电压控制端T3接Vcc时,它工作在图4中曲线a状态,两个阈值电压分别为VIT-=-1.1 V和VIT+=2.2 V;当T3悬空时,它工作于图中曲线b状态,VIT-=-1.4 V,VIT+=2.2 V。显然,对于后一状态,MISO引脚上的TTL电平信号可以通过U4到达8250,而前一状态则无法通过U4。

使用特权

评论回复
24
xwj| | 2009-9-16 11:25 | 只看该作者
SI-PROG编程器的工作原理及其程序设计3时间:2009-06-16 13:03:06 来源:现代电子技术 作者:安郁宽1,李宏2,闫 鹏1 1.滨州医学院物理教研室 2

    根据文献[2],长城0520 PC-XT机上SN75154的阈值电压控制端T3接到+5 V。这样,SI-PROG编程器就不能工作。计算机硬件发展到今天,UART-般均升级为16550,它与打印机并口、键盘控制器等电路一起集成于LPC芯片内,16550仍与8250相兼容。驱动器和接收器也都集成到一个芯片内,如75232,75185。这些芯片的接收器不再采用图4中曲线a那样的阈值电压,而改为与曲线b相接近的情况。表1为3台PC机阈值电压的实验测量结果。表中,典型值为芯片数据手册中的数据,实验值为实验测量结果。显然,3台PC机上,SI-PROG编程器都能正常工作。

2 下载程序设计
    根据式(1),用输出指令向3FBH端口写入40H,将使RESET端置低电平,写入00H,使RESET端置高电平;根据式(2),式(3)。向3FCH端口写入数据,改变其D1位的数值,就可改变SCK端的电平,改变D0位的数值,即改变MOSI的电平;根据式(4),用输入指令读取3FEH端口,读取字节的D4位为MISO返回的数据位。
    根据AVR单片机的串行下载算法,发送串行编程指令的操作步骤为:进入串行下载模式;发送编程使能指令;执行所需的读、写等操作指令,可执行一条,也可执行多条;退出串行编程模式。
    (1)进入串行下载模式。保持SCK端为低电平,给RESET端发送一个大于两个时钟周期的正脉冲,AVR单片机便进入串行下载模式。
    (2)发送串行编程指令。根据图2,一个SCK时钟周期可分4个步骤:输出位数据到MOSI线,延时;令SCK由0变1,延时;读取MISO线上的数据位;令SCK由1变0,延时。前两个步骤写一位数据到AVR,后两个步骤则从AVR读取1位数据。8个SCK时钟周期写1个字节,同时读一个字节。AVR单片机每条编程指令均由4个字节组成。根据上述过程,将4个字节的编程指令依次写入到AVR,同时读取返回的4个字节数据。
    (3)退出串行编程模式。将RESET端置高电平,AVR单片机退出编程模式。

3 结 语
    根据上述分析,采用VC++6.O编程成功地对ATtinyl3和ATmegal6两种芯片的FLASH进行了芯片擦除、读、写以及对熔丝位的读、写等操作。注意编程时需要解决Windows NT/2000,/XP操作系统下访问I/O端口的技术问题。
    使用SI-PROG编程器,必须满足两个条件:
    (1)串口的UART芯片要与8250兼容;
    (2)电平转换芯片接收器的阈值电压要介于TTL高、低两种电平之间。
    多数PC机所配置的串口都能满足上述两个条件。某些早期的PC机有可能与PC/XT机类似,不满足条件(1)。目前,家用笔记本电脑上一般不再配置串口。这样,SI-PROG编程器在某些PC机上不能使用。然而,SI-PROG编程器仍有一定的使用空间。毕竟LISB接口的编程器价格较高,而一些商用笔记本电脑中取消了并口但保留着串口,并口编程器又不能用。而多数台式机上一般仍配置有串口。

使用特权

评论回复
25
宇容创行| | 2009-9-16 11:28 | 只看该作者
这种控制串口口线模拟时序的,速度很慢

如果用usb转串口的线,那就更慢了

使用特权

评论回复
26
xwj| | 2009-9-16 11:38 | 只看该作者
SI Porg烧录(实为下载)一大堆常用可编程芯片的接法、原理图:
si-prog.pdf (35.69 KB)

而最原始的出处应该是这里http://www.lancos.com/prog.html
只是不知为何老x这边打不开这个网站了:(

使用特权

评论回复
27
xwj| | 2009-9-16 11:42 | 只看该作者
速度还能接受的。

25楼要求那么高的话,完全可以不用它,但没必要阻止别人去用它
或者,你提供个更加简单、廉价、好用的方案???

使用特权

评论回复
28
宇容创行| | 2009-9-16 11:45 | 只看该作者
更加简单、廉价、好用的方案?

并口加电阻

使用特权

评论回复
29
宇容创行| | 2009-9-16 11:47 | 只看该作者
如果是isp下载,本人只用自制的stk500(usb芯片用的是pdiusbd12,不是usb转串口之类ic),非常稳定高速

使用特权

评论回复
30
xwj| | 2009-9-16 12:20 | 只看该作者
并口加电阻你倒能接受?

并口加电阻哪能和串口加电阻比呢???

使用特权

评论回复
31
宇容创行| | 2009-9-16 12:25 | 只看该作者
其实都是一样烂,凑合用
串口电平高一点,多传几米

使用特权

评论回复
32
xwj| | 2009-9-16 12:33 | 只看该作者
没有烂的工具,只有烂的人。

终于知道你为什么老是这样的言论了,原来是为了推你那些垃圾“开发工具”。

在初学者眼里,SIProg就是宝贝;
在应用者眼里,你那些真的是垃圾。
——决不会因为你贬低别人而改变。

使用特权

评论回复
33
宇容创行| | 2009-9-16 12:36 | 只看该作者
和小x无话可说

使用特权

评论回复
34
古道热肠| | 2009-9-16 15:19 | 只看该作者
更加简单、廉价、好用的方案?

并口加电阻
宇容创行 发表于 2009-9-16 11:45


您这提法有问题,现在几个笔记本电脑有并口?
而USB转串口搞嵌入式开发的基本上人手必备,所以通过串口直接给AVR下载程序是一种很适用的技术.
串口再慢,8K的代码也花不了多长时间,俺过去测试过能过串口的控制线直接给AT89S52下载程序的软件的.

使用特权

评论回复
35
宇容创行| | 2009-9-16 15:31 | 只看该作者
您这提法有问题,现在几个笔记本电脑有并口?
而USB转串口搞嵌入式开发的基本上人手必备,所以通过串口直接给AVR下载程序是一种很适用的技术.
串口再慢,8K的代码也花不了多长时间,俺过去测试过能过串口的控制线直接给 ...
古道热肠 发表于 2009-9-16 15:19

建议版主用usb转串口线实际测试这个电路后并用秒表计时,再发此贴

使用特权

评论回复
36
古道热肠| | 2009-9-16 15:32 | 只看该作者
呵呵,看了老X推荐的**,明白了MCU的TTL电平输出的DO线为何能通过DB9的CTS传入计算机的Modem控制器,但这个应用的前提是电平回执电压与TTL兼容.
哈哈,这个电路如果用廉价的PL2303来构造,可靠性和实用性更高.

使用特权

评论回复
37
宇容创行| | 2009-9-16 15:37 | 只看该作者
建议36楼实际测试后,再给结论

现在电脑,最多带一个串口,根本不够用。
如果使用usb转串口,只能用api方式,不能直接访问io,usb通讯的固有缺陷,每一字节都要占用一帧
这个电路没有使用价值

使用特权

评论回复
38
古道热肠| | 2009-9-16 15:47 | 只看该作者
回楼上,USB是一帧多个字节打包传输的.在Windows平台上虚拟出来的串口操作性能与原生的串口性能基本上等同.

使用特权

评论回复
39
宇容创行| | 2009-9-16 16:05 | 只看该作者
网友给的数据,用si-prog配合usb转串口线,写mega8要一个小时,ls能接受就用吧

使用特权

评论回复
40
古道热肠| | 2009-9-16 16:28 | 只看该作者
不能接收可以自己写个软件,操作串口的软件写起来并不难.
翻了一下存货,电脑中有这个软件,特上传上来,大家也帮着测试 PonyProg_V207c.zip (545.43 KB)

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则