snakehl
驱动牛犊
驱动牛犊
  • 注册日期2001-07-29
  • 最后登录
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2637回复:9

哪里有PDIUSBD12的时序图?

楼主#
更多 发布于:2001-10-04 11:09
请问:
  哪里有PDIUSBD12芯片的时序图?我是采用总线分时复用的方式进行通信的,就是A0是高电平,地址和数据线分时复用。但是我想看看PDISUBD12的时序图,不知道那里有?
seansha
驱动牛犊
驱动牛犊
  • 注册日期2001-09-28
  • 最后登录
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2001-10-04 14:38
到philips的网站,有d12的datasheet
snakehl
驱动牛犊
驱动牛犊
  • 注册日期2001-07-29
  • 最后登录
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2001-10-04 17:26
我下载了,但是上面没有。
wzr
wzr
驱动牛犊
驱动牛犊
  • 注册日期2001-08-23
  • 最后登录2002-08-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2001-10-04 20:27
应该有哦!
总线分时复用时序和一般的RAM读写差不多,只是D12要求一写一读间要有500ns以上的间隔。
A0应该是不可能恒为高的。
[wzr 编辑于 2001-10-04 20:29]
snakehl
驱动牛犊
驱动牛犊
  • 注册日期2001-07-29
  • 最后登录
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2001-10-07 09:24
 我的一段程序代码
下面是我的一段程序代码:
不知道按照时序对不对:
read interrupt register:只是读中断寄存器的第一字节
mov a,#0f4h
clr p1.6
lcall D12GetStatus
setb p1.6 (PDIUSBD12的片选)
D12Write:
movx @dptr,a
nop
nop
nop
nop
ret
D12Command:
mov dptr,#01h
lcall D12Write
dec dpl
ret
D12GetStatus:
lcall D12Command
D12Read:
movx a,@dptr
nop
nop
nop
nop
ret

 
 
wzr
wzr
驱动牛犊
驱动牛犊
  • 注册日期2001-08-23
  • 最后登录2002-08-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2001-10-08 21:47
看不明白你的硬件连线
另外你的程序我也用过,没调通。后来改用philips的EPP示例的c程序,用Keil C编译后,通过了。
读写调试可将时钟设为4MHz以外的其他频率,用示波器一测便知。
nkalan
驱动牛犊
驱动牛犊
  • 注册日期2001-08-20
  • 最后登录
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2001-10-09 09:29
对阿,A0怎么能常高
应该接到一个i/o口上
wwffllf
驱动小牛
驱动小牛
  • 注册日期2001-07-14
  • 最后登录2004-11-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2001-10-09 10:03
请问哪儿有PHILIPS的EPP的C程序啊,
怎么我的EPPHAL.C里面什么也没有?
只有一个空的void dma_start(PIO_REQUEST pio)?
哪位大侠给指点一下或给我发一个有关EPP的程序
wwffllff@263.net
谢谢了
我告诉你们,我可是身经百战了。见的多了,驱动开发,哪个版我没灌过? 你们要知道,驱动的▲版,那比你们不知道厉害到哪里去了,我在那谈笑风声。 你们有一个好,就是什么话题都灌。但是灌来灌去的问题,都 too simple, sometimes naive! 懂了没有? 所以说灌水啊,关键是要提高自己的知识水平。 哦,你们啊,不要想弄个大坑,re上十大,再羞辱一番?你们啊.... naive !! 改编于《江core发飙》
snakehl
驱动牛犊
驱动牛犊
  • 注册日期2001-07-29
  • 最后登录
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2001-10-09 11:42
下面是我的一段程序(很简单的,只是验证能够在设备枚举的时候能够收到来自PC的8字节的setup包就可以了,mcs51编写,用ICES-G3仿真机调试,很古老的一种),我怎么看都找不到原因在哪里,搞的我一个国庆过的很不爽。问题在下面的程序段中我有提示的地方。那位大虾能够搞定,我绝对奉送30分。
;-----------------------------------------------------------
;usb standard command packge
;-----------------------------------------------------------bmrequesttype equ 20h
brequest equ 21h
wvalue0 equ 22h
wvalue1 equ 23h
windex0 equ 24h
windex1 equ 25h
wlength0 equ 26h
wlength1 equ 27h
;-----------------------------------------------------------;d12 signal pin map
CS bit p1.6
PinSuspend bit p1.7
;-----------------------------------------------------------; main.asm: main program
;-----------------------------------------------------------org 00h
ljmp startup
org 03h
ljmp Int0Break

org 30h
startup:
clr ea ;close interrupt
mov sp,#55h ;set stack
clr rs0
clr rs1 ;select register
clr It0 ;low to trigger
clr Ex0 ;close interrupt
clr CS ;pdiusbd12 chip
lcall Delay_100ms
mov a,#0f3h ;set mode
lcall D12Command
mov a,#00010110b
lcall D12Write
mov a,#01000010b
lcall D12Write
setb ea ;open interrupt
setb ex0
Mainloop:
nop
ljmp Mainloop
;-----------------------------------------------------------;Delay_500us
;-----------------------------------------------------------Delay_500us:
push 0
mov 0,#0h
d500:
djnz 0,d500
pop 0
ret
;-----------------------------------------------------------;Delay_100ms
;-----------------------------------------------------------Delay_100ms:
push 0
mov 0,#200
d100: call Delay_500us
djnz 0,d100
pop 0
ret
;-----------------------------------------------------------;D12Write
;-----------------------------------------------------------D12Write:
movx @dptr,a
nop
nop
nop
ret
;-----------------------------------------------------------;D12Command
;-----------------------------------------------------------D12Command:
mov dptr,#01h
lcall D12Write
dec dpl
ret
;-----------------------------------------------------------;D12GetStatus
;-----------------------------------------------------------D12GetStatus:
lcall D12Command
D12Read:
movx a,@dptr
nop
nop
nop
ret
;-----------------------------------------------------------;Int0Break
;-----------------------------------------------------------Int0Break:
mov a,#0f4h ;read register
lcall D12GetStatus ;read one_byte
lcall FindInterruptSource
reti
FindInterruptSource:
jb acc.7,SuspendChange
jb acc.6,BusReset
jb acc.0,Ep0Out
jb acc.1,Ep0In
jb acc.2,Ep1Out
jb acc.3,Ep1In
jb acc.4,Ep2Out
jb acc.5,Ep2In
SuspendChange:
BusReset:
; setb PinSuspend
ret
Ep1Out:
mov a,#42h
ljmp D12GetStatus
Ep2Out:
mov a,#44h
ljmp D12GetStatus
Ep2In:
mov a,#45h
ljmp D12GetStatus
Ep1In:
mov a,#43h
ljmp D12GetStatus
Ep0In:
mov a,41h
ljmp D12GetStatus
Ep0Out:
mov a,#40h ;read last transaction
lcall D12GetStatus
;这里读出的一个字节是21h,说明是setup包,而且传送成功了,我想不知道这能不能说明至少我的硬件电路应该没有问题,否则是收不到数据的
mov a,#0
;lcall D12Command ;select endpoint0
lcall D12GetStatus
;我采取了跟踪:select endpoint0后读出的一个字节是01h,说明端点0是满的,然后连续读出10个字节,可是读出的字节是:c0,c0,80h,80h,80h,80h,80h,80h,80h,80h,或者有时候读出的都是c0,这个跟在设备枚举时host发送的GET_DESCRIPTOR相差实在是太远了。我觉得我的程序已经到了很简单的程度,实在是找不到办法。
我的硬件连接:p1.6----PDIUSBD12的cs,p1.7----PDIUSBS12的suspend,AT89C52的ALE------PDIUSB12的ALE,PDIUSBD12的rd,wr和AT89C52的rd,wr相连。PDISUBD12的A0通过一个10k的电阻接到电源。PDIUSBD12由外部提供电源,不由PC提供。即:通信采用的是总线分时复用方式
mov r0,#bmrequesttype
mov r7,#10
mov a,#0f0h
lcall D12Command ;read buffer
CopySD:
lcall D12Read
mov @r0,a
inc r0
djnz r7,CopySD
mov a,#0f1h ;acknowledge
lcall D12Command
mov a,#0f2h ;clear buffer
lcall D12Command
mov a,#01h ;select endpoint1
lcall D12Command
mov a,#0f1h
lcall D12Command
ret
欢迎做答。
我做了一个实验:
org 00h
ljmp startup
org 03h
ljmp Int0Break

org 30h
startup:
clr ea ;close interrupt
mov sp,#55h ;set stack
clr rs0
clr rs1 ;select register
clr It0 ;low to trigger
clr Ex0 ;close interrupt
clr CS ;pdiusbd12 chip
lcall Delay_100ms
mov a,#0f3h ;set mode
lcall D12Command
mov a,#00010110b
lcall D12Write
mov a,#01001011b ;4M
lcall D12Write
setb ea ;open interrupt
setb ex0
只是执行上面的程序段,用示波器观察看到了PDIUSBD12的clkout脚输出的是4M的波形,我想这至少说明我对PDIUSBD12的setmode中的写和读都是正确的,即读写的时序是正确的。那么我上面的问题是什么原因了? 而且12M可以输出。
 
snakehl
驱动牛犊
驱动牛犊
  • 注册日期2001-07-29
  • 最后登录
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2001-10-09 22:15
请问哪儿有PHILIPS的EPP的C程序
也给我一个:snakehl@263.net
谢谢了
游客

返回顶部