stc8g1k08程序范例_通过WiFi对STC单片机程序下载和调试

简介

本文设计了基于WiFi-UART的STC单片机下载调试模块,这样便于对嵌入式系统进行远程调试开发,特别是在一些具有移动功能的平台,强电平台以及需要实时监视和修改程序的应用场合。

本文相关的下载资源:

  1. WiFi模块下载STC程序设计文件[1]
  2. 扩展32kRAM的信号采集版.zip-网络攻防文档类资源-CSDN下载[2]

文章目录

  • 简介
  • 电路设计
  • 固件开发
  • 上位机软件
  • 下载资源

电路设计

AD设计工程文件:

D:zhuoqingAltiumDesignerSTCToolsDownloadWiFIDownload8G1K.PcbDoc *

1. 原理图

电路中的CPU部分包括有MCU、外部RAM、程序下载接口以及LED工作指示灯。

由于电路功能相对比较简单,所以使用了STC8G1K08, SOP16封装的单片机。由于内部只有1KByteRAM,扩充了一块外部RAM。

STC8G1K08具有两个UART,可以分别用于接收上位机和下位机进行通信。

其中外部RAM选用24LC1024,128KByteRAM,用于缓存下载程序数据。这是为了克服通过WiFi链路中的通讯速度不稳定,会造成对单片机编程速度跳动。所以在下载程序之前,上位机先通过WiFi将程序发送到下位机,并存储在23LC1024中。后面在启动从单片机直接对下载STC单片机的下载过程。

在博文**单片机片外RAM,串行的**[3]介绍了这种SPI接口RAM的实验结果。

543ed6b0e0a4126bf5082999ff72b134.png

▲ CPU以及外部RAM电路

下图是电路中的WiFi接口部分。这里选用的是**友人科技**[4]的WiFi转串口通信模块 “USR-WiFi232-T”。该模块的供电电压为3.3V,在后面电源部分使用了一个5V-3.3V的稳压芯片。

6ef800f56e8df17b66a285c26ce2b255.png

▲ WiFi接口电路

控制被下载电路的电源是STC单片机下载的特点。之前在**STC单片机自动下载调试器设计**[5]中使用了微型机械继电器来控制电源,比较可靠,可以提供大的控制电流范围。读出增加可电路的体积。

在下面电源控制电路中使用的N沟道的MOS管来控制被调试电路的电源。驱动MOS管的高压使用了博文**如何利用单片机IO口产生两倍的电源电压**[6]中介绍的利用单片机IO口进行倍压整流的方案。

b12e810c529022d8663ac61f7c52bc74.png

▲ 电源控制部分

电源中AS1117提供了5V转3.3V,供WiFi-UART模块使用。此外还有一个按年BT用于手工控制ISP电源开关。在对调试电路进行接口连接的时候,不必将整个电路板掉电,可以节省WiFi模块重启的时间。

a7068943d181183b039dd95ffedf1028.png

▲ 电源模块电路

2. PCB

实验电路板采用单面PCB设计方式,可以使用**一分钟制版法**[7]完成实验PCB的制作。

a1bdb574129f9afd74002f93a746d325.png

▲ 测试PCB电路板

在**一分钟制版之后**[8],焊接组装实验电路。

使用Keil C51编程,开发相应的下载程序。

e6b5fb670fd54340da11c8bc48938cfc.gif

▲ 焊锡装配完之后的实验电路板

下载模块工作时,需要提供5V的工作电源。它通过四芯的ISP接口为下载程序的单片机核心电路提供工作电源。

固件开发

STC8G1K的固件开发目录:

D:zhuoqingwindowC51STCToolsSTCDLWiFiDL8G1KWiFiDL8G1k.uvproj

1. STC单片机程序下载协议

对于STC单片进行ISP的相关协议并没有得到公开的文档,在博文**使用单片机对STC8G,8H,8A进行ISP下载程序**[9]介绍了在单片机数据手册中的一些实现情况。

基于范例程序,编写STC单片机的ISP下载程序。

8745f52133c1d9a63b01ff35963d6472.png

▲ STC8G1K08技术手册附录

2. 固件的功能

功能1:完成STC单片机的ISP下载 这部分的实现可以参见博文:使用单片机对STC8G,8H,8A进行ISP下载程序[10]中的实现。

功能2:接收上尉即发送的下载程序数据: 在对STC单片机进行ISP之前,将程序通过WiFI接收到片外ISP接口的RAM中进行缓存,然后再完成对ISP单片的程序下载。

功能3:建立被调试单片机与上位机通信 在程序下载完之后,建立起被调试单片机与上位机之间的通信联系,也就是将UART1,UART2两个串口之间完成数据的转发。这样就可以在上位机中实现对下位机的调试功能。

a7ca20938a3a6658e0cfcc660b067c8d.gif

▲ 调试中的电路

功能4:接收按钮,实现手动控制下位机电源 在电路板上有一个按钮,可以用于手工来控制下位机的电源。软件通过读取按钮所在的端口的电平,来控制MOS的驱动电压。

上位机软件

上位机软件是在原来的STM32单片机下载程序的基础上,经过扩充功能只能实现对STC单片机下载的。这主要利用了原来程序对HEX文件的读取,人机界面,串口以及UDP等编程的基础功能

在原来程序的基础上,增加了相应的两个程序:STCDownload()、STCDownloadWiFi(),分别实现通过PC的串口以及UDP与下载板的通讯。使用WiFi功能下载的时候,就是通过UDP编程来将程序下载到调试单片机中。

使用该软件时,需要在程序右上方选择STC8H, STC8G ,STC8A单片机。这三类单片机,STC8H,8G下载协议是相同的。STC8A与前两者之间有些区别。

16fe8b34167e36e3649685b32f55f6ed.gif

▲ 上位机下载程序操作过程

然后在UDPDL页中,设置IP地址与端口,它应该与USR-WiFi模块的网络UDP服务对应的接口一致。

在UDP File中指明被下载的单片机 HEX文件。按动UDP Dwn 便可以进行WiFI远程程序下载了。

下载资源

本文所涉及到的电路设计、单片机程序以及上位机软件都可以在CSDN中下载“WiFi-STC-DOWNLOADER.zip”中获得。

参考资料

[1] WiFi模块下载STC程序设计文件: https://download.csdn.net/download/zhuoqingjoking97298/12385119

[2] 扩展32kRAM的信号采集版.zip-网络攻防文档类资源-CSDN下载: https://download.csdn.net/download/zhuoqingjoking97298/12372023

[3] 单片机片外RAM,串行的: https://zhuoqing.blog.csdn.net/article/details/105891541

[4] 友人科技: http://www.usr.cn/

[5] STC单片机自动下载调试器设计: https://zhuoqing.blog.csdn.net/article/details/105543574

[6] 如何利用单片机IO口产生两倍的电源电压: https://zhuoqing.blog.csdn.net/article/details/105888159

[7] 一分钟制版法: https://zhuoqing.blog.csdn.net/article/details/104120559

[8] 一分钟制版之后: https://zhuoqing.blog.csdn.net/article/details/104133981

[9] 使用单片机对STC8G,8H,8A进行ISP下载程序: https://zhuoqing.blog.csdn.net/article/details/105907433

[10]使用单片机对STC8G,8H,8A进行ISP下载程序: https://zhuoqing.blog.csdn.net/article/details/105907433

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/431101.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

echo off备份mysql_windows下备份Linux服务器上的MySQL

【更新】因为windows存在 10点前后生成的时间格式不同,导致无法正确生成sql文件。导致上次的备份文件无法生成研究后对旧内容进行修改echo offforfiles /p "D:\ERP_MySQLbak" /m mysql_backup_*.sql -d -2 /c "cmd /c del /f path"set/a a%time…

python 3d重建_3D点云重建原理及Pytorch实现

3D点云重建原理及Pytorch实现 Pytorch: Learning Efficient Point Cloud Generation for Dense 3D Object Reconstruction 一种Pytorch实现方法:学习高效的点云生成方法用于稠密三维物体重建 一.论文概要 传统的三维对象生成建模方法是利用三维卷积运算的…

Java进阶04 RTTI

链接地址:http://www.cnblogs.com/vamei/archive/2013/04/14/3013985.html 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢! 运行时类型识别(RTTI, Run-Time Type Identification)是J…

springdatajpa命名规则_Spring Boot 之Spring data JPA简介

PA的全称是Java Persistence API (JPA),他是一个存储API的标准,而Spring data JPA就是对JPA的一种实现,可以让我们方便的对数据进行存取。按照约定好的方法命名规则写dao层接口,从而在不实现接口的情况下,实现对数据库…

PHPCMS 模板的设置

编制好模板后&#xff0c; 一、设置config.php<?php return array (name > 现代的蓝红色模板,author > dazhaihui,dirname > simpleblue,homepage > http://www.phpcms.cn/,version > 1.0,disable > 0,file_explan >array (templates|simpleblue|cont…

奖学金设计mysql_基于JAVA的奖学金评定系统设计与实现(MySQL)(含录像)

基于JAVA的奖学金评定系统设计与实现(MySQL)(含录像)(任务书,开题报告,外文翻译,毕业论文10000字,程序代码,MySQL数据库,答辩PPT,答辩视频录像)摘 要本文论述了奖学金评定系统从分析到实现的整个过程&#xff0c;说明了系统实现的基本思路&#xff0c;介绍系统不同的功能模块以…

python ckeditor上传图片400错误_又一款python开发神器

优秀的python开发工具有很多&#xff0c;比如pycharm&#xff0c;spder&#xff0c;ipython&#xff0c;jupyter以及很多编辑器的插件等。但是如果利用python来做数据分析的话&#xff0c;要是有一款类似Rstudio的工具就好了&#xff0c;Rstudio是非常人性化的工具。之前有一个…

rabbitmq 延迟队列_Delayed Message 插件实现 RabbitMQ 延迟队列

延迟队列是为了存放那些延迟执行的消息&#xff0c;待消息过期之后消费端从队列里拿出来执行。DLX TTL 方式存在的时序问题对于延迟队列不管是 AMQP 协议或者 RabbitMQ 本身是不支持的&#xff0c;之前有介绍过如何使用 RabbitMQ 死信队列(DLX) TTL 的方式来模拟实现延迟队列…

JS - 按钮倒计时

效果&#xff1a; html代码&#xff1a; <input type"button" id"btn" value"点击获取效验码" />js代码&#xff1a; //倒计时var wait60;function time(o) {if (wait 0) {o.removeAttribute("disabled"); o.value&qu…

python安装报错类型_Python处理验证码第一篇(pytesser初探及报错处理)

前言&#xff1a;春节期间&#xff0c;无法全身心投入地去写爬虫&#xff0c;那就玩玩验证码吧&#xff0c;应该比较有趣&#xff01;首次接触验证码识别&#xff0c;用pytesser接触一下最简单的验证码先&#xff0c;代码参照&#xff1a;使用python以及工具包进行简单的验证码…

bin文件怎么转换成文本文档_怎么把pdf文件转换成word文档?这样转很简单

在日常的学习、工作生活中&#xff0c;小伙伴们总少不了要对文件格式进行转换操作&#xff0c;例如把pdf文件转换成word文档。对于职场老手来说&#xff0c;这当然不算一个难度操作&#xff0c;甚至还很简单。但对于职场新人而言&#xff0c;找不对方法&#xff0c;可能操作起来…

delphi if多个条件_Python从入门到精通——一文读懂if语句用法

1、if语句概述if语句能够进行条件测试&#xff0c;并依据一定的条件进行具体的操作2、if语句条件测试if语句的核心是一个值为True或False的表达式&#xff0c;这种表达式称为条件测试。Python根据条件测试的值为True或False来决定是否执行if语句中的代码。2.1 条件测试是否相等…

jquery交换数组元素位置_跟我一起学jQuery——第一集

《锋利的JQuery》第二版阅读笔记-第一章jQuery对象和DOM对象想学习jQuery&#xff0c;首先要学会区分jQuery对象和DOM对象。1)jQuery对象是用jQuery类库的选择器获得的对象。2)DOM对象是用传统(javascript)获得的对象。举个栗子//DOM对象var domO document.getElementById(&qu…

Gitlab的develop角色的人没有权限无法提交的问题解决方案

问题 事情是这样的&#xff0c;最近跟几位同事搞一些东西&#xff0c;打算在Gitlab上建一个仓库&#xff0c;然后协同开发。 我建好仓库&#xff0c;将其他几位同事添加进来&#xff0c;角色分配为Develop。 之后提交初始代码到master分支后&#xff0c;他们用sourceTree拉取代…

macbook不能进系统 备份数据_不基于备份和表,生产系统数据误删就能完全恢复?!...

作者介绍刘宝珍&#xff0c;架构师&#xff0c;目前就职于大型资产管理公司的科技子公司&#xff0c;拥有多年的大型私有云的规划和设计工作经验&#xff0c;熟悉软件的开发流程&#xff0c;目前醉心于研究基于DDD和敏捷的软件的开发模式&#xff0c;对分布式架构有深入的理解&…

arduino代码_arduino智能小车项目——01、配件介绍及代码部分教程

各位小伙伴大家好&#xff1a;本期我们开始制作智能小车项目&#xff0c;这因该是资源包里面难度相对较大的项目。所以我们从易到难把项目进行分解&#xff0c;先从实现较为简单的功能开始。本期我们的目标是实现小车的自主运动&#xff0c;代码部分也相对比较简单&#xff0c;…

python+mysql库+json_用python写爬虫-5.1json用pandas入mysql库

pandas是一个数据处理模块&#xff0c;前面也已经提到了好些&#xff0c;用python写爬虫--4.5pandas存入excel.这次来统一说一说&#xff0c;使用感想。pandas主要是Seriers和Dataframe&#xff0c;Seriers相当于list&#xff0c;dataframe相当于excel表格&#xff0c;有行也有…

pdf温度记录仪开发_蔬菜、鲜果、奶制品冷链温度监控系统监控食品让客户放心...

冷链温度监控系统对于蔬菜鲜果奶制品的冷藏&#xff0c;不仅有助于减慢它们的腐坏速度&#xff0c;保持新鲜&#xff0c;而且对全国物品的运输和合理配置有极大的影响。选择GPS冷链温度监控食品传输过程让客户不再担心质量问题&#xff0c;人们也吃的放心。在多年自主开发GPS物…

python中什么是数据驱动_Python数据驱动DDT的应用

原标题&#xff1a;Python数据驱动DDT的应用 在开始之前&#xff0c;我们先来明确一下什么是数据驱动&#xff0c;在百度百科中数据驱动的解释是&#xff1a;数据驱动测试&#xff0c;即黑盒测试&#xff08;Black-box Testing&#xff09;&#xff0c;又称为功能测试&#xff…

2008日志清理 server sql_SQL Server 2008 收缩日志 清空删除大日志文件

由于SQL2008对文件和日志管理进行了优化&#xff0c;所以以下语句在SQL2005中可以运行但在SQL2008中已经被取消&#xff1a;(SQL2005)BackupLog DNName with no_loggodumptransaction DNName with no_loggoUSE DNNameDBCC SHRINKFILE (2)Go-----------------------------------…