当前位置:   article > 正文

完全开源:带OLED超级Mini的SWD离线烧写器!

开源离线烧录

作者:Bronson,整理:晓宇

微信公众号:芯片之家(ID:chiphome-dy)

前几天,芯片之家18群的一位群友在微信群开源了一个自制的项目,一个带OLED屏,非常Mini的SWD离线烧写器,晓宇姐姐在这里给大家开源介绍出来,供大家参考学习,这里再次感谢詹工。

GitHub开源地址:

https://github.com/MBronsom/OfflineSWD/

本项目使用STM32F103RET6作为主控,基于ST官方CMSIS-DAP项目进行修改,实现STM32F103系列可脱机、可去读保护烧写(因项目暂时只有103系列脱机烧写需求,所以暂时只添加了103的烧写算法)。

外观:

部分代码展示:

  1. #include "main.h"
  2. /***********************文件系统使用定义************************/
  3. FIL fnew; /* file objects */
  4. FILINFO FileInfo;
  5. DIR DirInfo;
  6. FATFS fs; /* Work area (file system object) for logical drives */
  7. FRESULT Res;
  8. UINT br, bw; /* File R/W count */
  9. /***********************变量定义************************/
  10. char rData[1024] = "";
  11. u8 readflag = 1;
  12. u32 addr = 0;
  13. u32 i = 0;
  14. u32 select = 0;
  15. u8 breakDebug = 0;
  16. u8 debugMode = 0;
  17. uint16_t bytesread;
  18. u8 Logo[] = "BRONSON";
  19. /***********************主函数************************/
  20. int main(void)
  21. {
  22. Init_device(); //初始化设备
  23. Draw_Logo(); //绘制LOGO
  24. Draw_Menu(); //绘制菜单
  25. while(1);
  26. }
  27. /***********************初始化设备************************/
  28. void Init_device()
  29. {
  30. NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //优先级调整
  31. delay_init(); //初始化延时
  32. Key_Init(); //按键初始化
  33. W25QXX_Init(); //初始化Flash芯片
  34. f_mount(0,&fs); //初始化文件系统
  35. OLED_Init(); //初始化OLED
  36. OLED_Clear(); //清空OLED屏幕
  37. LED_Init();
  38. if(Scan_Key() == 1 ){ //按住SELTCT开机进入CMSIS-DAP模式
  39. Draw_Logo(); //绘制LOGO
  40. OLED_DrawBMP(0,0,34,34,USBLogo); //绘制图标
  41. OLED_ShowString(38,1,"DAP Connect",1,0); //绘制提示词
  42. Init_DAPUSB(); //初始化DAP
  43. Do_DAPUSB(); //DAP循环
  44. }
  45. else{
  46. Set_System(); //设置USB系统
  47. Set_USBClock(); //设置USB时钟
  48. USB_Interrupts_Config(); //设置USB中断
  49. USB_Init(); //初始化USB
  50. }
  51. }
  52. /***********************绘制LOGO************************/
  53. void Draw_Logo(){
  54. u8 i;
  55. for(i=0;i<7;i++){
  56. OLED_ShowChar(34+i*8,1,Logo[i],1);
  57. delay_ms(15);
  58. }
  59. delay_ms(1000);
  60. OLED_Clear();
  61. }
  62. /***********************绘制菜单************************/
  63. void Draw_Menu(){
  64. if(bDeviceState != UNCONNECTED){
  65. OLED_DrawBMP(0,0,34,34,USBLogo);
  66. OLED_ShowString(38,1,"USB Connect",1,0);
  67. }
  68. else{
  69. OLED_DrawBMP(0,0,33,33,FlashLogo);
  70. //自动烧写模式(将命名为AUTO.bin的文件放入根目录)
  71. if(f_open(&fnew, (const TCHAR*)"AUTO.bin",FA_READ ) == FR_OK){
  72. OLED_ShowString(45,-1,"AUTO FLASH",1,0);
  73. while(!FLASH_SWD("AUTO.bin")){
  74. u8 WaitTips[] = "...";
  75. OLED_ShowString(45,1," ",1,0);
  76. OLED_ShowString(45,2,"WAIT",1,1);
  77. for(i=0;i<3;i++){
  78. OLED_ShowChar(69+i*6,2,WaitTips[i],1);
  79. delay_ms(200);
  80. }
  81. OLED_ShowString(45,2," ",1,1);
  82. }
  83. OLED_ShowString(98,2,"BACK",1,1);
  84. select = 0;
  85. while(1)
  86. {
  87. if(Scan_Key() == 1){
  88. select ++;
  89. if(select == 1) {
  90. OLED_ShowString(98,2," ",1,1);
  91. OLED_ShowString(98,2,"BACK",0,1);
  92. }
  93. else{
  94. OLED_ShowString(98,2," ",1,1);
  95. OLED_ShowString(98,2,"BACK",1,1);
  96. }
  97. if(select == 2) select = 0;
  98. }
  99. if(Scan_Key() == 2){
  100. if(select == 1) break;
  101. }
  102. }
  103. OLED_Clear();
  104. OLED_DrawBMP(0,0,33,33,FlashLogo);
  105. }
  106. Draw_Main(); //进入主菜单
  107. }
  108. }

PCB:

项目功能:

1、使用8M FLASH,可使用虚拟U盘向FLASH放置HEX文件或BIN文件进行烧写(BIN较快)

2、可去除目标板的读保护,直接烧写(烧写后可能需要手动重启)

3、支持手动切换模式,使离线烧写器支持DAP仿真

4、安装驱动后可支持虚拟USB转TTL

5、可离线使用串口调试功能(仅支持英文及常用数字符号)

使用教程:

1、长按SELECT键开机可进入DAP仿真模式,屏幕上显示DAP-CONNECT
2、直接插入电脑USB端口可向离线烧写器放入相关烧写文件,并可使用虚拟串口功能
3、连接目标板开机,选择文件后选择FLASH后即可进行烧写
4、选择“>>”,进入DEBUG MODE后选择ENTER即可进行离线串口调试

DAP仿真

虚拟串口以及U盘模拟

离线文件烧写:

离线串口调试功能:

项目意见:

如果项目有问题或者有新功能需求,欢迎向作者提交意见!

下载:

大家可以Fork并Star作者的GitHub项目,或者公众号后台 回复 迷你SWD离线烧写器获取项目文件百度网盘链接!

创作不易

希望大家随手+「在看
这是对我最大的支持和鼓励
你们的支持就是我继续创作的动力

推荐阅读

   重磅开源:带屏幕LCD脱机下载器离线下载器!

 【开源方案】2.4G遥控器,接收器全套详细设计资料

 【全开源功放】美国NS公司的经典芯片,LM3886!

 【全开源功放】意法微电子的经典芯片,TDA7294!

请戳右下角,给我一点在看!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/天景科技苑/article/detail/905356
推荐阅读
相关标签
  

闽ICP备14008679号