星空网 > 软件开发 > 操作系统

USB2.0学习笔记连载(十八):keil实现寄存器的配置及相关函数讲解(二)

  其实之前也有提及过,Cypress公司提供的官方文件和应用手册真的可以解决很多问题。做的也很人性化,操作也及其简单,几乎只要在 TD_int()里面配置一些常用的参数即可,其他都可以不用操作。

  作为一个常用查询手册吧!!!!

《EZ-USB一些重要寄存器的配置》博客中已经提及过相关寄存器的配置,那么对于slave fifo模式需要配置的寄存器如下所示:

USB2.0学习笔记连载(十八):keil实现寄存器的配置及相关函数讲解(二)   此外还有两个需要配置一下,如下:

REVCTL

CPUCS

USB2.0学习笔记连载(十八):keil实现寄存器的配置及相关函数讲解(二)

USB2.0学习笔记连载(十八):keil实现寄存器的配置及相关函数讲解(二)

  接下来对上述寄存器的配置,都要根据上述原理图来进行,一定要配置时查看此原理图,很有帮助。当然更多的配置信息请参考之前的博客《EZ-USB一些重要寄存器的配置》,这里讲解为什么这么配置。

  1.CPUCS(TRM手册page338)

USB2.0学习笔记连载(十八):keil实现寄存器的配置及相关函数讲解(二)   针对CY原理图,可以有12MHz,24Mhz,以及48MHz可以进行配置,CY的工作输入时钟是24MHz ,经过内部的PLL电路然后进行倍频和分频。

  参考AN61453,设置为48MHz,当然也可以设置为其他频率,这个主要影响8051内核工作频率。

  设置 CPUCS = 0x12

  2.IFCONFIG

USB2.0学习笔记连载(十八):keil实现寄存器的配置及相关函数讲解(二)   若要将CY配置成slave fifo模式,那么需要 IFCONFIG[1:0]为 11.同步模式下IFCONFIG.3为1.

USB2.0学习笔记连载(十八):keil实现寄存器的配置及相关函数讲解(二)

USB2.0学习笔记连载(十八):keil实现寄存器的配置及相关函数讲解(二)

USB2.0学习笔记连载(十八):keil实现寄存器的配置及相关函数讲解(二)

USB2.0学习笔记连载(十八):keil实现寄存器的配置及相关函数讲解(二)

  b7选择时钟源,为0时,设置为外部时钟,设为1时,内部时钟(30~48MHz) ;此外若是使用外部ifclk,在固件设置b7等于0之前,ifclk必须达到。

  b6选择30M还是48M,1为48MHz,0为30MHz。

  b5是设置ifclk引脚的输出使能,0为三态,1为驱动。(当使用外部时钟时,此位必须设置为1)

  b4设置时钟是否反向,0为不反向,1为反向。

  b3设定工作在同步状态还是异步状态。0为同步,1为异步。

  b2是设置port E,笔者使用的是56pin,没有port E端口。

  b1:0设为11,为slave模式

  IFCONFIG =0x43; //选择为外部时钟,且时钟频率为48MHz,且为同步slaveFIFO模式,输入IFCLK(5~48MHz)(0000_0011)。

  3.FD控制

  可以配置为8bit或者16bit,若是配置为8bit,port D可以作为普通的IO,但是若是配置为16bit,则port D就不能作为普通的IO使用,上电复位默认是16bit。

USB2.0学习笔记连载(十八):keil实现寄存器的配置及相关函数讲解(二)

USB2.0学习笔记连载(十八):keil实现寄存器的配置及相关函数讲解(二)   4.flagABCD

  fifo 的flag工作在两种模式:indexed 和 fixed模式,通过pinflagADCD来控制。

USB2.0学习笔记连载(十八):keil实现寄存器的配置及相关函数讲解(二)

USB2.0学习笔记连载(十八):keil实现寄存器的配置及相关函数讲解(二)   5.sloe,slrd,slwr,pktend,fifoadr[1:0]

USB2.0学习笔记连载(十八):keil实现寄存器的配置及相关函数讲解(二)

USB2.0学习笔记连载(十八):keil实现寄存器的配置及相关函数讲解(二)   注意上述的描述,在同步状态下,是伴随ifclk的上升沿改变而改变,在异步状态下,是伴随 slwr或者slrd的变化而变化。

USB2.0学习笔记连载(十八):keil实现寄存器的配置及相关函数讲解(二)

  注意下面关于pktend的说法,这个是主机箱发送一个短的数据包时,使用此功能。PKTEND默认是低电平,且PKTEND可以在任何时候设置,但是需在SLWR或者SLRD之后执行。

 

 

 

 

 

 

 

 

 

 

 

 

USB2.0学习笔记连载(十八):keil实现寄存器的配置及相关函数讲解(二)

USB2.0学习笔记连载(十八):keil实现寄存器的配置及相关函数讲解(二)    6.revctl

USB2.0学习笔记连载(十八):keil实现寄存器的配置及相关函数讲解(二)   7.EPxCFG

USB2.0学习笔记连载(十八):keil实现寄存器的配置及相关函数讲解(二) USB2.0学习笔记连载(十八):keil实现寄存器的配置及相关函数讲解(二)    b7设定为1,激活端口,设置为0,不激活端口;

   b6控制方向,0是输出,1是输入;

   b5-4模式选择:

USB2.0学习笔记连载(十八):keil实现寄存器的配置及相关函数讲解(二)   b3缓冲区大小,0是512, 1是1024bytes;其中4和8只能是512,  2和6可选。

   b1-0是几个缓冲区:

  USB2.0学习笔记连载(十八):keil实现寄存器的配置及相关函数讲解(二)  7.1 EPXFIFOCFG

USB2.0学习笔记连载(十八):keil实现寄存器的配置及相关函数讲解(二)  此参数,若是对于out,设置为0x10,若是对于in,设置为0x08;设为自动模式。

  7.2 EPXAUTOINLENH:L

  注意,这个和上述的EPXCFG,假定端点2缓冲区设置为512字节,4倍缓冲,尽管这一端点占有了2048字节RAM,但CPU只认识“激活的”512字节缓冲区。这可以从寄存器长度看得出来,比如,EP2BCH:L是11位,可对1024字节的最大缓冲区长度进行计数,EP4BCH:L是10位,可对512自己的最大缓冲区长度进行计数。

USB2.0学习笔记连载(十八):keil实现寄存器的配置及相关函数讲解(二)

USB2.0学习笔记连载(十八):keil实现寄存器的配置及相关函数讲解(二)

8.CPU是否获取输入输出包

  当设定为AUTOIN = 1时,如下图所示,就不需要CPU参与,直接写给host。

USB2.0学习笔记连载(十八):keil实现寄存器的配置及相关函数讲解(二) USB2.0学习笔记连载(十八):keil实现寄存器的配置及相关函数讲解(二) USB2.0学习笔记连载(十八):keil实现寄存器的配置及相关函数讲解(二)

USB2.0学习笔记连载(十八):keil实现寄存器的配置及相关函数讲解(二) USB2.0学习笔记连载(十八):keil实现寄存器的配置及相关函数讲解(二) USB2.0学习笔记连载(十八):keil实现寄存器的配置及相关函数讲解(二)  9.中断

USB2.0学习笔记连载(十八):keil实现寄存器的配置及相关函数讲解(二)   10.端口可选功能 portXFG

  对于下面端口,如果使用SLCS功能,则需要将b6设置为1.

USB2.0学习笔记连载(十八):keil实现寄存器的配置及相关函数讲解(二)

USB2.0学习笔记连载(十八):keil实现寄存器的配置及相关函数讲解(二)   11.I2C寄存器配置

USB2.0学习笔记连载(十八):keil实现寄存器的配置及相关函数讲解(二)   12.自动指针功能

USB2.0学习笔记连载(十八):keil实现寄存器的配置及相关函数讲解(二) 13.OEABC使能

  0~7对应 A,B,C的7个端口USB2.0学习笔记连载(十八):keil实现寄存器的配置及相关函数讲解(二) USB2.0学习笔记连载(十八):keil实现寄存器的配置及相关函数讲解(二)   14.pinflagABCD

  通过下面的几个编程,可以实现对端点那个是空,哪个是满,PF空,FF满。

USB2.0学习笔记连载(十八):keil实现寄存器的配置及相关函数讲解(二) USB2.0学习笔记连载(十八):keil实现寄存器的配置及相关函数讲解(二)   15.FIFO reset

USB2.0学习笔记连载(十八):keil实现寄存器的配置及相关函数讲解(二)   16.FIFOPINPOLAR

USB2.0学习笔记连载(十八):keil实现寄存器的配置及相关函数讲解(二)

USB2.0学习笔记连载(十八):keil实现寄存器的配置及相关函数讲解(二)

  在硬件设计中,将SLRD直接拉高处理;PKEND也直接拉高,不做包处理;

  FIFOPINPOLAR = 0x04; //BIT[5:0] = {PKTEND, SLOE, SLRD, SLWR, EMPTY, FULL}

   //Set SLWR High Valid; PKTEND,SLOE,SLRD EMPTY, FULL Low Active

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  17.INPKTEND/OUTPKTEND

  USB2.0学习笔记连载(十八):keil实现寄存器的配置及相关函数讲解(二) USB2.0学习笔记连载(十八):keil实现寄存器的配置及相关函数讲解(二) USB2.0学习笔记连载(十八):keil实现寄存器的配置及相关函数讲解(二)   18.portACFG

USB2.0学习笔记连载(十八):keil实现寄存器的配置及相关函数讲解(二) USB2.0学习笔记连载(十八):keil实现寄存器的配置及相关函数讲解(二)   19.USBCS

USB2.0学习笔记连载(十八):keil实现寄存器的配置及相关函数讲解(二) USB2.0学习笔记连载(十八):keil实现寄存器的配置及相关函数讲解(二)




原标题:USB2.0学习笔记连载(十八):keil实现寄存器的配置及相关函数讲解(二)

关键词:函数

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

境外账户汇款国外:https://www.goluckyvip.com/tag/72925.html
bvi境外开户:https://www.goluckyvip.com/tag/72927.html
节日季期间:https://www.goluckyvip.com/tag/7293.html
在国外期货开户:https://www.goluckyvip.com/tag/72930.html
境外外汇开户:https://www.goluckyvip.com/tag/72931.html
买国外股票如何开户:https://www.goluckyvip.com/tag/72932.html
皇帝的皇宫=:https://www.vstour.cn/a/363188.html
海南岛琼海市旅游景点 琼海市的旅游景点:https://www.vstour.cn/a/363189.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流