曾今用过看过nxp的自动isp电路(配合flashMagic),如今看到菜农大叔的自动isp的教学;深有体会,所以整理一下自己的学习;
如今单片机的isp功能是个非常重要的指标;
一般的单片机内部有一个isp的rom,来存储isp程序;有的单片机出厂就把isp固化在了该ROM中,而且是无法更改的;如大家熟悉的stc的51单片机,该单片机的isp的相关协议也不是开放的,所以stc51单片机一般都只有老姚的下载工具软件能用;而nuvoton的isp出厂就没有烧好,需要客户自己烧(ICP软件),而且isp可以自己更具需要修改,其协议也是开放的,所以除了nuvoton原厂的isp软件外,其它爱好者也能根据其协议写出上位机软件,如菜农的hostisp;
MCU的isp的载体方式是灵活多样的:如可以通过uart, can,usb等;
一般常用的是UART;
Uart并不是专门用来给我们用来isp升级的;
所以有必要区分什么时候要ISP,什么时候要工作的uart通讯;
一般都会有个ispEN的IO引脚来区分;
当需要用来isp时,把相应的ispEN使能即可;
但因为平常ISP几乎不用,它只在升级时用,假若在运行期间,假若ISPEN被干扰,可能使程序误入ISP状态;所以又用了reset信号来区分;我们的ISP一般都是想在开机运行时启动工作的,在运行期间不管ISPEN信号发生什么变化,都照常运行程序;不会进入ISP;
所以来区分什么时候进入ISP,什么时候进入正常的程序运行;
就必须涉及到这两个信号:
1. ISPEN
2. reset
记得nuvoton原厂的M0516开发板,必须把p3.2拉低才能进入isp;这样就不叫自动isp,显得有点麻烦;
记得曾经nxp有利用uart的DTR,RTS来巧妙的完成改步骤;
以上就是nxp的一个自动isp的电路,其配合FlashMagic软件,很好的完成了自动isp的功能;
下面是菜农的nuc120助学板中的自动isp的电路图:
DTR控制复位,RTS控制ispEN ;
PC端的软件能够控制uart的DTR和RTS脚;
DTR=1,意味着其rs232电平为-10V左右(rs232为负逻辑电平),经过相关的三极管电路后,取反到达reset的电平信号为“1”,即不复位;
同理,RTS=1,m0的PB.15=1即正常运行串口通讯;
所以在需要ISP的时候,相关的上位机可以控制DTR,RTS使其自动进入isp所需的状态;
而不需要手动的去进行相关的连接;
再来看看DB9的第一脚DCD信号的应用:
它是用来检测目标板是否在线的(开机或者工作正常);
它实际是 DB9_3 即 PC 的 TX 输入 , 经过3232 到达 RXD0 , 即 PC 发送数据 , M0 接收数据 , 直接没经过 M0 而进入 T2IN , 经过 3232 的非门即反向到达 DB_1 即 DCD 。
假若 3232 坏或目标板未开机 , 那么非门就不会作用 , DCD 就不会得到至少一次
的变化 , 一位串口的一帧由起始位 0 数据 0xff( 假使 ) 和停止位 1 组成的 , 那么
至少有一个脉冲的发生;
利用这个原理巧妙的来判断了目标板是否在线;
文章评论(0条评论)
登录后参与讨论