This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

How should SIO_flush be used?

I am attempting to find the root cause of a McASP problem where data is missing which causes all data that follows to be misaligned.

Until I find the cause I would like to use SIO_flush to "reset" this McASP. Is it possible to restore it to the initial state and if so how do you start it up again? It seems that I can not just call:

issue
issue
issue
reclaim
......
detect error -> flush
issue
reclaim

This doesn't seem to work.

What should I be doing?

Thanks

Chris

  • Chris,

    I'm not familiar with the SIO module so I'm trying to find out where the SIO software driver for the McASP is coming from. I don't know whether or not it will reset the McASP. I can help you find the folks more knowledgeable with that driver.

    I'm assuming this is related to this post. Asides from using DSP/BIOS, is there some other software you're using?

  • Yes it is related to the other post. I am not sure if they are related methods of "resetting" the McASP. They may be completely unrelated.

    I see now that I was looking at the User's Guide and not the API Reference Guide. I have not done a lot of work with DSP/BIOS. This will help. I will read it and look for an answer.

    I guess my question after reading the attached text is: do I need to SIO_delete and SIO_create again to use the mcasp or what? What needs to be done to use it after it has been flushed?

    Thanks

    Chris

  • This sure is holding up progress. I hope you can find someone "more knowledgeable" on this subject soon. 
    Thanks

  • c0l0jar0,

    I have moved this thread to the device forum in hopes this question will be answered more rapidly.

  • c0l0jar0,

    Thanks for your post.

    In my suggestion, instead of using SIO_flush, it would be advisable to use  Mcasp_IOCTL_STOP which will abort all queued up io packets. Basically, Mcasp_IOCTL_STOP or the Mcasp_IOCTL_CANCEL_PENDING_IO (to cancel the pending buffers) get everything back into a fresh "start up" condition. Why don't you try this?

    Additionally, In the "Mcbsp_localAbortReset" call, we take all the packets from the queue and return it back to the SIO module.

    For more details, please refer the below E2E thread for SIO module but it is referred for McBSP, still you could check for McASP:

    http://e2e.ti.com/support/embedded/tirtos/f/355/t/180225.aspx

    Thanks & regards,

    Sivaraj K

    ------------------------------------------------------------------------------------------------------- 
    Please click the Verify Answer button on this post if it answers your question.
    -------------------------------------------------------------------------------------------------------