I need to get some high caliber assistance with the USB engine on the LPC11_24. Working through the service ticket procedure over the past week and a half has resulted in virtually no progress. And waiting 24-48 hours between very brief and general suggestions is not helpful.
I have a deadline that is past due and am about to give up. I am in the Austin Texas area.
I was able to resolve the USB driver problem discussed a few months ago but it was not intuitive. I am now having a mystery concerning IAP entry. I cannot get the ISP invocation to work. I thought this would be straight forward and responses back from NXP support have told me that it works for them on the 11U24 but I cannot get it to work after a few days of trying. I believe I am getting to the IAP entry point but it doesn't go into the ISP mode, serial or USB. I have tried to set the IO0_1 and IO0_3 inputs to be detected at "0" level per other tips on NXP community but this doesn't work. I then tried just grounding the inputs prior to the IAP entry using a time delay and this doesn't work either.
1. Can the IAP entry and ISP command invocation be verified using the debug mode?
2. Is the only way to enter ISP mode through a hard reset? Is there a way to accomplish an IAP entry reset assuming that I have a circuit which forces a "0" level on the IO0_1 and IO0_3 inputs throughout the IAP reset sequence?
I am about to give up on the IAP entry for ISP programming because I don't think it works despite the comments to the contrary I have seen on NXP community. Can you confirm the command for ISP programming?
Any help would be appreciated.
I am having great difficulty writing the firmware for the USB on my application. I have written firmware for several USB devices in my career but mostly assembly language. So I am quite familiar with the USB but not very familiar writing code with API's. I was hoping that using the USB ROM API would be fairly straightforward but I am having great difficulty.
After giving up on the API, I decided to just write my embedded driver in the device. I am trying to initialize the USB registers and have this question for starters:
Service Request 2-5045045371
Chapter 11 of the User's Manual for the subject chip (UM10462) provide information on the USB registers. I have decided to write my own functions to service the USB due to lack of success with the USB API driver.
Here are my questions relating to the following registers:
Endpoint Command/Status List
The register is to be programmed with the start of the Endpoint Command List. The lower 8 bits are assumed 00 since the list must be on 256 byte boundaries. The LPC11U24 manual defines the USB RAM area at the following:
0x20004000 - 0x20004800 2Kbytes
Does this mean that this register should be initialized to 0x20004000?
My device will be HID and have 2 endpoints inclusive of the Control Endpoint 0. I am going to limit the data IN and OUT payloads to 8 bytes in both the endpoints. Endpoint 1 will be used in the Interrupt mode. I will be managing the 8 byte payloads in firmware so only 8 bytes are needed in the buffer. For transactions requiring data lengths greater than 8, I will load the data in chunks of 8 bytes each and manage till the transaction is completed.
Can you define for me how the Endpoint Command/Status list needs to be initialized for my application? Particularly the EPX OUT and IN Buffer Address Offsets.
Are the Buffer Address Offsets from the location initialized in the EPLISTSTART register?
Since the start list requires 0x4F bytes, does this mean the buffers should start at location 0x20004850?
If the start location of the buffers is 0x20004850, how should the DATABUFSTART register be initialized?
I am not sure how to interpret the instruction in section 11.6.4 which states that this register indicates the page of the AHB address where the endpoint data can be located. Apparently only the top 10 bits are needed.
Thanks for the help.
Normally I use the USB samples from the LPCOpen, I can answer one of your question
Does this mean that this register should be initialized to 0x20004000? Yes.
But regarding to the other 4 question, please give me some time to check it.