利用USB UART桥接器实现单片机在线编程

2024-01-07 00:18

本文主要是介绍利用USB UART桥接器实现单片机在线编程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

利用USB UART桥接器实现单片机在线编程
〖文章转载或出处〗≡中国电子技术信息网≡ 网址:www.EC66.com
利用USB UART桥接器实现单片机在线编程

 作者:西南交通大学 邬芝权 靳桅 肖波

引 言

  通用串行总线(USB)是一种支持即插即用的新型串行接口,使外设到计算机的连接更加高效便利。这种接口适合于多种设备,不仅具有快速、即插即用、支持热插拔的特点,还能同时连接多达127个设备,解决了如资源冲突、中断请求和直接数据通道等问题。因此,越来越多的开发者欲在自己的产品中使用这种标准接口。RS232是单个设备接入计算机时常采用的一种接入方式,其硬件和软件协议比较简单,有很多传统设备采用了这种通信方式。将USB转UART技术应用于单片机与PC机之间的数据通信,在计算机上产生一个虚拟的COM口,用户只需按照通用串行口一样使用USB口即可。这样不仅能使单片机具备USB通信的诸多优点,简化了USB编程,同时还可以利用USB对单片机提供5V的电源(500mA以下)。笔者根据芯片CP2101的USB转UART技术特点设计了实验电路板,达到了既提供实验电路板电源,又实现计算机与实验电路板通信的目的,并结合单片机IAP技术,可完成单片机的在线编程。


1 CP2101芯片的功能及工作电路图

  芯片CP2101是一种高度集成的USB转UART桥接器,它包含有USB2.0全速功能控制器、USB收发器振荡器和异步串行接口(UART)。该芯片的全部功能集成在一个5mm×5mm的MLP28封装的IC中。CP2101内置有与计算机通信的USB协议,工作时,会在计算机上产生一个虚拟COM口,用户就可以按照通用串行口的控制方式来使用这个COM口。

  CP2101内集成有多个模块,各自完成不同的功能,如图1所示。

① USB功能控制器是一个符合USB 2.0的全速器件,集成了收发器和片内相应的上拉电阻,USB功能控制器管理 USB和 UART间所有的数据传输和由 USB主控制器发出的命令请求以及用于控制 UART功能的命令,USB接口的信号描述如表1所列。
    
               图1CP2101的功能框图

              
② 异步串行接口(UART)包括TX (发送) 、RX (接收) 、数据信号以及RTS、 CTS、 DSR、 DTR、 DCD和 RI控制信号。UART支持 RTS/CTS、 DSR/DTR和 XOn/XOff握手协议,可以通过编程使UART支持各种数据格式和波特率,波特率的范围从300~921600不等。从CP2101转换出来的UART信号不是标准的RS232电平,而是TTL电平,其信号描述如表2所列。

③ 内部 EEPROM可以用于存储由设备原始制造商定义的USB供应商ID、产品ID、产品说明、电源参数器件、版本号和器件序列号等信息。

④ 电压调节器是一个可以由USB总线驱动的器件电源,可在VDD引脚输出3.0~3.6 V电压,1~100 mA电流。

2 基于USB转UART技术的IAP编程电路设计

2.1CP2101的外围接口电路

  CP2101是USB转串行口桥接器,它需要设计外接USB接口电路和RS232接口电路。USB接口电路实现CP2101与计算机之间的通信;RS232接口电路实现CP2101和外设之间的通信。接口电路如图2所示。其中RS232电平转换电路可根据需要选用MAX3243或MAX232。
     
              图2CP2101的外围接口电路

  对用户来说,CP2101就是一个USB转RS232的芯片,只不过RS232的输入和输出信号均为TTL电平,而不是标准的RS232电平。它的使用与普通的USB外设相同,当第一次带电插入PC机USB接口时,系统会提示安装相应的驱动程序,驱动程序可从网站www.xhl.com.cn上下载。驱动程序安装完后,系统会自动增加一个COM口,用户就可以按照传统的串行口控制方式来使用这个带有5 V和3.3 V供电的“COM口”。

2.2根据CP2101设计IAP工作电路

  根据IAP编程的工作原理,如果单片机在2 s内没有接收到任何IAP命令,在看门狗定时器的作用下将自动进入用户程序。用户还可以通过编程控制串行口上的RTS引脚产生复位信号来控制单片机。也可以在复位后(2 s内)直接以约定的波特率传送HEX代码文件,自动完成程序的擦除和写入,大大简化了IAP编程过程。

  根据IAP编程的原理,作者先后设计了两种接口电路。一种是传统电路IAP工作电路,没有使用CP2101芯片,如图3所示。另一种是利用CP2101设计的IAP工作电路,如图4所示。
     
              图3传统电路 IAP工作电路
    
              图4利用CP2101的IAP工作电路

  在传统电路IAP工作电路中,利用USB接口提供TTL电源,串行口提供IAP编程、数据传输及复位控制信号。图3中,R1、R2、C1和K1构成传统的上电自动和手动复位电路,R7、D1构成一个由串行口RTS端控制的复位电路;串行口信号需要由RS232电平转换为TTL电平,需要设计电平转换电路或采用专用的电平转换芯片。该电路工作时需要有两个接口,USB接口和COM接口,USB接口的功能是提供TTL电平的电源,串行接口的功能是串行口通信、IAP编程及复位信号控制。

  在利用CP2101设计的IAP工作电路中,USB接口除了提供TTL电源外、还有串行口通信、IAP编程及复位信号控制。图4中,R5、R6、C2和K2构成传统的上电自动和手动复位电路,R3、R4、D2和T1构成一个由串行口RTS端控制的复位电路,由于CP2101转换后的信号是TTL电平,可以直接为单片机使用,节省了RS232电平转换为TTL电平的辅助电路。

  利用CP2101设计的IAP工作电路有很大的优越性,它只需使用USB接口就可以完成提供TTL电源、串行口通信、IAP编程及复位信号控制,减少了计算机与外设之间的接口,同时也为在没有COM口的计算机上进行IAP编程提供了可能,增强了外设的灵活性。在电路板设计中,采用CP2101芯片,既可以节省RS232电平转换为TTL电平的电路,又使用5 mm×5 mm的MLP28封装,减少了电路板面积,节省了成本。

  在进行IAP编程的模式下,使用CP2101芯片在计算机上用USB接口虚拟出串行口,这样既可以克服由于USB接口协议的复杂性给用户带来的不便,又可以简化计算机与单片机之间的接口,同时可以给用户设备提供一个5V电源,减少了由于外接电源带来的不便。笔者使用C51对单片机IAP模块进行了二次开发,进一步简化了IAP下载的过程,开发后的IAP程序先写入单片机,用户就可以在应用板上直接下载用户程序,不需任何编程器就可以完成单片机系统的开发及单片机实验教学。同时使用USB转UART和IAP技术为51系列单片机的开发与学习提供一种新的便捷而廉价的方法。对初次学习单片机的人们和大中专院校的学生学习单片机带来极大的方便。

结语

  利用USB转UART技术,简化了外设接口,也为外设提供了5V电源。该技术被广泛应用于手机、数码相机、PDA以及MP3等功耗比较低的设备,既可以省去外接电源,又可以做数据传输和信号控制,同时还可以对外设进行系统升级,具有可观的经济效益和市场前景。

这篇关于利用USB UART桥接器实现单片机在线编程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/578108

相关文章

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

hdu1043(八数码问题,广搜 + hash(实现状态压缩) )

利用康拓展开将一个排列映射成一个自然数,然后就变成了普通的广搜题。 #include<iostream>#include<algorithm>#include<string>#include<stack>#include<queue>#include<map>#include<stdio.h>#include<stdlib.h>#include<ctype.h>#inclu

电力系统中的A类在线监测装置—APView400

随着电力系统的日益复杂和人们对电能质量要求的提高,电能质量在线监测装置在电力系统中得到广泛应用。目前,市场上的在线监测装置主要分为A类和B类两种类型,A类和B类在线监测装置主要区别在于应用场景、技术参数、通讯协议和扩展性。选择时应根据实际需求和应用场景综合考虑,并定期维护和校准。电能质量在线监测装置是用于实时监测电力系统中的电能质量参数的设备。 APView400电能质量A类在线监测装置以其多核

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

让树莓派智能语音助手实现定时提醒功能

最初的时候是想直接在rasa 的chatbot上实现,因为rasa本身是带有remindschedule模块的。不过经过一番折腾后,忽然发现,chatbot上实现的定时,语音助手不一定会有响应。因为,我目前语音助手的代码设置了长时间无应答会结束对话,这样一来,chatbot定时提醒的触发就不会被语音助手获悉。那怎么让语音助手也具有定时提醒功能呢? 我最后选择的方法是用threading.Time

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo

C#实战|大乐透选号器[6]:实现实时显示已选择的红蓝球数量

哈喽,你好啊,我是雷工。 关于大乐透选号器在前面已经记录了5篇笔记,这是第6篇; 接下来实现实时显示当前选中红球数量,蓝球数量; 以下为练习笔记。 01 效果演示 当选择和取消选择红球或蓝球时,在对应的位置显示实时已选择的红球、蓝球的数量; 02 标签名称 分别设置Label标签名称为:lblRedCount、lblBlueCount