USB/GPIO/SDIO
通用串行总线(英语:Universal Serial Bus,缩写:USB)是连接计算机系统与外部设备的一种串口总线标准,也是一种输入输出接口的技术规范。
它只有4根线,两个电源(5V,地线),两个数据线(D+,D-)。,故信号是串行传输的,即按照传输时钟脉冲的节奏一位一位的传输。usb接口也称为串行口。
usb接口的4根线一般是下面这样分配的,需要注意的是千万不要把正负极弄反了,否则会烧掉usb设备或者电脑的南桥芯片:黑线:gnd 红线:vcc 绿线:data+(DP) 白线:data-(DM)
一、接口结构图
下图就是接口图,分别是+5V(电源)、DATA+(传输数据端+ DP)、DATA-(传输数据端- DM)、和GND(地线)。
(DM,DP是用来传输数据的,VCC,GND充电。)
二、数据传输过程
注:后文中将USB设备均举例为U盘。
2.1 首先是主机识别U盘
先说说USB主机是怎么识别一个U盘的吧,当你把一个U盘插到电脑上的时候,电脑的USB接口上会发生一些变化。U盘会把DP(D-)拉高,使DP,DM保持一个J状态(即:DP为高DM为低),电脑主板的USB主机芯片检测到这个J状态(DP(D-)拉高),知道有设备连接上了(这里提到的主机和设备是指连接在USB线两端的USB接口芯片),电脑的驱动会对连接上的这个设备进行识别,我们把它叫做列举,这个过程是为了让电脑知道连接上的这个设备是什么东西(是U盘,还是USB鼠标,还是USB键盘,或是其他的什么)。
2.2 然后开始传输数据
然后再看USB数据是怎么在DM,DP上传输的,当主机检测到有设备连接上,驱动先会对这个设备作些必备的事情,识别他的速度(这个过程又有很多协议,要了解的仔细研究协议),然后就是复位等等。之后就开始在总线(DM,DP)上发送1ms间隔的SOF包(全速)或125us间隔的SOF包(高速)。
USB数据都是以包的形式发出的,包都有固定的格式,它以一个sync(synchronous 同步)开始,以一个eop(end of packet,包结束)结束,SOF 包也是一样的。 下面是包的结构图:
其中PID(packet ID 包的ID)是说明这个包是什么包,即包的类型。
GPIO的英文全称General-Purpose Input /Output Ports,中文意思是通用I/O端口。
在嵌入式系统中,经常需要控制许多结构简单的外部设备或者电路,这些设备有的需要通过CPU控制,有的需要CPU提供输入信号。并且,许多设备或电路只要求有开/关两种状体就够了,比如LED的亮与灭。对这些设备的控制,使用传统的串口或者并口就显得比较复杂,所以,在嵌入式微处理器上通常提供了一种“通用可编程I/O端口”,也就是GPIO。
一个GPIO端口至少需要两个寄存器,一个做控制用的“通用IO端口控制寄存器”,还有一个是存放数据的“通用I/O端口数据寄存器”。数据寄存器的每一位是和GPIO的硬件引脚对应的,而数据的传递方向是通过控制寄存器设置的,通过控制寄存器可以设置每一位引脚的数据流向。
(GPIO相关的寄存器有,IOPIN、IOSET、IOCLR、IODIR四个寄存器。)
SDIO接口是在SD内存卡接口的基础上发展起来的接口,SDIO接口兼容以前的SD内存卡,并且可以连接SDIO接口的设备。
SDIO1.0标准定义了两种类型的SDIO卡:
1.全速的SDIO卡,传输率可以超过100Mbps;
2.低速的SDIO卡,支援的时脉速率在0至400KHz之间。
SDIO协议是由SD卡的协议演化升级而来的,很多地方保留了SD卡的读写协议,同时SDIO协议又在SD卡协议之上添加了CMD52和CMD53命令。由于这个,SDIO和SD卡规范间的一个重要区别是增加了低速标准,低速卡的目标应用是以最小的硬件开支来支持低速I/O能力。低速卡支持类似调制解调器,条形码扫描仪和GPS接收器等应用。高速卡支持网卡,电视卡以及组合卡等。组合卡指的是存储器+SDIO,对组合卡来操作需要全速和4BIT的传输模式,这是SDIO1.0标准规定的。
转载于:https://www.cnblogs.com/klb561/p/8996795.html
USB/GPIO/SDIO相关推荐
- Linux WIFI 驱动实验(USB和SDIO方式)
目录 WIFI 驱动添加与编译 向Linux 内核添加WIFI 驱动 配置Linux 内核 编译WIFI 驱动 驱动加载测试 wireless tools 工具移植与测试 wireless tools ...
- marvell 88W8686 sdio wifi模块学习
一.SDIO简介 SD卡(Secure Digital Memory Card)在我们生活中已经非常普遍了,控制器对SD卡进行读写通信操作一般有两种通信接口可选,一种是SPI接口,另外一种就是SDIO ...
- WIFI简介 以及SDIO总线介绍
文章目录 简介 功能 应用场景 设备怎么与 WiFi 模块通信?有哪几种方式? WIFI和WLAN STA模式和AP模式 无线接入过程的三个阶段 SD 和MMC SDIO SDIO卡和SD卡的区别 S ...
- Universal Serial Bus (USB)
本章介绍了设备的USB. 16.1 Introduction USB控制器通过提供在线路/总线速度高达480Mbps的USB设备之间进行数据传输的机制,为许多消费者便携式设备提供了低成本的连接解决方案 ...
- ZYNQ-利用PS引脚实现EMIO GPIO的驱动
学习内容 使用SDK和提供的API进行初始化GPIO,并驱动led和btn进行操作,实现led呼吸灯效果,串口读取btn的值. 开发环境 vivado 18.3 && SDK 开发板 ...
- u盘安卓linux,Android/Linux USB OTG U盘的挂载问题
问题:通过otg可以识别到USB鼠标,但插上U盘却不识别. 问题分析:怀疑是USB otg的menuconfig没有配置. 问题处理: 1.make menuconfig进入config的配置 2.配 ...
- Zynq7000系列之芯片引脚功能综述
很多人做了很久的FPGA,知道怎么去给信号分配引脚,却对这些引脚的功能及其资源限制知之甚少:在第一章里对Zynq7000系列的系统框架进行了分析和论述,对Zynq7000系列的基本资源和概念有了大致的 ...
- Linux 下wifi 驱动开发(二)—— WiFi模块浅析
一.什么是wifi 模块 百度百科上这样定义: Wi-Fi模块又名串口Wi-Fi模块,属于物联网传输层,功能是将串口或TTL电平转为符合Wi-Fi无线网络通信标准的嵌入式模块,内置无线网络协议IEEE ...
- zynq中mgtx应用_Zynq7000系列之芯片引脚功能综述
很多人做了很久的FPGA,知道怎么去给信号分配引脚,却对这些引脚的功能及其资源限制知之甚少:在第一章里对Zynq7000系列的系统框架进行了分析和论述,对Zynq7000系列的基本资源和概念有了大致的 ...
最新文章
- C++ 标准库 书籍学习记录笔记 第5章
- Magento教程 22:如何确认订单报表?
- Scrapy框架实现爬虫
- 魅族魅蓝5s详细开启Usb调试模式的流程
- centos6.5卸载和安装mysql_Linux CentOS 6.5 卸载、tar安装MySQL的教程
- 阿里云构建千万级别架构演变之路
- 安卓(android)建立项目时失败,出现Android Manifest.xml file missing几种解决方法?(总结中)
- 视频专家之路【三】:Vs开发环境的搭建
- Python让繁琐工作自动化——chapter15 保持时间、计划任务和启动程序
- sha1 java 代码_HMAC-SHA1的java源代码实现
- 【lvgl 学习】怎么让LVGL支持GBK编码
- C++实现 模糊综合评价法
- ubuntu如何查看java版本_Ubuntu 如何查看安装的 JDK
- 【SDOI2015】星际战争(网络流)
- 书单丨跟着院士学区块链:系统理解区块链技术
- 代码统计工具实测点评
- PhoneGap移动开发框架2
- 各个版本Microsoft Visual C++运行库下载
- PHP连接本地mysql数据库相应慢的解决方法之一
- selenium定位不准的问题
热门文章
- 【每日一题】 1128. 等价多米诺骨牌对的数量
- python获取当前utc时间_python中通过datetime获取UTC时间ISO格式
- EXCEL取整的细节,避免出错
- 消除类游戏201512(C语言版)
- MATLAB调用东方财富网的api,东方财富通软件的函数(上)
- [Golang] 消费Kafka的日志提交到ElasticSearch
- 深度神经网络的对象识别和定位算法
- 马云背后的男人:曾因月薪82元被女友甩,为了一万块可以裸奔,如今身家超百亿!...
- Electron的进程间通信方式
- 【转】饭统网倒闭:不创新、不放权就是作死