
开源协议
:BSD
描述
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
一、作品简介





二、系统构架图


三、硬件部分的描述









四、材料清单(BOM列表)

五、软件部分的描述

![]() |
![]() |
|
/** * @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; } |
六、作品演示
七、总结
- 在进行开发的过程中使用了立创EDA一共设计了三款PCB,第一个因为外形不够,第二个测试过程中发现几处不合理,经过三次的更改最终成型。
- 需要支持更多的芯片类型,当前下载器可以支持STM32与STM8系列,但是为了日后能够推广,需要支持更多的芯片,这样一个下载器在手上,可以进行多种类型的芯片的下载,而不用多套设备
- SWD/SWIM调试阶段比较难懂,尤其是对于协议部分,但是如何仔细阅读,深刻理解其中的含义,最后发现也比较简单,所以遇到开发的难题时候,要迎难而上。
八:相关资料下载:
更多项目详情见链接:http://club.szlcsc.com/article/details_12812_1.html
本项目归立创社区“SuperCRJ”所有
设计图
未生成预览图,请在编辑器重新保存一次BOM
暂无BOM
克隆工程



评论