1、简单易用,可快速上手
2、流畅支持300个器件或1000个焊盘以下的设计规模
3、支持简单的电路仿真
4、面向学生、老师、创客
1、全新的交互和界面
2、流畅支持超过3w器件或10w焊盘的设计规模,支持面板和外壳设计
3、更严谨的设计约束,更规范的流程
4、面向企业、更专业的用户
标准版 #第三届立创大赛#STM32/STM8离线下载器
简介:STM32/STM8离线下载器
开源协议: 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
/** * @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; } |
加载中...
是否需要添加此工程到专辑?