基于SPI芯片MAX3420的USB控制器接口设计
时间:11-24
来源:互联网
点击:
目前,USB接口的使用越来越广泛,许多设备上都提供了USB接口。传统的USB控制器需要使用包括数据线和控制线在内的十多根线,占用了大量的CPU资源。而现代设备正在向体积小、功能强的方向发展,CPU更是要求表贴封装,功耗低,其自身资源非常有限,所以在扩展接口方面必须要尽可能少地占用已有芯片资源。本文介绍了如何使用MAX3420进行USB接口扩展。MAX3420提供了SPI接口,只需3~4根线便可实现USB接口。
1 MAX3420简介
MAX3420是Maxim公司推出的一款全速USB外设,包括必要的数字逻辑和模拟电路,支持USB2.O协议。MAX3420内建全速收发器,支持±15kV的ESD保护,可以编程控制USB总线的连接和断开;内含的串行接口引擎可以控制底层的USB协议细节,如错误校验和总线重连接。MAX3420通过SPI接口操作其内部寄存器,工作频率为26 MHz,任何支持SPI主模式的CPU只使用3~4根线便可增加USB功能。
2 MAX3420的外围电路
作为一款全速USB外设,MAX3420的外围电路并不复杂,如图1所示,图中采用USB自身供电方式,右上角的3.3V稳压器表示产生3.3 V电压、为CPU供电的电压转换芯片,常用的有AS2830、LMlll7等。与CPU连接的引脚共有6个,其名称和功能如表l所列。其中,USB配置必需的引脚是SCLK、SS和MISO三个。芯片的供电电压为0~4 V,可以采用3.3 V供电;采用12 MHz晶振,内部锁相环进行4倍频;还提供了4个通用输出口和4个通用输入口,便于CPU的I/O口扩展。
![](../img/eec-Analog/Analog-1321221lefpfrnloa.jpg)
带有SPI接口的CPU,与MAX3420的接口十分方便;如果不带SPI接口,则也可用I/O口来实现SPI的功能。图2为CPU与MAX3420的接口原理图。
![](../img/eec-Analog/Analog-132123nd1hb3n00w0.jpg)
3 MAX3420的工作方式
MAX3420的SPI接口可工作于以下两种工作方式:全双工方式(MOSI输入/MISO输出)和半双工方式(MOSI输入/输出)。
3.1 全双工方式
全双工方式下的读操作:
①SS为高,MAX3420未选中,MISO为高阻态。
②当SCLK为静止态时,SS了,低,MAX3420选中;打开MISO输出缓冲,将要发送数据的最高位送到MISO输出。
③SPI主方式下,首先的8个时钟脉冲将命令由MOSI发送;MISO在SCLK上升沿输出USB状态位。
④8个时钟脉冲以后,SS为高,MAX3420停止工作,MISO输出高阻态。在SCLK下降沿,下一个输出数据的最高位在MISO顺序输出。
全双工方式下的写操作:
①SPI主方式下设置时钟为静止态,SS为高。
②SS为低,将要写的数据的最高位放到MOSI输入。
③SPI主方式下.首先的8个时钟脉冲将命令由MOSI发送;MISO在SCLK上升沿输出USB状态位。
④8个时钟脉冲以后,SS为高,MAX3420停止工作。
全双工方式下的读/写时序图如图3所示。
![](../img/eec-Analog/Analog-132125mmy4bcdx1qj.jpg)
3.2 半双工方式
半双工方式下MISO为高阻态,MOSI为双向。由于只有一根线,因此半双工方式下USB状态位不再有效。半双工方式下的读/写操作:
①SS为高,MAX3420未选中,MOSI可以为任意值。
②当SCLK为静止态时,SS为低,MAX3420选中;将要写的数据的最高位送到MOSI输入。
③SPI主控制器打开输出驱动,首先的8个时钟脉冲将命令在SCLK上升沿由MOSI发送;8个时钟脉冲后,SS为高。
④如果要写SPI数据,则SPI主控制器保持打开输出驱动,在SCLK脉冲下,顺序将数据位送到MOSI引脚;如果要读SPI数据,则在8个时钟脉冲后,SPI主控制器关闭输出驱动,开始从MOSI按时钟脉冲读入数据。
⑤SS为高.MAX3420停止工作。
半双工方式下的读/写时序图如图4所示。
![](../img/eec-Analog/Analog-132129mtrn3anudgd.jpg)
4 USB程序流程
MAX3420共有4个端点,即EP0~EP3。其中:EP0为64字节的双向控制端点;EPl为2×64个字节的双缓冲、批处理/中断输出端点;EP2为2×64个字节的双缓冲、批处理/中断输入端点;EP3为64字节的批处理/中断输入端点。EPO主要用于枚举过程中发送命令,EP1和EP2主要用于完成大批量数据的收发。如图5所示,USB2.0协议由硬件接入层、中间层及上层应用3部分构成。其中:硬件接入层是与CPU紧密联系的,其他两层是与硬件无关的。硬件接入层主要实现了两个函数outport()和inport()。这两个函数是整个USB协议在硬件上运行的基础,只要在硬件接入层针对不同的CPU和MAX3420实现了这两个函数,便可以保证USB接口的正常工作。
![](../img/eec-Analog/Analog-132130xb5ecw1jjsp.jpg)
本文以PICl8F2520和MAX3420为例,在全双工方式下说明以上两个函数的示意性代码。
void outport(unsigned char port,unsigned char value){
使能CPU的SPI模式;
设置CUP的SPI为主共和方式,MAX3420的SPI为从工作方式;
![](../img/eec-Analog/Analog-132131jcrzutfedbc.jpg)
使能CPU的SPI模式;
设置CPU的SPI为主工作方式,MAX3420的SPI为从工作方式;
![](../img/eec-Analog/Analog-132133nuxdxw3ck5e.jpg)
USB2.0协议规定USB接口工作于被动工作方式,协议中间层主要包括总线重连接、EP0收发和中断处理等几部分,其工作流程如图6所示。协议上层应用程序由程序员按照规范根据具体需要编写。
![](../img/eec-Analog/Analog-132134urd5zhdstvj.jpg)
1 MAX3420简介
MAX3420是Maxim公司推出的一款全速USB外设,包括必要的数字逻辑和模拟电路,支持USB2.O协议。MAX3420内建全速收发器,支持±15kV的ESD保护,可以编程控制USB总线的连接和断开;内含的串行接口引擎可以控制底层的USB协议细节,如错误校验和总线重连接。MAX3420通过SPI接口操作其内部寄存器,工作频率为26 MHz,任何支持SPI主模式的CPU只使用3~4根线便可增加USB功能。
2 MAX3420的外围电路
作为一款全速USB外设,MAX3420的外围电路并不复杂,如图1所示,图中采用USB自身供电方式,右上角的3.3V稳压器表示产生3.3 V电压、为CPU供电的电压转换芯片,常用的有AS2830、LMlll7等。与CPU连接的引脚共有6个,其名称和功能如表l所列。其中,USB配置必需的引脚是SCLK、SS和MISO三个。芯片的供电电压为0~4 V,可以采用3.3 V供电;采用12 MHz晶振,内部锁相环进行4倍频;还提供了4个通用输出口和4个通用输入口,便于CPU的I/O口扩展。
![](../img/eec-Analog/Analog-1321221lefpfrnloa.jpg)
带有SPI接口的CPU,与MAX3420的接口十分方便;如果不带SPI接口,则也可用I/O口来实现SPI的功能。图2为CPU与MAX3420的接口原理图。
![](../img/eec-Analog/Analog-132123nd1hb3n00w0.jpg)
3 MAX3420的工作方式
MAX3420的SPI接口可工作于以下两种工作方式:全双工方式(MOSI输入/MISO输出)和半双工方式(MOSI输入/输出)。
3.1 全双工方式
全双工方式下的读操作:
①SS为高,MAX3420未选中,MISO为高阻态。
②当SCLK为静止态时,SS了,低,MAX3420选中;打开MISO输出缓冲,将要发送数据的最高位送到MISO输出。
③SPI主方式下,首先的8个时钟脉冲将命令由MOSI发送;MISO在SCLK上升沿输出USB状态位。
④8个时钟脉冲以后,SS为高,MAX3420停止工作,MISO输出高阻态。在SCLK下降沿,下一个输出数据的最高位在MISO顺序输出。
全双工方式下的写操作:
①SPI主方式下设置时钟为静止态,SS为高。
②SS为低,将要写的数据的最高位放到MOSI输入。
③SPI主方式下.首先的8个时钟脉冲将命令由MOSI发送;MISO在SCLK上升沿输出USB状态位。
④8个时钟脉冲以后,SS为高,MAX3420停止工作。
全双工方式下的读/写时序图如图3所示。
![](../img/eec-Analog/Analog-132125mmy4bcdx1qj.jpg)
3.2 半双工方式
半双工方式下MISO为高阻态,MOSI为双向。由于只有一根线,因此半双工方式下USB状态位不再有效。半双工方式下的读/写操作:
①SS为高,MAX3420未选中,MOSI可以为任意值。
②当SCLK为静止态时,SS为低,MAX3420选中;将要写的数据的最高位送到MOSI输入。
③SPI主控制器打开输出驱动,首先的8个时钟脉冲将命令在SCLK上升沿由MOSI发送;8个时钟脉冲后,SS为高。
④如果要写SPI数据,则SPI主控制器保持打开输出驱动,在SCLK脉冲下,顺序将数据位送到MOSI引脚;如果要读SPI数据,则在8个时钟脉冲后,SPI主控制器关闭输出驱动,开始从MOSI按时钟脉冲读入数据。
⑤SS为高.MAX3420停止工作。
半双工方式下的读/写时序图如图4所示。
![](../img/eec-Analog/Analog-132129mtrn3anudgd.jpg)
4 USB程序流程
MAX3420共有4个端点,即EP0~EP3。其中:EP0为64字节的双向控制端点;EPl为2×64个字节的双缓冲、批处理/中断输出端点;EP2为2×64个字节的双缓冲、批处理/中断输入端点;EP3为64字节的批处理/中断输入端点。EPO主要用于枚举过程中发送命令,EP1和EP2主要用于完成大批量数据的收发。如图5所示,USB2.0协议由硬件接入层、中间层及上层应用3部分构成。其中:硬件接入层是与CPU紧密联系的,其他两层是与硬件无关的。硬件接入层主要实现了两个函数outport()和inport()。这两个函数是整个USB协议在硬件上运行的基础,只要在硬件接入层针对不同的CPU和MAX3420实现了这两个函数,便可以保证USB接口的正常工作。
![](../img/eec-Analog/Analog-132130xb5ecw1jjsp.jpg)
本文以PICl8F2520和MAX3420为例,在全双工方式下说明以上两个函数的示意性代码。
void outport(unsigned char port,unsigned char value){
使能CPU的SPI模式;
设置CUP的SPI为主共和方式,MAX3420的SPI为从工作方式;
![](../img/eec-Analog/Analog-132131jcrzutfedbc.jpg)
使能CPU的SPI模式;
设置CPU的SPI为主工作方式,MAX3420的SPI为从工作方式;
![](../img/eec-Analog/Analog-132133nuxdxw3ck5e.jpg)
USB2.0协议规定USB接口工作于被动工作方式,协议中间层主要包括总线重连接、EP0收发和中断处理等几部分,其工作流程如图6所示。协议上层应用程序由程序员按照规范根据具体需要编写。
![](../img/eec-Analog/Analog-132134urd5zhdstvj.jpg)
USB Maxim 模拟电路 收发器 总线 电路 电压 PIC 相关文章:
- 基于S3C44B0X的心电血压监测仪USB接口设计(11-28)
- C8051F320在USB设计中的应用(01-18)
- 基于ISP1581型接口电路的USB2.0接口设计(01-18)
- 用CP2101将USB口扩展成串口(01-18)
- TM1300 PCI-XIO口的UART和USB接口设计(01-17)
- 基于CH371的实用USB接口设计(01-23)