You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/doc-src/ip-blocks/udma_sdio.rst
+22-8Lines changed: 22 additions & 8 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -39,7 +39,7 @@ Features
39
39
- Following events are supported:
40
40
41
41
- Error event.
42
-
- End of transfer event.+
42
+
- End of transfer event.
43
43
44
44
- Four error status for receive operation
45
45
@@ -170,7 +170,9 @@ The command will be send in below sequence : -
170
170
171
171
CRC is calculated based on `x7+x3+1` polynomial function. CRC will calculated on Command opcode and argument field value.
172
172
173
-
The uDMA SDIO sends a stop command to communicate end of command transfer to the external device. Below is the format of end of command.
173
+
The uDMA SDIO sends the stop command after sending all the data blocks for multi block transfer. The stop command has fixed command opcode value of 6 and command argument value of 0.
174
+
Stop command packet is automatically created by SDIO and is transparent to users. The uDMA SDIO reads BLOCK_NUM bit DATA_SETUP CSR to determine the number of blocks to be transferred.
175
+
In case of multi block transfer, BLOCK_NUM bit DATA_SETUP CSR must be non zero. The stop command will be sent in below sequence: -
| Bit position | 47 | 46 | [45:40] | [39:8] | [7:1] | 0 |
@@ -278,11 +280,11 @@ a) When command response is needed
278
280
b) When command response is not needed
279
281
- RWN bit of DATA_SETUP CSR is 0 and EN bit of DATA_SETUP CSR is 1 and command is sent.
280
282
281
-
To initiate Tx operation, uDMA Core will drive 1 on `sddata_oen_o` line. Data will be transmitted over `sddata_o` data lines in below sequence: -
283
+
To initiate Tx operation, uDMA sdio will drive 1 on `sddata_oen_o` line. Data will be transmitted over `sddata_o` data lines in below sequence: -
282
284
283
285
`Start bit -> Data -> CRC - > End`
284
286
285
-
To send start bit, the uDMA SDIO will drive the `sddata_o` will value 0. CRC for Tx operation is calculated based on `x16+x12+x5+1` polynomial function. CRC is calculated by the SDIO on the data received from the L2 memory.
287
+
To send start bit, the uDMA SDIO will drive the `sddata_o` with value 0. CRC for Tx operation is calculated based on `x16+x12+x5+1` polynomial function. CRC is calculated by the SDIO on the data received from the L2 memory.
286
288
287
289
To get transmit data from L2 memory TX FIFO requests data from the uDMA core by asserting both the READY (space available) and REQ (request a new transaction) signals. The uDMA core arbitrates among multiple peripherals on receiving the REQ signal. When the SDIO TX channel is enabled and wins arbitration, the uDMA core issues a GNT (grant) signal and places the valid data read from L2 memory on the bus along with asserting VALID signal.
288
290
Tx FIFO stores this received data and keeps the READY and REQ signals asserted as long as the aforementioned conditions remain valid. The uDMA core de-asserts the VALID signal in the following clock cycle and reasserts it only when new data is available for transmission. Initially, after reset or power-up, READY/REQ are asserted since the FIFO is empty.
@@ -314,12 +316,15 @@ The data is then written into L2 memory at the address specified by RX_SADDR, wi
314
316
315
317
CRC for both Rx and Tx operation is calculated based on `x16+x12+x5+1` polynomial function.
316
318
319
+
.. note:: The uDMA SDIO module does not support CRC error detection for externally received command responses or data.
320
+
321
+
317
322
Interrupt
318
323
~~~~~~~~~
319
324
320
325
uDMA SDIO generates the following interrupts:
321
326
322
-
- Error interrupt: Raised by uDMA SDIO when it encounter error while performing command-response reception or Rx/Tx operation.
327
+
- Error interrupt: Raised by uDMA SDIO when it encounter timeout error while performing command-response reception or Rx operation.
323
328
- End of transfer interrupt: Raised by uDMA SDIO after successfully completing Rx/Tx operation.
324
329
- Rx channel interrupt: Raised by uDMA core's Rx channel after pushing the last byte of RX_SIZE bytes into core RX FIFO.
325
330
- Tx channel interrupt: Raised by uDMA core's Tx channel after pushing the last byte of TX_SIZE bytes into core TX FIFO.
@@ -373,7 +378,8 @@ A CSR's volatility is indicated by its "type".
373
378
374
379
Details of CSR access type are explained `here <https://docs.openhwgroup.org/projects/core-v-mcu/doc-src/mmap.html#csr-access-types>`_.
375
380
376
-
The CSRs RX_SADDR and RX_SIZE specify the configuration for the transaction on the RX channel. The CSRs TX_SADDR and TX_SIZE specify the configuration for the transaction on the TX channel. The uDMA Core creates a local copy of this information at its end and uses it for current ongoing transactions.
381
+
The CSRs RX_SADDR and RX_SIZE specify the configuration for the transaction on the RX channel. The CSRs TX_SADDR and TX_SIZE specify the configuration for the transaction on the TX channel.
382
+
The uDMA Core creates a local copy of this information at its end and uses it for current ongoing transactions.
0 commit comments