Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

IP/Subsystem: Fix the I2S Tx interrupt masking issue if the requested… #140

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

ahshokry
Copy link

If requested data length isn't integer multiple of (FIFO - THRE), the interrupt of I2S will be masked.

Let's assume FIFO = 16, THRE = 3, and requested data length is 20 bytes.

First, i2s_tx_master_tx_ISR_proc will call i2s_tx_master_write_samples with sample_cnt = (16 - 3) = 13.
Second, i2s_tx_master_write_samples will update sample_cnt to be 0, so the loop will exit.

Upon receiving FIFO interrupt, i2s_tx_master_tx_ISR_proc will call i2s_tx_master_write_samples again with sample_cnt = 13.
i2s_tx_master_write_samples will update sample_cnt to be 13 - 7 (20 requested - 13 sent the previous round) = 6

i2s_tx_master_write_samples will find that dev->xfr_len == *size, so it will increment sys_cnt and call application callback.
i2s_tx_master_tx_ISR_proc will iterate one more time because sample_cnt didn't reach zero yet.
Now, the condition if (dev->sys_cnt == dev->usr_cnt) will be true, so the interrupt will be masked.

… data length isn't integer multiple of (FIFO - THRE)
@fanghuaqi
Copy link
Contributor

Sphinx link check result


example/example.rst:75: [broken] https://embarc.org/pdf/embARC_appnote_how_to_use_smart_home_iot.pdf: 404 Client Error: Not Found for url: https://embarc.org/pdf/embARC_appnote_how_to_use_smart_home_iot.pdf
getting_started/hardware_requirement.rst:26: [broken] http://www.huamaosoft.cn/bluetooth.asp?id=1: HTTPConnectionPool(host='www.huamaosoft.cn', port=80): Max retries exceeded with url: /bluetooth.asp?id=1 (Caused by NewConnectionError(': Failed to establish a new connection: [Errno -2] Name or service not known',))

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants