ATA Task File Transfer Using the RW_MULTIPLE_REGISTER (RW_REG) Command
This command involves data transfer between the CE-ATA card device and the controller. To send a data
command, the controller needs a command argument, total data size, and block size. Software receives or
sends data through the FIFO buffer.
†
Implementing ATA Task File Transfer
To implement an ATA task file transfer (read or write), perform the following steps:
†
1. Write the data size in bytes to the
bytcnt
register.
bytcnt
must equal the block size, because the
controller expects a single block transfer.
†
2. Write the block size in bytes to the
blksiz
register.
†
3. Write the
cmdarg
register with the beginning register address.
†
You must set the
cmdarg
,
cmd
,
blksiz
, and
bytcnt
registers according to the tables in
Register Settings
for ATA Task File Transfer
.
†
Related Information
Register Settings for ATA Task File Transfer
on page 11-51
Refer to this table for information on how to set these registers.
Register Settings for ATA Task File Transfer
Table 11-23: cmdarg Register Settings for ATA Task File Transfer
†
Comment
Value
Bit
Set to 0 for read operation or set to 1 for write operation
1 or 0
31
Reserved (bits set to 0 by host processor)
0
30:24
Starting register address for read or write (DWORD aligned)
0
23:18
Register address (DWORD aligned)
0
17:16
Reserved (bits set to 0 by host processor)
0
15:8
Number of bytes to read or write (integral number of DWORD)
16
7:2
Byte count in integral number of DWORD
0
1:0
Table 11-24: cmd Register Settings for ATA Task File Transfer
†
Comment
Value
Bit
1
start_cmd
CCS is not expected
0
ccs_expected
Set to 1 if RW_BLK or RW_REG read
0 or 1
read_ceata_device
No clock parameters update command
0
update_clk_regs_only
0
card_num
Altera Corporation
SD/MMC Controller
11-51
ATA Task File Transfer Using the RW_MULTIPLE_REGISTER (RW_REG) Command
cv_54011
2013.12.30