您的位置 首页 观点

PIC18F2455/2550/4455/4550之通用串行总线USB

PIC18F2455/2550/4455/4550之通用串行总线USB-PIC18FX455/X550 系列器件包含全速和低速兼容的USB串行接口引擎(Serial Interface Engine,

  PIC18FX455/X550 系列器材包括全速和低速兼容的USB串行接口引擎(Serial Interface Engine,SIE),它答应在任何USB主机和PIC单片机之间进行高速通讯。 能够运用内部收发器或经过外部收发器将SIE 直接衔接到USB。内部的3.3V稳压器也能够在5V的运用中被用作内部收发器的电源。

  USB模块还包括了某些特别硬件以进步其作业功用。在器材的数据存储空间(USB RAM)中供给了双端口存储器,以便单片机和 SIE 之间能够直接进行存储器拜访。 此外,还供给了缓冲器描述符,答运用户恣意设置USB RAM 空间中供端点运用的存储区。 此外还供给了并行通讯端口以便利很多数据的不间断传输,比方将数据等时传送到外部存储器缓冲器。

  USB 状况和操控

  • USB操控存放器(UCON ):用于操控模块在传输进程中的操作, 此存放器包括操控行为的装备位。USBEN,将此方位1 前仍是需求预先对模块进行全面的装备。PKTDIS位,当接受到SETUP令牌时,此位被SIE置1,以答应处理SETUP。单片机不能将此方位1,只能将此位清零,以答应SIE持续发送和或接纳。RESUME位,答应外设经过履行恢复信令来进行长途唤醒。 要进行有用的长途唤醒,固件有必要将RESUME方位1 并坚持此状况10 ms ,然后将此位清零。SUSPND 位将模块和支撑电路(即稳压器)置于低功耗形式。 SIE 的输入时钟也被制止。呼应IDLEIF 中止时,该位有必要由软件置位。 在发生ACTVIF 中止之后,由固件将此位复位。 当此位有用时,设备与与总线处于衔接状况,可是收发器输出处于闲暇状况。 VUSB引脚上的电压依据此位值的不同而改动。在 IDLEIF 恳求之前将此方位1,将导致不行意料的总线行为。

  

  • USB装备存放器(UCFG ):在经过 USB通讯之前,有必要对与模块相关的内部和 / 或外部硬件进行装备。 大部分装备是运用UCFG 存放器独立的。USB稳压器也是经过此装备存放器操控的。UFCG 存放器中的操控位可用于操控USB模块的绝大部分体系级行为,包括: • 总线速度(全速和低速)• 片上上拉电阻使能 • 片上收发器使能 • 乒乓缓冲器的运用。

  内部收发器,USB外设有一个内置的USB 2.0 全速和低速兼容的收发器,在USB内部与SIE 相连。 此功用部件在低成本的单芯片运用中很有用。UTRDIS 位操控收发器,它在默许状况下是使能的(UTRDIS=0)。FSEN 位操控收发器的速度,将此方位1将使能全速作业形式。片上USB上拉电阻由UPUEN 位操控。

  外部收发器,此模块为片外收发器供给支撑。 在由于物理条件约束而要求收发器远离SIE 的运用中要用到片外收发器。例如,需求与USB电气阻隔的运用能够经过某些阻隔元件将外部收发器衔接到单片机的SIE。经过将UTRDIS 方位1 能够使能外部收发器。模块中有6 条信号线用来与外部收发器进行通讯并操控外部收发器:

  • VM :单端D-线路输入 (VM 和VP 信号将串行总线上不能用RCV 信号捕捉的状况陈述给SIE。这些信号的组合状况和它们的阐明在表17-1 和表17-2中列出。)

  • VP: 单端D+线路输入

  • RCV:差分接纳器输入 (RCV信号是由外部收发器输出到SIE 的,它表明将串行总线上的差分信号转换为一串单脉冲序列)

  • VMO:差分线路驱动器输出 (VPO和VMO信号是由SIE 输出到外部收发器的)

  • VPO:差分线路驱动器输出

  • OE : 输出使能

  

  

  • USB传输状况存放器(USTAT):USB 状况存放器陈述SIE 中的业务状况。 当SIE 宣布USB传输完结中止信号时,应该读USTAT以确认传输的状况。 USTAT 包括传输端点编号、传输方向和乒乓缓冲器指针值(假如运用的话)。当SIE运用缓冲器读写数据完毕后,它将更新USTAT存放器。 假如在为业务完结中止供给服务之前进行了另一次USB传输,SIE 将把下一次传输的状况保存到状况FIFO中。

  

  • USB设备地址存放器(UADDR):USB地址存放器包括仅有的USB地址,当此地址有用时,可被外设辨认。 当接纳到由URSTIF 表明的USB复位信号,或接纳到来自单片机的复位信息时,UADDR 复位为00h。 单片机有必要在USB发动阶段(枚举)写入USB地址,该操作受Microchip USB固件支撑。

  • 帧编号存放器(UFRMH:UFRML):帧编号存放器包括 11 位帧编号。 低字节被保存在UFRML中,而高3 位则被保存在UFRMH 中。 不论是否接纳到SOF令牌,都用当时帧编号更新该存放器对。关于单片机而言,这些存放器是只读的。 帧编号存放器首要用于同步传输。

  • 端点使能存放器0 到15(UEPn):

  USB 端点操控:16个可用的双向端点中的每一个都有自己独立的操控存放器UEPn(其间n 表明端点编号)。每个存放器相应操控位的功用都是相同的。EPHSHK位操控端点握手,将此方位1将使能USB握手。 一般,除运用同步端点以外,此位总是置1 的。EPCONDIS位用于使能或制止经过端点进行的USB操控操作(SETUP)。清零此位将使能SETUP 业务;留意有必要将相应的EPINEN和EPOUTEN 方位1 以使能IN和OUT业务。 由于USB标准中端点0是默许操控端点,所以关于端点0 ,此位将总是被清零的。EPOUTEN 位用于使能或制止主机的USBOUT业务。 将此方位1 则使能OUT业务。 相同,EPINEN 位将使能或制止主机的 USB IN业务。EPSTALL 位用于指示端点的 STALL 状况。假如一个特别的端点宣布了一个STALL ,那么SIE 将把这对端点的EPSTALL方位1。 此位将坚持置1 直到由固件清零或SIE 复位。

  

  USB RAM:USB数据经过称为USB RAM的存储空间在单片机内核和SIE之间传送。 USB RAM 是一个特别的双端口存储器,被映射到一般数据存储空间的Bank 4到Bank 7(400h到7FFh),总容量为 1KB。Bank 4 (400h到4FFh)专用于端点缓冲操控,而Bank 5到Bank7 可用于USB数据。依据所运用的缓冲类型,除了Bank 4的8 个字节之外,一切字节都可用作USB缓冲器空间。尽管USB RAM 可用作单片机的数据存储器,但由SIE拜访的区域不能被单片机拜访。这儿采用了一种信号机制来确认恣意给定时刻内对专用缓冲器的拜访。

  帧:总线上的通讯信息被划分为多个1ms的时隙,称为帧。每帧都包括多个设备和端点的多种业务。

  USB标准中界说了四种传输类型:

  • 同步:这种传输类型可保证及时传递很多数据(最大为1023字节),可是不能保证数据的完整性。 它适用于丢掉少数数据无关紧要的通讯运用,比方音频数据。

  • 批量:这种传输类型答应在传输很多数据的一起保证数据的完整性,可是传输时限不能保证。

  • 中止:这种传输类型能够保证及时传输少数数据,并保证数据的完整性。

  • 操控:这种类型供给设备发动操控。全速设备支撑一切传输类型,而低速设备只能运用中止和操控传输办法。

  缓冲器描述符和缓冲器描述符表

  Bank 4 中的存放器组成称为“缓冲器描述符表”(Buffer Descriptor Table,BDT )的结构,专门用于操控端点缓冲器。 这为用户构建和操控各种长度和装备的端点缓冲器供给了灵敏的办法。BDT 由缓冲描述符(Buffer Descriptor,BD)组成,它用于界说和操控USB RAM 空间中的实践缓冲器。 每个BD由四个存放器组成,其间 n 代表64个或许的BD中的一个(规模是0 到63):

  • BDnSTAT: BD 状况存放器

  • BDnCNT : BD 字节计数存放器

  • BDnADRL :BD低地址存放器

  • BDnADRH :BD高地址存放器

  BD 在序列中总是以一个四字节的数据块BDnSTAT:BDnCNT:BDnADRL:BDnADRH)呈现, BDnSTAT的地址总是一个相关于400h的偏移量4n(以十六进制数表明),其间 n 是缓冲器描述符编号。依据所运用的缓冲装备(第17.4.4 节“乒乓缓冲”),最多能够有32、33或64组缓冲器描述符。 BDT 至少要8 字节长,由于USB标准规则,每个设备有必要具有初始发动所需的输入和输出端点0。 依据端点和缓冲装备,BDT 能够有256 个字节。

  尽管能够被看作特别功用操控存放器,缓冲器描述符的状况和地址存放器并不是硬件映射的,这与 Bank 15 中的传统单片机SFR不同。 假如与特定BD对应的端点未被使能,则该端点的存放器将不被运用。它表现为可用的RAM 空间,而不是未完结的地址。只能经过将UEPn《1》方位1 使能端点,才能将这些地址作为BD存放器运用。 好像数据存储区的任何单元相同,BD存放器的值在器材复位时都会是不确认的。

  图17-6 所示为一个BD的示例,该 BD用于从500h开端的40字节缓冲器。 假如现已运用UEPn 存放器使能了对应的端点,就只要特定的BD存放器组有用。 USBRAM中一切BD存放器都可用。 在使能端点之前应该设置好每个端点的BD。

  

  BD状况和装备:缓冲器描述符不仅仅界说端点缓冲器的巨细,还决议了它的装备和操控。 大部分装备都是经过BD状况存放器BDnSTAT完结的。 每个BD都有与自己一一对应的、带编号的BDnSTAT存放器。和其他操控存放器不同,BDnSTAT 存放器内的位的设置与详细运用休戚相关。 有两种不同的装备,决议特定时刻修正BD和缓冲区的是单片机仍是USB模块。 只要一个位是这两种装备同享的。

  缓冲器一切权:由于CPU和USB模块同享缓冲器及其BD,所以运用了简略的信号机制来区别更新BD 和相关缓冲器的是CPU仍是USB。能够运用UOWN(BDnSTAT《7》)作为信号来加以区别。UOWN 是两种装备的BDnSTAT中仅有同享的位。

  当UOWN清零时,BD 由单片机内核“一切”。 当UOWN方位1 时,BD和缓冲器模块由USB外设“一切”,此刻内核不能够修正 BD 或相应的数据缓冲器。留意,当SIE 具有缓冲器时单片机内核仍能够读BDnSTAT ,反之亦然。

  依据存放器的更新源的不同,缓冲器描述符具有不同的含义。 在分配给USB外设一切权之前,用户能够经过BDnSTAT 装备外设的根本操作。 此刻,也可设置字节计数和缓冲器地址存放器。

  当UOWN置1 时,用户就不能再依靠写入BD的值了。此刻,SIE 依据需求更新BD,改写本来的 BD值。 SIE将运用PID 令牌来更新 BDnSTAT 存放器,一起也将更新传输计数值BDnCNT 。在预备设置端点之前,BDT 的BDnSTAT 字节总是最终更新的字节。 当业务完结时,SIE 将清零UOWN位。 仅有破例的状况是在使能KEN和/ 或BSTALL 的时分。当UOWN方位1 时,硬件上并没有任何机制来阻挠单片机对存储区的拜访。 因而,假如单片机测验在 SIE 具有USB RAM 时更改该存储区,或许会呈现不行意料的成果。 相同,在USB外设将USB RAM 一切权归还给单片机之前,读该存储区也或许会导致数据犯错。

  BDnSTAT 存放器(CPU形式):当UOWN = 0 时,单片机内核具有 BD。此刻,该存放器的其他七个位是操控位。坚持使能位KEN(BDnSTAT《5》)决议BD 一切权的归属。 假如此位被置1,一旦 UOWN位被置1,BD将坚持被SIE 具有,而与端点活动无关。这将防止USTAT FIFO 被更新,一起防止端点的业务完结中止标志被置1 。 只要在挑选并行端口而不是USB RAM作为数据I/O通道时,才使能此功用。

  地址递加制止位INCDIS (BDnSTAT《4》)操控 SIE 的主动地址递加功用。INCDIS 置1 将制止SIE 在发送或接纳每个字节时主动递加缓冲器地址。只要在运用SPP端口时才使能此功用,此刻每个数据字节都被发送到或来自同一个存储单元。

  数据Toggle 同步使能位DTSEN(BDnSTAT《3》)操控数据传输的奇偶校验。将DTSEN置1 将使能SIE 的数据 Toggle 同步,将数据包的奇偶校验位对照 DTS(BDnSTAT《6》)的值进行验证。 假如包不是同步抵达的,数据将被疏忽,不会被写入 USB RAM,而且 USB业务完结中止标志也不会被置1 。 SIE 将把ACK令牌发回给主机对接纳作出应对。 表17-3 汇总了DTSEN位对SIE 的影响。

  

  缓冲器中止位BSTALL (BDnSTAT《2》)为操控传输供给支撑,一般在端点0 只中止一次。它一起支撑USB 标准第9 章中指定的SET_FEATURE/CLEAR_FEATURE指令,对默许操控端点外的任何端点为特有的接连STALL 。

  BSTALL 位使能缓冲器中止。假如接纳到的令牌要运用单元中的BD,BSTALL 置1 将导致SIE 将STALL 令牌回来到主机。 相应的UEPn 操控存放器中的EPSTALL位被置1,而且在发送STALL 到主机时发生STALL 中止。 UOWN 位坚持置1 而且BD 不改动,除非接纳到SETUP令牌。 在这种状况下,STALL 条件被铲除而且BD的一切权返还给单片机内核。

  BD9:BD8 位(BDnSTAT《1:0》 )存储SIE 字节计数的高2 位,低8 位被存储在相应的BDnCNT 存放器中。

  

  BDnSTAT 存放器(SIE 形式):当BD及其缓冲器归SIE 一切时,BDnSTAT 中的大部分位都有了不同的界说。 装备如存放器17-6所示。 一旦UOWN置1,曾经用户写入的任何数据或操控设置都会被来自SIE 的数据改写。 SIE 运用令牌包标识符(Packet IdenTIfier,PID )更新BDnSTAT存放器,该PID 存储在BDnSTAT《5:3》 中。对应的BDnCNT存放器中的传输计数被更新,该八位存放器的值溢出得到的计数值的高两位,被保存在BDnSTAT《1:0》 中。

  BD字节计数:字节计数代表将在一次IN 传输进程中被发送的字节总数。在IN传输之后,SIE 将回来发送到主机的字节数。在OUT传输进程中,字节计数代表能够被接纳并存储到USB RAM 中的最大字节数。 在OUT传输之后,SIE将回来实践接纳到的字节数。 假如接纳到的字节数超越设定的字节计数,数据包将被回绝,一起还将发生NAK握手。 发生这种状况时,字节计数不被更新。

  10位字节计数被别离保存到两个存放器中。 低8 位在BDnCNT存放器中。 高2 位在BDnSTAT《1:0》 中。因而有用的字节计数规模是0 到1023。

  BD地址验证:BD 地址存放器对包括对应端点缓冲器的开始RAM地址。 为了让端点开始单元有用,它有必要在 USB RAM 中(地址为400h到7FFh)。 硬件中没有相应的机制来验证BD地址。 假如BD地址未指向USB RAM 中的单元,或许指向另一个端点缓冲器中的地址,数据将很或许丢掉或被改写。 相同,接纳缓冲器(OUT端点)和正在运用的 BD单元堆叠也将导致不行意料的成果。 在开发USB运用程序时,用户需求考虑在软件中对地址进行验证。

  

  乒乓缓冲:当端点有两组BD项时(一组用于偶数数据传输,一组用于奇数数据传输),它被界说为具有乒乓缓冲器。 这样就答应在CPU处理一组BD的一起,SIE 处理另一组BD。这种办法的乒乓缓冲BD,可完结单片机与 USB之间的最大数据吞吐量。

  USB模块支撑三种形式的操作:

  • 不支撑乒乓缓冲

  • 仅支撑OUT端点0 的乒乓缓冲

  • 支撑一切端点的乒乓缓冲

  运用UCFG 存放器中的PPB1:PPB0位设置乒乓缓冲器。USB模块盯梢每个端点的乒乓指针。 当使能此模块时,一切指针都复位到指向偶数BD。 在业务完结之后(UOWN被SIE 清零),指针被切换到奇数BD。鄙人一次业务完结之后,指针又被切换回偶数BD前次业务的奇偶状况保存在USTAT存放器的PPBI 位中。 用户能够运用PPBRST 位将一切乒乓指针复位到偶数状况。图17-7 显现了三种不同的操作形式以及BD是怎么填充USB RAM 的。依据缓冲装备,BD与特定的端点具有固定的对应联系。表17-4 所示为BD与端点之间映射的详细状况。 这种联系也意味着假如没有接连使能端点,BDT 中将呈现空白区域。 理论上被制止的端点的BD可用作缓冲空间。 实践上,用户应该防止运用BDT 中的这些空间,除非现已采取了验证BD地址的办法。

  USB 中止:USB模块能够发生多个中止条件。 要辨认一切中止源,和单片机相同,此模块具有自己的中止逻辑结构。

  USB 电源形式:最常见的电源形式有仅总线供电(Bus Power Only)、仅自供电(Self-Power Only)和以自供电为主的双电源(Dual Power)供电形式。

  并行通讯端口:并行通讯端口(SPP)是除 USB RAM 之外用于数据传输的备用通道。 能够将端点装备为运用SPP将数据直接发送到外部硬件或直接接纳来自外部硬件的数据。

  此办法能够把单片机作为数据管理器,直接经过SPP传递大块的数据而无需单片机进行处理。 运用示例将包括数据收集体系,其间外部FIFO的数据经过USB和主机

  进行通讯。 在这种状况下,单片机操控端点,而原始数据的传送则靠外设完结。经过相关的端点缓冲器描述符将SPP 使能为USB端点的端口。 有必要经过以下办法来使能端点:

  1. 将BDnADRL:BDnADRH 设置为指向FFFFh 。

  2. 将KEN位(BDnSTAT《5》)置 1 以便让SIE 坚持对缓冲器的操控。

  3. 将INCDIS 位(BDnSTAT《4》)置 1 以制止地址主动递加。

  振荡器:USB模块有特定的时钟要求。 在全速形式下,其时钟源有必要为48 MHz。 即便如此,并不要求单片机内核和其他外设以此刻钟速度运转或运用同一个时钟源。

  USB 固件和驱动程序:Microchip 供给了一些针对运用的特定的资源,比方USB固件和驱动程序。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/news/guandian/180221.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部