使用MAX3420全速USB外设实现USB接口的扩展

网友投稿 304 2022-10-26

使用MAX3420全速USB外设实现USB接口的扩展

1、 MAX3420简介

带有SPI接口的CPU,与MAX3420的接口十分方便;如果不带SPI接口,则也可用I/O口来实现SPI的功能。图2为CPU与MAX3420的接口原理图。

3、 MAX3420的工作方式

MAX3420的SPI接口可工作于以下两种工作方式:全双工方式(MOSI输入/MISO输出)和半双工方式(MOSI输入/输出)。

3.1 全双工方式

全双工方式下的读操作:

①SS为高,MAX3420未选中,MISO为高阻态。

②当SCLK为静止态时,SS了,低,MAX3420选中;打开MISO输出缓冲,将要发送数据的最高位送到MISO输出。

④8个时钟脉冲以后,SS为高,MAX3420停止工作,MISO输出高阻态。在SCLK下降沿,下一个输出数据的最高位在MISO顺序输出。

全双工方式下的写操作:

①SPI主方式下设置时钟为静止态,SS为高。

②SS为低,将要写的数据的最高位放到MOSI输入。

③SPI主方式下。首先的8个时钟脉冲将命令由MOSI发送;MISO在SCLK上升沿输出USB状态位。

④8个时钟脉冲以后,SS为高,MAX3420停止工作。

全双工方式下的读/写时序图如图3所示。

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所示。

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接口的正常工作。

本文以PICl8F2520和MAX3420为例,在全双工方式下说明以上两个函数的示意性代码。

void outport(unsigned char port,unsigned char value){

使能CPU的SPI模式;

设置CUP的SPI为主共和方式,MAX3420的SPI为从工作方式;

使能CPU的SPI模式;

设置CPU的SPI为主工作方式,MAX3420的SPI为从工作方式;

USB2.0协议规定USB接口工作于被动工作方式,协议中间层主要包括总线重连接、EP0收发和中断处理等几部分,其工作流程如图6所示。协议上层应用程序由程序员按照规范根据具体需要编写。

5、 总 结

将MAX3420用于汽车车载故障诊断仪的USB接口设计,实际传输速率可达20 Mbps左右,完全可以满足对汽车总线上传输数据的实时采集要求;总共占用CPU的6个引脚,用于与MAX3420的控制、数据接口,实际使用效果良好。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:人生苦短,开发用云 | 如何优雅完成程序员的侠客梦?
下一篇:Java实现企业员工管理系统
相关文章

 发表评论

暂时没有评论,来抢沙发吧~