#第三届立创大赛#STM32/STM8离线下载器 - 嘉立创EDA开源硬件平台

编辑器版本 ×
标准版 Standard

1、简单易用,可快速上手

2、流畅支持300个器件或1000个焊盘以下的设计规模

3、支持简单的电路仿真

4、面向学生、老师、创客

专业版 professional

1、全新的交互和界面

2、流畅支持超过3w器件或10w焊盘的设计规模,支持面板和外壳设计

3、更严谨的设计约束,更规范的流程

4、面向企业、更专业的用户

标准版 #第三届立创大赛#STM32/STM8离线下载器

简介:STM32/STM8离线下载器

开源协议: BSD

(未经作者授权,禁止转载)

创建时间: 2019-05-29 11:06:32
更新时间: 2024-03-24 12:34:37
描述

1. 参赛者姓名:程人杰、王徽

2. 参赛作品的名字:STM32/STM8离线下载器

3. 简要陈述您的idea和作品:

    当前嵌入式开发中,STM32与STM8是大多数工程师使用的主控芯片,传统的方法是通过电脑和仿真器进行程序的下载,生产上也就必须要配置有电脑,但是对于一些量产型生产,通过电脑显然合适,增加工作量, 同而且需要一定的专业知识,时把生产文件交给生产人员,非常有可能产生泄密,产生巨大的损失。而离线下载器具有体积小,价格便宜,而且可以在程序中设置生产次数,配置加密,可以有效的保护好生产资料,同时离线下载器操作方便,只要工程师在电脑上配置好后,就可以放心的交给生产人员。

4. 拟用到的立创商城在售物料:STM32,STM8,W25Q64,缓冲器,电源,电阻电容。

5. 拟用到的非立创商城物料或其它补充:TFT,外壳

6. 拟用到的EDA工具软件名称:Keil,VS2017,立创EDA设计工具

7. 原文链接:http://club.szlcsc.com/article/details_12812_1.html

8. 原工程链接:https://oshwhub.com/lengyu1226/wang1111

 

一、作品简介

1.作品的整机外观图片或焊接组装好的PCBA图片;

二、系统构架图

三、硬件部分的描述

1.原理图:
2. 实现原理、系统的工作过程:
    本离线下载器,主要是基于SWD(Serial Wire Debug)串行调试接口,用于连接ARM内核的芯片,同时基于SWIM( single wire interface module )单线调试模块。
    一):SWD接口,当前基于Cortex-M内核的STM32系列应用非常广泛,其中有集成了SWD调试接口,利用该调试接口可以访问芯片内部的总线上寄存器和芯片内核,当然也可以利用此方法方法进行更新Flash程序。其中SWD主要应用框架如下:通过SWD接口用于访问其中的DP端口,再通过DP端口访问其AP端口,通过AP端口再进行系统总线的访问,从而达到程序下载的目的。

图1 - SWD接口

图2:STM32调试单元
 
    SWD具体操作请求:SWD命令的开始是由8位启动,含义如图3,起始位+AP/DP选择位+读/写位 + 两位地址位 + 奇偶检验位 + 停止位 + 固定为1的校验位
图3:SWD起始命令
 
图4:读写序列
图5,读写序列
    二):SWIM接口,SWIM是专用于STM8系列的调试接口,仅仅用到一根线就可以完成调试与仿真,这也是由于STM8定位主要是小的单片机,和高性价比。其SWIM接口主要框图如下:


图6:SWIM调试接口框图
    由于SWIM为单线模式,所以其对时间要求非常高,其时序图如下:为此在代码中特意使用了定时器才能满足这样的操作。

图7:SWIM时序图
 
3.注明所用到的EDA工具软件名称并附上设计链接。
    本次EDA工具使用的是:立创EDA,开源的链接如下: https://oshwhub.com/lengyu1226/wang1111

四、材料清单(BOM列表)

五、软件部分的描述

上位机软件截图:
    一):由于代码量巨大,贴出部分核心代码,下面为SWD控制的核心代码

/**

* @B 可以理解为TurnAround

*

*/

void SWDIO_CYCLE( void )

{

    if( slowModeEnable == ENABLE)

    {

        SWD_Delay();

        SWD_SWDIO_PIN_OUT = 0;

        SWD_Delay();

        SWD_SWDIO_PIN_OUT = 1;

        SWD_Delay();

    }

    else

    {

        SWD_SWDIO_PIN_OUT = 0;

        SWD_SWDIO_PIN_OUT = 1;

    }

}

/**

* @B 从AP或者DP寄存器里读出数据

* reg:显然只有4个(暂定的取值范围0-3)。 data为什么用指针,因为这样才能改变传递值,也就是指针指向的值

* 结尾后:SWCLK保持为1

*/

u32 readReg( u8 APnDPReg,u8 reg, u32 *data )

{

    u8 i = 0;

    u8 cb = 0; //

    u8 parity; // 校验值

    u8 b = 0; // 用于读ACK的位

    u8 ack = 0; // ACK的值

    u8 ret = SWD_ERROR_OK;

 

    *data = 0;

   

    int _APnDPReg = (int) APnDPReg;

    int _read = (int) 1; // 读请求值为1

 

    u8 A2 = reg & 0x01;

    u8 A3 = ( reg>>1 ) & 0x01;

   

    parity = ( _APnDPReg + _read + A2 + A3 ) & 0x01;

 

    SWD_SWDIO_MODE_OUT; // 设置为输出模式

// SWD_SWDIO_DIR_CTR2 = BUFFER_IC_DIR_OUT; // 缓冲器设置为输出模式

 

    { // 启动发送序列

        // 发送序列的问题:发送后,可以看出,其中SWCLK保持为1:

        WRITE_BIT( 1 );

        WRITE_BIT( _APnDPReg );

        WRITE_BIT( _read );

        WRITE_BIT( A2 );

        WRITE_BIT( A3 );

        WRITE_BIT( parity );

        WRITE_BIT( 0 );

        WRITE_BIT( 1 ); // SWDIO = 1, SWCLK = 0, SWCLK = 1

    }

    { // TurnAround

        {

            SWD_SWDIO_MODE_IN; // 设置为输入模式 //

            SWD_SWDIO_DIR_CTR2 = BUFFER_IC_DIR_IN; // 缓冲器设置为输入模式

        }

        SWCLK_CYCLE();

    }

    { // 读ACK

        for( i=0;i> 8) & 0xFF, 8, 0))

        {

            return 3;

        }

        if (SWIM_HW_Out((addr_tmp >> 0) & 0xFF, 8, 0))

        {

            return 2;

        }

        for (i = 0; i < cur_len; i++)

        {

            if (SWIM_HW_In(&data[processed_len + i], 8))

            {

                return 1;

            }

        }

        cur_addr += cur_len;

        processed_len += cur_len;

    }

    return 0;

}

 

六、作品演示

一共录制了两个视频,第一个视频详细演示了离线下载器操作过程与说明时间较长,第二个相对简单的演示了整个操作流程。

七、总结

  1. 在进行开发的过程中使用了立创EDA一共设计了三款PCB,第一个因为外形不够,第二个测试过程中发现几处不合理,经过三次的更改最终成型。
  2. 需要支持更多的芯片类型,当前下载器可以支持STM32与STM8系列,但是为了日后能够推广,需要支持更多的芯片,这样一个下载器在手上,可以进行多种类型的芯片的下载,而不用多套设备
  3. SWD/SWIM调试阶段比较难懂,尤其是对于协议部分,但是如何仔细阅读,深刻理解其中的含义,最后发现也比较简单,所以遇到开发的难题时候,要迎难而上。

八:相关资料下载:

1:串口通信协议.zip (下载次数:325)  
3:CD00226555.zip (下载次数:271)  
4:en.CD00173911.pdf.zip (下载次数:255)  
5:en.CD00191343.pdf.zip (下载次数:251)
 

更多项目详情见链接:http://club.szlcsc.com/article/details_12812_1.html

本项目归立创社区“SuperCRJ”所有

 
设计图
未生成预览图,请在编辑器重新保存一次
工程视频/附件
暂无
侵权投诉
相关工程
换一批
加载中...
添加到专辑 ×

加载中...

温馨提示 ×

是否需要添加此工程到专辑?

温馨提示
动态内容涉嫌违规
内容:
  • 153 6159 2675

服务时间

周一至周五 9:00~18:00
  • 技术支持

support
  • 开源平台公众号

MP