Xilinx / Xilinx/embeddedsw

iic_v3_1

Open
#8 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
HTML
Stars
1.2k
Forks
1.1k
PR merge metrics
No merged PRs in 30d

Description

In XIic_DynMasterSend why are the XIIC_INTR_TX_ERROR_MASK and XIIC_INTR_TX_EMPTY_MASK interrupts cleared and enabled AFTER writing the address and data to the TX FIFO? When trying to talk to a slave in reset, I am expecting a NACK event to be generated. However, code based on the dynamic eeprom example is getting stuck waiting for TransmitComplete to zero out and the status handler never gets called with the NACK event.
I believe this happens because by the time the interrupts are cleared and enabled, the address in the FIFO is already sent and the TX Error Status bit is set. Clearing and enabling interrupt will lose the NACK event with no handlers called.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reading XIic_DynMasterSend and the status handler, focusing on when the TX FIFO is written versus when XIIC_INTR_TX_ERROR_MASK and XIIC_INTR_TX_EMPTY_MASK are cleared and enabled. Reproduce the transfer with a slave held in reset and verify that the NACK event reaches the handler and TransmitComplete does not remain stuck.

Written by the indexing model from the issue text.

Assessment

Domain
embedded-iot
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.