利用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

相关文章

Nginx 配置跨域的实现及常见问题解决

《Nginx配置跨域的实现及常见问题解决》本文主要介绍了Nginx配置跨域的实现及常见问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来... 目录1. 跨域1.1 同源策略1.2 跨域资源共享(CORS)2. Nginx 配置跨域的场景2.1

Python中提取文件名扩展名的多种方法实现

《Python中提取文件名扩展名的多种方法实现》在Python编程中,经常会遇到需要从文件名中提取扩展名的场景,Python提供了多种方法来实现这一功能,不同方法适用于不同的场景和需求,包括os.pa... 目录技术背景实现步骤方法一:使用os.path.splitext方法二:使用pathlib模块方法三

CSS实现元素撑满剩余空间的五种方法

《CSS实现元素撑满剩余空间的五种方法》在日常开发中,我们经常需要让某个元素占据容器的剩余空间,本文将介绍5种不同的方法来实现这个需求,并分析各种方法的优缺点,感兴趣的朋友一起看看吧... css实现元素撑满剩余空间的5种方法 在日常开发中,我们经常需要让某个元素占据容器的剩余空间。这是一个常见的布局需求

HTML5 getUserMedia API网页录音实现指南示例小结

《HTML5getUserMediaAPI网页录音实现指南示例小结》本教程将指导你如何利用这一API,结合WebAudioAPI,实现网页录音功能,从获取音频流到处理和保存录音,整个过程将逐步... 目录1. html5 getUserMedia API简介1.1 API概念与历史1.2 功能与优势1.3

Java实现删除文件中的指定内容

《Java实现删除文件中的指定内容》在日常开发中,经常需要对文本文件进行批量处理,其中,删除文件中指定内容是最常见的需求之一,下面我们就来看看如何使用java实现删除文件中的指定内容吧... 目录1. 项目背景详细介绍2. 项目需求详细介绍2.1 功能需求2.2 非功能需求3. 相关技术详细介绍3.1 Ja

使用Python和OpenCV库实现实时颜色识别系统

《使用Python和OpenCV库实现实时颜色识别系统》:本文主要介绍使用Python和OpenCV库实现的实时颜色识别系统,这个系统能够通过摄像头捕捉视频流,并在视频中指定区域内识别主要颜色(红... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间详解

PostgreSQL中MVCC 机制的实现

《PostgreSQL中MVCC机制的实现》本文主要介绍了PostgreSQL中MVCC机制的实现,通过多版本数据存储、快照隔离和事务ID管理实现高并发读写,具有一定的参考价值,感兴趣的可以了解一下... 目录一 MVCC 基本原理python1.1 MVCC 核心概念1.2 与传统锁机制对比二 Postg

SpringBoot整合Flowable实现工作流的详细流程

《SpringBoot整合Flowable实现工作流的详细流程》Flowable是一个使用Java编写的轻量级业务流程引擎,Flowable流程引擎可用于部署BPMN2.0流程定义,创建这些流程定义的... 目录1、流程引擎介绍2、创建项目3、画流程图4、开发接口4.1 Java 类梳理4.2 查看流程图4

C++中零拷贝的多种实现方式

《C++中零拷贝的多种实现方式》本文主要介绍了C++中零拷贝的实现示例,旨在在减少数据在内存中的不必要复制,从而提高程序性能、降低内存使用并减少CPU消耗,零拷贝技术通过多种方式实现,下面就来了解一下... 目录一、C++中零拷贝技术的核心概念二、std::string_view 简介三、std::stri

C++高效内存池实现减少动态分配开销的解决方案

《C++高效内存池实现减少动态分配开销的解决方案》C++动态内存分配存在系统调用开销、碎片化和锁竞争等性能问题,内存池通过预分配、分块管理和缓存复用解决这些问题,下面就来了解一下... 目录一、C++内存分配的性能挑战二、内存池技术的核心原理三、主流内存池实现:TCMalloc与Jemalloc1. TCM