Jump to content

    
Sign in to follow this  
vvj

GPIF на FX2

Recommended Posts

GPIF не могу заставить работать - все управляющие и адрес по единице(смотрел на осц.)

Есть пару вопросов по инитциализации из TRM страница 277/пункт 2 - нафиг нужен и почему в приведённом ниже примере читают из 0x00AB ?

Share this post


Link to post
Share on other sites
GPIF не могу заставить работать - все управляющие и адрес по единице(смотрел на осц.)

Есть пару вопросов по инитциализации из TRM страница 277/пункт 2 - нафиг нужен и почему в приведённом ниже примере читают из 0x00AB ?

 

Пиши подробней вопрос, мне некогда по пдфкам лазить.

Ты может описатель временной диаграммы криво создаёшь...

На 277 странице вообще порты IO описаны.

 

$if (EnableGPIF)

;=-=-=-=-=-=-=-=-=-=-G-P-I-F-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

nop

/* WriteX #IFCONFIG, #11000000b; //external/internal_CLOCK,30/48,out_enable,invert,Async,Test_pinout,1,0(GPIF)

nop

mov OEB,0x00

mov a,IOB

JNZ NotError

mov dptr,#USBCS ; bit7 - Mode jf PLL (480/12)

movx a,@dptr

ORL a,#00001000b

movx @dptr,a

whileAcc0:

mov a,IOB

JZ whileAcc0

mov dptr,#USBCS ; bit7 - Mode jf PLL (480/12)

movx a,@dptr

ANL a,#11110111b

movx @dptr,a

NotError:*/

CALL ResetPipe

nop

WriteX #IFCONFIG, #11000010b; //external/internal_CLOCK,30/48,out_enable,invert,Async,Test_pinout,1,0(GPIF)

nop

WriteX #GPIFABORT,#0xFF; //Abort All Pending Function

/* MOV DPTR,#PORTECFG; //

MOV A,#0x00

MOVX @DPTR,A

 

*/

 

nop

WriteX #EP2FIFOCFG,#00000000b;

nop

WriteX #EP4FIFOCFG,#00000000b;

nop

WriteX #EP6FIFOCFG,#00000000b;

nop

WriteX #EP8FIFOCFG,#00000000b;

nop; //CTL OutputMode

WriteX #GPIFCTLCFG,#00000000b ; if (x==1) 7-tristate, 0..6 - open-drain

/* MOV DPTR,#GPIFREADYCFG; //

MOVX a,@DPTR

ANL A,#01111111b ;SAS = 0

MOVX @DPTR,A*/

nop

WriteX #GPIFWFSELECT, #Sw_Sr_Fw_Fr_Def

nop

MOV DPTR,#GPIFIDLECS ; defined states of GPIF signals in IDLE

MOV A,#10000001b ; Data pin

MOVX @DPTR,A

nop

WriteX #GPIFIDLECTL, #11111111b ; CTL pin in IDLE

; MOV DPTR,#GPIFREADYSTAT; Current state of RDY pin

; MOVX a,@DPTR

; ANL A,#01111111b ;

; MOVX @DPTR,A

;------------Autopointer-------------------------;

ByteCounter DATA 128 ;

mov autoptrsetup, #00000111b ;

mov ByteCount_h,#high(ByteCounter) ; ; Hight byte of counter Autopointer

mov ByteCount_l,#low(ByteCounter) ;

;source: ;

mov autoptr1h,#high(mass) ;

mov autoptr1l,#low(mass) ;

;destination: ;

mov autoptrh2,#high(GPIF_WAVE_DATA) ;

mov autoptrl2,#low(GPIF_WAVE_DATA) ;

LCALL Autopointer ;

;------------------------------------------------;

/*

 

;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/

$endif

 

 

mov r1, #0

mov r3, #0

MOV IOD, #0x00

MOV OED, #0x01

MOV IOD, #0x00

MOV OEA, #0xFF

MOV IOA, #01010001b

 

;======Initialization Size Endpoint Paket=================

 

mov PacketSizeLow,#0x00

mov PacketSizeHigh,#0x02

mov dptr,#USBCS ; bit7 - Mode jf PLL (480/12)

movx a,@dptr

ANL a,#10000000b

JNZ PLL480 ; branch if HCM != 0

 

mov PacketSizeLow,#0x40

mov PacketSizeHigh,#0x00

PLL480:

 

$if (ControlEnable)

MOV OEE, #00001000b

mov IOE, #00001000b ; Test

$endif

 

nop

WriteX #EP4AUTOINLENH,PacketSizeHigh;

nop

WriteX #EP4AUTOINLENL,PacketSizeLow;

nop

WriteX #EP8AUTOINLENH,PacketSizeHigh;

nop

WriteX #EP8AUTOINLENL,PacketSizeLow;

 

Это работает.

Share this post


Link to post
Share on other sites
нафиг нужен и почему в приведённом ниже примере читают из 0x00AB ?

Не читают, а Peripheral_SetAddress( PERIPHCS );

Просто приводится пример, как пользовать вэйвформы.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this