SWD脱机烧写器,编程过程中遇到问题?求教!

2019-07-20 00:57发布

本帖最后由 challenger 于 2018-3-8 16:52 编辑

因公司要设计一个SWD脱机烧写器,后期能满足STM32,芯唐,航晶等各种型号单片机程序的脱机烧写。因没做过SWD协议,在网上查资料。及参考部份少量例程。底层类似用spi口的MOSI,MISO引脚模拟SWD信号。SWD协议有讲,连接SWD口,主机向目标板要先发8个写数据包请求,然后目标板给3个应答信号回复,最后,主机写33位数据给目标板。我是用STM32F407单片机做的。以下程序:
uint32_t SW_CONNECT( void )
{
        uint8_t i;
        uint32_t c;
        
        //__DS_IRQ();
///////////////////////////////////////////////////////////////

        SIO_SWDAT(OU);
        SET_SWDAT();
        CLR_SWCLK();
        for(i=0;i<56;i++)                                                                                                //ê&#228;3&#246;3&#172;1y50&#184;&#246;TCK&#214;ü&#198;úμ&#196;TMS(SWDIO)£&#189; 1D&#197;o&#197;
        {
                SET_SWCLK();
                CLR_SWCLK();
        }
        for(i=0;i<16;i++)                                                                                                //ê&#228;3&#246;16&#184;&#246;TMS(SWDIO)D&#197;o&#197; 0111100111100111 (MSB)
        {
                if(BITTST(TMS_DATA,i)) SET_SWDAT();
                else                   CLR_SWDAT();
                SET_SWCLK();
                CLR_SWCLK();
        }
        for(i=0;i<56;i++)                                                                                                //ê&#228;3&#246;3&#172;1y50&#184;&#246;TCK&#214;ü&#198;úμ&#196;TMS(SWDIO)£&#189; 1D&#197;o&#197;
        {
                SET_SWCLK();
                CLR_SWCLK();
        }
//&#214;áéù2&#184;&#246;&#214;ü&#198;úμ&#196;μíμ&#231;&#198;&#189;£&#172;×′ì&#172;&#187;ú&#189;&#171;&#199;D&#187;&#187;μ&#189;IDLE×′ì&#172;
        CLR_SWDAT();
        for(i=0;i<3;i++)
        {
                SET_SWCLK();
                CLR_SWCLK();
        }
///////////////////////////////////////////////////////////////
        c=Read_APDP(REG_IDCODE);                                                        //&#182;áID
        
        //__EN_IRQ();
        
        return c;
}


但在示波器上监测的波形如下:
webwxgetmsgimg (1).jpg

webwxgetmsgimg (2).jpg

以上监测SW波形,和手册上的波形不一样,怎么回事?哪位大神做过,指导一下。
Cortex-M3 Swd中文协议文档P165页.pdf (1.65 MB, 下载次数: 319) 2018-3-8 16:33 上传 点击文件名下载附件
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。