当前位置:首页 > 单片机 > 单片机
[导读]引言 近几年,随着Flash Memory非易失存储技术的发展,基于USB接口的闪存即U盘现已得到广泛应用。从理论上讲,以U盘作为便携式采集存储系统的存储载体完全能够满足长时间采集海量数据的要求。但目前所面临的问题是,

引言
近几年,随着Flash Memory非易失存储技术的发展,基于USB接口的闪存即U盘现已得到广泛应用。从理论上讲,以U盘作为便携式采集存储系统的存储载体完全能够满足长时间采集海量数据的要求。但目前所面临的问题是,U盘主要应用于PC机系统中。以单片机等微处理器为核心的嵌入式系统的应用中,尚缺少与U盘的直接接口技术。因此将单片机技术与U盘存储技术两者结合起来,利用单片机直接读写U盘,并通过总线方式与嵌入式系统的其它部分实现命令和数据的通信,从而实现便携仪器或者嵌入式系统的外挂式海量存储,具有广阔的应用前景。而以Cypress公司的SL811HS为代表的嵌入式USB主机接口芯片为这种方案的实现提供了可能。
SL811HS介绍[1]
采用单片机直接控制读写U盘,牵涉到关键在于USB-HOST技术的实现,即单片机作为USB主机系统。USB系统包括两部分:USB主机和USB外设,它们组合在一起就构成了完整的USB系统。USB的拓扑结构中居于核心地位的是Host(也称为主机),任何一次USB的数据传输都必须由主机来发起和控制,所有的USB外设都只能和主机建立连接,任何两个外设之间或是两个主机之间无法直接通信。
SL811HS作为嵌入式的USB主机/设备控制器,功能模块框图如图1.1所示。
SL811HS实现了USB主机结构中的第一个层次,即USB总线接口层的功能。SL811HS的主要特点如下:
•可作为USB主机或者设备的接口控制器;
•支持USB协议1.1,提供全速和低速2种USB总线速度方式;
•片上集成了SIE、单端口根Hub、USB收发器和256字节的SRAM;
•3.3V工作电压,接口兼容5V电压;
•硬件自动产生帧起始包SOF和CRC5/16校验。

500)this.style.width=500;" border="0" />

图1.1  SL811HS功能框图
SL811HS与单片机的硬件接线[2][3]
单片机采用的是AT89C55WD,它通过SL811HS芯片对U盘进行读写,实现存储。这部分的电路原理图如图1.2所示。
图中SL811HS与CPU的连接是关键。SL811HS是3.3V供电的系统,而AT89C55WD是5V供电的系统,但二者的端口能够彼此兼容对方的高低电平。因此SL811HS的数据引脚D0~D7直接与单片机的低八位地址/数据总线AD0~AD7连接,读写选通引脚nRD、nWR则直接与单片机的读写线/RD、/WR连接;对AT8955WD而言,SL811HS不过是其在片外扩展的I/O芯片之一,地址线A15与/CS_SL811(AT89C55WD的P3.3引脚)组合后充当SL811HS的片选,地址线A0与SL811HS的A0引脚相连,于是SL811HS的地址指针寄存器的地址为7FFEH(A0、/CS_SL811为低电平),SL811HS的数据寄存器的地址为7FFFH(A0为高电平,/CS_SL811为低电平)。之所以需要/CS_SL811配合,是因为AT89C55WD在外部还扩展了一片128KB的SRAM62256(省略未画),片选线也是A15。SL811HS的M/S引脚经下拉电阻后接地,使得其工作于主机控制器模式。此外,SL811HS的中断请求信号为高电平有效,故反向后连接到AT89C55WD的外部中断引脚/INT0。本系统没有采用SL811HS内部的锁相环,直接使用外部的48MHz有源晶振作为时钟源,更准确。
存储模块是主机系统,其PCB板上安装有A型插座,用于为下层的设备提供连接点。因为连接的外设是功耗量极低的USB盘,下行端口的电源VCC直接连到了检测系统的电源上。
500)this.style.width=500;" border="0" />

基于U盘的海量存储板中单片机固件程序编写
过去,基于个人计算机的USB开发,仅仅是对USB外设的开发,USB核心驱动程序和USB主控制器驱动程序均由Windows等操作系统提供。而实现USB主机的功能,这两部分驱动程序都必须设计。
 嵌入式USB主机的软件设计思路[4]
USB主机协议描述了USB系统软件(核心驱动程序和主控制器驱动程序)的设计规范。根据该设计规范,嵌入式USB主机的软件设计应包括以下三部分:USB主机系统软件部分,主要实现对USB外设的配置,读取USB外设的信息,从而判断该设备属于USB的哪一类,并确定下一步选用哪个特定的程序加以支持;USB Mass Storage设备类协议软件部分,实现USB Mass Storage类所规定的各种命令;USB用户软件部分,实现用FAT文件系统管理和存储数据。因此,基于U盘的海量存储模块中单片机的固件程序有着如图1.3所示的积木式的结构。

500)this.style.width=500;" border="0" />

单片机嵌入式USB主机固件程序
1、SL811HS与AT89C55WD的通信程序设计
SL811与单片机AT89C55WD的通信程序设计可以简单地认为是实现了PC的USB主机的主控制器驱动程序的部分功能。
①读数据
由于SL811HS的外接总线的地址和数据信号是复用的,通过A0信号来区分地址和数据。因此,AT89C55WD读取或写入SL811HS内存的时候首先发送地址,然后再发送数据。此外,由于SL811HS采用了地址自动增址的机制,因此,如果需要读取或写入连续地址内的数据时,只需要发送起始地址即可,以后每读取或写入一次数据,SL811HS会自动将寻址地址加1。根据SL811HS的读数据时序的要求,读取数据前首先发送地址,再读取数据,程序如下:
unsigned char SL811Read(unsigned char a)

 unsigned char nVal;
 unsigned char xdata *exAddress;
 exAddress = SL811_ADDR_PORT;    /*发送地址  */
 SL811_CS=0;
 *exAddress=a;
 exAddress=SL811_DATA_PORT;     /*读取数据  */
 nVal = *exAddress;
 SL811_CS=1;
 return nVal;
}
②写数据
与读数据类似,AT89C55WD向SL811HS的内存单元写数据时,也必须首先发送地址,然后发送要写入的数据。根据SL811HS的写数据时序,函数实现程序如下:
void SL811Write(unsigned char a, unsigned char d)

 unsigned char xdata *exAddress;
 exAddress = SL811_ADDR_PORT;       /*发送地址  */
 SL811_CS=0;
 *exAddress=a;
 exAddress=SL811_DATA_PORT;         /*写入数据  */
 *exAddress = d;
 SL811_CS=1;
}
单片机AT89C55WD与SL811HS通信的实现,是整个USB体系软件的根基。在此基础上即可实现USB主机协议的系统软件、Mass Storage类协议软件、FAT文件系统软件。
2、AT89C55WD的初始化
单片机AT89C55WD的初始化程序安排在主程序main.c中,主要是完成定时器T0、外部中断INT0、I/O口、串行通讯口以及SL811HS 的初始化,包括工作方式设定、初值设置、相关的数据缓冲器清零等,程序较为简单,此处省略。
3、人机接口程序
人机接口程序对来自主CPU模块的串口命令进行相应的处理,并将处理结果返回。因为主CPU模块需将采集的数据值通过存储模块存入U盘,所以主CPU模块的串口命令包括查询U盘、创建文件、打开文件、写文件、读文件等,如同人们在PC机对U盘的操作。
该段程序首先通过串口处理入口函数,判别主CPU发出何种命令,再跳转至功能操作子函数。U盘的功能操作子函数依据USB Mass Storage类的UFI命令,按照微软的FAT文件规范进行相应文件操作。
由于篇幅关系其它部分的实现本文不作具体介绍。
结语
总之,运用单片机直接控制读写U盘,部分地实现PC上USB主机的USB核心驱动程序的功能,是嵌入式系统的软件和硬件的集合,是一个全新的概念。基于U盘单片机低功耗海量存储系统将使测控系统体积减小,更有利于野外作业或其它便携性要求较高的场合,为仪器便携化发展开拓了新的思路。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

串口作为单片机开发的一个常用的外设,应用范围非常广。大部分时候,串口需要接收处理的数据长度是不定的。那么怎么才能判断一帧数据是否结束呢,今天就以STM32单片机为例,介绍几种接收不定长数据的方法。

关键字: 单片机 串口 STM32

单片机诞生于1971年,经历了SCM、MCU、SoC三大阶段。单片机由以前的1位、4位、8位、16位,发展到现在的32位甚至64位。当前国内MCU厂商已有上百家,对标进口芯片的情况非常严重,导致国内MCU产品将陷入同质化...

关键字: 单片机 MCU 市场

(微控制单元 MCU(Microcontroller Unit),又称单片机,是把中央处理器(CentralProcess Unit; CPU)的频率与规格做适当缩减,并将内存(memory)、计数器(Timer)、US...

关键字: 单片机 芯片 CPU

在疫情的影响下,出门后、用餐前使用酒精消毒已成了人们的日常,而酒精喷雾机也因此变得十分热销。为了避免交叉感染的风险,自动酒精喷雾器也就应运而生。不同于传统手动喷雾器不美观、手部接触不卫生的bug,此款自动感应酒精喷雾器使...

关键字: 芯岭技术 方案开发 解决方案 单片机

在实际的单片机控制系统中,有时候会使用数字逻辑芯片对单片机和受控元件进行隔离,以保护单片机,或者令单片机更好地对后级进行控制。

关键字: 单片机 数字逻辑芯片 受控元件

MH32F103AVET6使用高性能的32位内核,内置了多达2个高级定时器、10个通用定时器、2个基本定时器、3个12位的ADC、2个12位的DAC,还包含标准和先进的通信接口包括:3个SPI接口、2个I2S接口、2个I...

关键字: 单片机 MCU

最近由于换季,天气突然的转凉,大家也是直呼好冷。天冷了自然是要注意防寒保暖。一个能够当充电宝用的暖手宝会是你最好的陪伴。暖手宝是一种非常便捷易用的发热工具,并且体形小巧,可以随身携带并轻易握在手中,也可以放置在身上的其它...

关键字: 芯岭技术 方案开发 解决方案 单片机

以前在工作中,同事遇到一个问题,LDO输出接了一个负载,负载有低功耗和普通模式两种工作模式,低功耗模式时正常,普通模式时工作也正常,但是从低功耗切换到普通模式时,却发生了异常,测量得到LDO的输出电压波形大约如下,绿色是...

关键字: LDO 低功耗 负载调整率

XL32F003 系列微控制器采用高性能的 32 位 ARM®Cortex®- M0+ 内核,宽电压工作范围的MCU。嵌入高达64 Kbytes flash和8 Kbytes SRAM存储器,最高工作频率32 MHz。包...

关键字: 单片机 MCU

电动洗鼻器是一种全新的鼻腔清洁工具,一般是通过水压将生理盐水送进鼻腔,借助于生理盐水的杀菌作用及水流的冲击力,将鼻腔内已聚集的致病菌及污洉排出,从而使鼻腔恢复正常的生理环境,恢复鼻腔的自我排毒功能,达到保护鼻腔的目的。让...

关键字: 芯岭技术 方案开发 解决方案 单片机

单片机

21600 篇文章

关注

发布文章

编辑精选

技术子站

关闭