Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob

Sample codes for enCore's OUT endpoint?

Sample codes for enCore's OUT endpoint?

Anonymous
Not applicable
Question: Are there any sample codes for enCore's OUT endpoint?

 

Answer:

No. Currently, the enCore's reference designs only use IN endpoint. There're a couple things you need to do.

1.  You need to add the ep2 info into your ep descriptor table and specify that ep2 is an OUT ep.

2.  You need to add code to handle ep2 ISR. Below are some suggestions for EP2_ISR's error checking: EP2_ISR:

push A

push X

iord Ep2_Count ; error checking

and A, DATA_VALID ; Is the data valid?

jz endpoint2_ISR_done ; do something about it. In this example, just simply exit the ISR.

iord Ep2_Mode ; Note: a NAK does cause an interrupt. Is it a NAK and A, EP_ACK ;interrupt? If yes, we're not ready. 

Exit jz endpoint2_ISR_done

iord Ep2Count

and A,BYTE_COUNT ; make sure data byte count is <= 10 bytes

cmp A,0Bh

jnc endpoint2_ISR_done

iord Ep2_Count

and A, DATA_TOGGLE ; Did the host send the same DataToggle?

xor A, [ep2_data_toggle]

jz .good_data_toggle ;If not, continue

mov A, ACK_OUT ; If bad data toggle, re-arm the ep (or set a flag to process the event in the main loop)

iowr Ep2_Mode

jmp endpoint2_ISR_done .good_data_toggle: ; ...Done Error checking. If you get here, the data was received error free.

mov A, DATA_TOGGLE ; It's an ACK interrupt and byte count < ep length, toggle data_toggle bit

xor [ep2_data_toggle], A ;... ;... endpoint2_ISR_done:

pop X

pop A

reti ; return with interrupts enabled

0 Likes
248 Views
Contributors