Hello
I am using cy7c67200 as a full speed host controller to communiate with GSM modem.
Host is working in co-processor mode and communicating with master CPU via HPI.
TD_ListDone Interrupt is used inform master CPU of transfer completion.
Most of the time the transmission is fine, but several times a day master CPU informs, that transmission was lost. I took a closer look at this issue using oscilloscope. I revealed that the Host stops generating TD_ListDone interrupt (which isn't disabled in any way in program, also suspend mode is not used). When reading Endpoint Status Register after failure, there is only a NAK bit set (which is OK, beacuse most of the time modem doesn't have data to transfer).
My driver supports error recovery. but new transmission are initialised in TD_ListDone ISR, so when if it fails, whole transmission stops. Communication is only using Bulk Endpoints and there are no transmission-free time intervals, it;s running all the time.
Why the Host stops genrating these interrupts ? I cannot find a valid reason for this beahaviour, is it rather software (driver code, wrong host settings) or hardware problem (device hangs bus or sth.) ?
|