Erickson_qq_
这个作者很懒,什么都没留下…
展开
-
USB电源,供电最大限制。
但是USB供电并非没有限制,设备在使用USB电源时,其功耗必须严格控制在规定范围内,否则会带来供电不足或过载等问题。高功耗USB设备在未配置前只能获得100mA的启动电流,待主机完成枚举和配置后,才能获得高达500mA的正常工作电流。对于需要比500mA更大电流的USB设备,比如外置光驱、大容量移动硬盘等,它们不能完全依赖USB接口的供电,而需要额外自带独立电源适配器。在使用USB设备时,也需要注意确认其功耗类型,避免向USB接口请求超过规定的电流,否则可能导致端口过载。原创 2023-10-29 21:09:22 · 255 阅读 · 0 评论 -
USB各个速度的模式的最大数据传输速度。
但这些模式的总线理论速率与实际获得的有效数据速率存在一定差距。USB定义了低速、全速和高速三种工作模式,它们的总线理论速率分别为1.5Mbps、12Mbps和480Mbps。其总线速率为1.5Mbps,经过各种传输开销考虑,实际获得的最大有效数据速率大约在800Bps左右。其总线速率高达480Mbps,最大有效数据速率可达到53MB/s量级。全速模式广泛应用于手机、音频设备等。其总线速率为12Mbps,最大有效数据速率可达到1.2MB/s。1. 总线时间分配开销,如SOF和其他UDP报文传输消耗的带宽;原创 2023-10-29 20:58:56 · 250 阅读 · 0 评论 -
USB的D+D-的各种信号的概念。
为进行高效可靠的通信,USB规范定义了多种特殊的信号状态,以表示事务的开始或结束、实现设备同步等重要控制作用。接着解析数据包的开始状态SOP和结束状态EOP的生成规则,以及复位状态RESET的具体电平时序要求。在全速设备上,闲置状态是指 D+为高电平、D-为低电平。当 D+线为低电平、D-线为高电平时,该状态为差分 0。:除了差分信号外,USB 规范还定义了其他两个差分状态:J 状态和 K 状态。在低速设备上,该情况则相反。:当 D+和 D-线从闲置状态转换到 K 状态时,将在开始低速或全速数据包前发生。原创 2023-10-29 20:44:35 · 2361 阅读 · 0 评论 -
USB。帧产生(SOF)。
SOF包拥有USB传输的最高优先级,它可以中断任何正在进行的数据事务。为确保SOF能够可靠发送,USB集线器含有babble circuit,在帧结束时它会强制清空总线,确保SOF能够按时发送。设备端通过连续接收SOF,并解析其中的帧号信息,可以实现与主机的时间同步,进而按固定周期进行数据收发。USB作为主从架构的互联系统,需要在主机和设备间建立精确的时间同步,以实现可靠的异步数据传输。本文拟通过概述USB的帧同步机制,解析SOF产生与传输的协议要求,以及在设备设计中如何利用SOF实现精确时序控制。原创 2023-10-29 19:58:00 · 848 阅读 · 0 评论 -
USB。USB设备收到标准请求后的处理。
对于需要数据传输的标准请求,设备在收到请求后需要在500ms内返回第一个数据包。设备端对标准请求的及时响应,直接影响了USB系统的初始化速度及稳定性。另外,整个需要数据传输的标准请求,从开始到结束状态切换,总时间不得超过5秒。USB协议定义了两类标准请求:不传输数据的请求和需要数据传输的请求。除上述通用时序要求外,对于特定的USB类相关请求,如果类文档有更严格的时序要求,设备也必须遵守。对于不传数据的标准请求,设备端需要在接收请求后50ms内完成请求处理和状态切换。原创 2023-10-29 19:12:23 · 72 阅读 · 0 评论 -
USB。HOST设置USB地址后,usb设备的处理。
在恢复时间结束后,设备必须能够在新地址响应主机的事务,不能再响应老地址。在完成地址设置后,设备需要在50ms内回复主机一个长度为0的状态包,或主机成功收到设备的状态包ACK,以确认地址设置成功。USB接口作为主机和多设备的通信架构,需要对设备进行寻址以实现数据的正确交互。在USB总线复位或恢复后,主机会向默认地址0的设备发送设置地址的请求。本文概述USB设备在接收到设置地址请求时的处理机制、时序约束,以及在新旧地址间切换的注意事项。正确解析地址设置阶段的时序与电路设计要点,是开发高可靠USB设备的基础。原创 2023-10-29 18:50:23 · 130 阅读 · 0 评论 -
USB。USB的电源管理。
如何在有限电源条件下,保证所有USB设备的正常工作,是所有USB系统设计人员必然要面对的问题。对于功率需求过大的设备,主机可能直接拒绝枚举,或者只枚举默认配置DESC中声明功率最小的一种工作模式。对于嵌入式工程师来说,合理设置USB设备的电源描述符,遵守协议中的功率切换规则,同时控制自身负载,都对实现一个稳定的USB供电系统非常重要。合理的USB电源管理,直接影响到系统的稳定性及设备的使用性能。总之,USB通过智能的电源管理机制,在有限电源条件下,试图最大程度满足所有设备的供电需求。原创 2023-10-29 18:29:46 · 213 阅读 · 0 评论 -
USB。错误检测机制。
USB的包标识符PID采用4bit数据+4bit校验码的结构,校验码为数据位的反码。接收端可以通过PID内建的冗余校验,来检测PID传输是否出现差错。除PID外,USB数据包中还含有CRC校验码。这可能是由于发送端填充错误,信号失真,或者接收端同步时钟问题导致。因此USB强制要求,如果出现6个连续0,必须在第6位后插入一个填充0。为实现高品质的数据传输,USB协议采用了多种检错机制来保证接口稳定可靠。本文拟通过概述USB中的PID校验、CRC和位填充检错方式,解析USB如何实现高可靠性串行通信。原创 2023-10-29 18:12:28 · 273 阅读 · 0 评论 -
USB。SOF代表包的开始,叫做帧开始包,或帧起始包。
需要注意的是,SE0不仅可以表示EOP,在某些场合下也可以表示复位信号。例如USB设备刚连接到主机时,主机会通过将D+/D-拉低持续10ms来发送复位信号,重启设备。对于低速和全速设备,其EOP标志采用了双零(SE0)编码,即D+和D-线同时被拉低。SOF代表了每帧的开始,由主机以1ms的固定时间间隔发送。这可让设备识别一个新帧的开始,进行同步。在USB数据传输中,帧起始包(SOF)和结束包(EOP)标志位起到了同步和定界的作用。所以,EOP和复位信号都使用了USB空闲状态下的双零编码方案。原创 2023-10-29 17:36:40 · 549 阅读 · 0 评论 -
USB的数据预缓存机制。
举例来说,对于从设备到主机的IN传输,设备需要在两帧之间完成“采集数据-发送数据”的过程。同理,在从主机到设备的OUT传输中,设备端需要在两帧内完成“接收数据-处理数据”。设备会在帧Y收到主机的数据包,但不立即处理,等待下一帧的SOF信号后再开始数据处理,完成一次传输operation。通过这种预缓存操作,USB实现了接收和处理的时序解耦,增强了主机对通道传输时间的调度控制能力,也减小了不同设备时钟误差带来的影响。USB协议中的数据预缓存机制,是为了解耦数据的接收和处理过程,提高传输调度的灵活性。原创 2023-10-29 17:11:05 · 142 阅读 · 0 评论 -
USB没有时钟线,是如何进行同步的?
USB采用了NRZI编码方式,并在每个数据包开头加入同步域SYNC来进行时钟同步。另外,USB还通过位填充(Bit-Stuffing)技术强制向数据流中插入额外的翻转,以校正发送接收双方之间的时钟误差。比如归零编码(RZ)可将时钟同步信号编码进数据之中,实现自同步传输。非归零编码(NRZ、NRZI)效率更高,但需借助同步头来实现初始同步。相较含时钟信号的通信方式,这为USB提供了简化布线的优势。但是同时也带来了信号同步的问题。综上所述,USB同步传输主要依赖编码机制、同步头和位填充来实现无时钟的信号同步。原创 2023-10-29 16:39:55 · 779 阅读 · 0 评论 -
USB批量传输如何判断传输结束
例如最大包长度为64字节,要发送100字节数据,会分两批64字节数据包发送。2. 如果收到一个小于最大包长度的短包,那么也可以认为批量传输结束。因为数据已经发完了,最后剩余不到一个最大包长度。满足任一上述条件,USB主机控制器就会中止当前的IRP(I/O请求包),并开始处理下一个IRP,即下一次批量传输。如果收到一个超过最大包长度的非法超长包,那么主机控制器会中止等待此端点的所有批量传输IRP,否则可能导致数据混乱。1. 如果已发送的数据量刚好等于期望发送的数据总量,那么可以断定本轮批量传输结束。原创 2023-10-29 16:30:14 · 345 阅读 · 0 评论 -
关于USB低速设备和高速设备的端点数量限制
USB 2.0协议规定高速设备可以实现最多15个额外的输入端点和15个额外的输出端点。也就是除了必备的0号控制端点外,高速设备可以再额外拥有15个输入端点和15个输出端点,最大端点数为31。对于低速USB 1.1设备来说,除了必备的0号控制端点外,最多只能再实现2个额外的端点,即只能有1个额外的输入端点和1个额外的输出端点。总之,低速USB设备端点受到严格限制,而高速USB设备可以实现更多端点。USB协议规定,所有USB设备都必须至少实现0号控制管道,该管道包含0号输入和输出端点,用于传输控制信息。原创 2023-10-29 16:24:33 · 435 阅读 · 0 评论 -
usb描述符包含关系。
usb描述符包含关系。USB设备的描述符包含多个层次的关系,主要可以分为以下几个层次:原创 2023-10-29 16:19:18 · 54 阅读 · 0 评论 -
threadX的USBX的初始化和解初始化的分析。
tx_application_define的最后会使用tx_byte_pool_create创建usb线程的内存空间“ux_device_app_byte_pool”,再创建usb线程,也就是执行。主要就是创建了线程,也就是第3个参数app_ux_device_thread_entry,这个参数内是MX_USB_Device_Init,也就是USB底层初始化。进来的参数只有1个,是memory_ptr,这个就是创建的usb线程空间“ux_device_app_byte_pool”原创 2023-10-28 21:57:52 · 273 阅读 · 0 评论 -
USB从机如何检测usb拔出。
STM32当发生suspend事件时,会有一个中断OTG_FS_IRQHandler,然后执行一个处理函数HAL_PCD_IRQHandler处理函数里面读取寄存器判断是否发生了suspend事件,如果发生,那么执行一个回调。当主机进入休眠时,USB总线会进入Suspend状态,这时STM32将产生Suspend中断;而且当电脑开机运行BIOS时,会认为usb插上,然后退出BIOS会进入suspend,然后才启动Windows系统,“退出BIOS会进入suspend”可能会误判为usb拔出。原创 2023-10-28 21:39:10 · 377 阅读 · 0 评论 -
USB。标准请求的索引是什么意思?有什么用?
设置描述符请求SET_DESCRIPTOR,他的索引可以是0,如果是设置字符串描述符,那么索引代表的是语言ID。是可选的,可以更详细地描述信息,如果信息已经被很好的描述了,那么就不需要索引,索引填0。不是所有的标准请求都需要索引,如果请求本身已经完整地描述了信息,那么索引可以为0,也就是不需要。设置接口请求SET_INTERFACE,他的索引代表的是接口号。设置地址请求SET_ADDRESS,他的索引是0。其中的索引,不同的请求,索引代表的意思是不同的。Q:标准请求中的索引是什么意思?原创 2023-10-28 21:35:14 · 88 阅读 · 0 评论 -
USB。端点0是默认的控制端点。端点1可以用作控制端点吗?
不可以,在USB系统中,只有端点0可以用作控制端点,端点1不能用作控制端点。端点1-15都只能数据传输,比如批量传输、中断传输和等时传输。原创 2023-10-28 21:25:44 · 173 阅读 · 0 评论 -
USB。批量传输,中断传输,等时传输,控制传输,分别在什么时候使用?
用于需要固定带宽的,和连续的数据传输。可以保证数据是连续的,低延时,但不保证数据的准确性,如果数据错误,不会重发,而是直接发下一个数据,这就保证了实时性。用于数据量小的,周期性要求严格的情况。特点是传输数据量小,并且严格保证传输时间,有固定的最大传输周期,会定期传输数据。用于数据量大的,而且对时间要求不严格的情况。特点是传输效率高,适合传输大量数据,但不保证传输时间,可能会有延迟。主要用于USB设备的配置和控制,如读取/设置设备描述符等。打印机,扫描仪,MP3播放器、硬盘。原创 2023-10-28 21:23:31 · 223 阅读 · 0 评论 -
USB。标准键盘的报告描述符解析。
标准键盘的输出报告包含1个字节,前5个bit用于控制Num Lock、Caps Lock和Scroll Lock等3个LED指示灯,后3个bit是保留位,用于字节补齐。所以通过输出报告,上位机可以控制键盘LED灯的亮灭状态。输入报告用于描述键盘按键数据的传输,输出报告用于控制键盘上的LED指示灯。所以标准键盘的输入报告可以表示出单次按键信息,通过这8个字节的数据,上位机可以识别出具体按下的是哪个键。第三到第八字节包含6个8bit的数据,范围从0x00到0x65,表示键盘上绝大部分功能键和字符键。原创 2023-05-21 18:18:43 · 933 阅读 · 0 评论 -
STM32。如何修改usb一次收发字节数?
如果同时有收发端点,那么报告描述符中的收发端点的Report Size和Report Count,都需要设置为我们需要的字节数0x0D。比如第1个字节是包头,中间字节是数据,最后一个字节是校验和,然后这些加起来一共多少个字节,这就是usb一次收发的字节数。USB协议规定,每次通信需要指定收发的数据量,也就是一次传输的字节数。STM32作为USB设备,我们需要根据具体的应用设置正确的收发字节数,否则USB通信会出现错误。设置了端点描述符和报告描述符后,每次USB收发的时候,都会按照设置的13字节来传输数据。原创 2023-05-21 15:53:57 · 589 阅读 · 0 评论 -
USB标准键盘按键数据包格式解析
第1个字节中的每一位都表示一个修饰键,如果该位为1表示对应修饰键被按下,为0表示没有按下。这8个修饰键分别是左Ctrl键、左Shift键、左Alt键、左GUI键、右Ctrl键、右Shift键、右Alt键和右GUI键。USB鼠标一次可以发送8个字节的数据,其中第1个字节表示修饰键是否被按下,第2个字节是保留位,值固定为0,后6个字节表示普通按键信息。通过上述例子可以看出,USB键盘按照用户按下按键的顺序返回按键扫描码,如果第一个按键字段为0x00,表示没有任何按键被按下。BYTE2 – 保留位。原创 2023-05-21 14:55:20 · 1699 阅读 · 0 评论