[PATCH] SPI SD-Card: setup valid CRC-7 for STOP_TRANSMISSION command.
Sebastian Huber
sebastian.huber at embedded-brains.de
Fri Oct 4 08:14:44 UTC 2013
On 2013-10-04 09:34, Pavel Pisa wrote:
> From: Pavel Pisa <ppisa at pikron.com>
>
> STOP_TRANSMISSION command is used to finish READ_MULTIPLE_BLOCK
> command and its format is regular command format.
> It requires valid CRC-7 to have effect at least on
> some card brands else it is ignored and attempt
> to issue next READ or WRITE commands results in
> illegal command condition (0x04) preceded by strange
> (0x3f) for tested card.
>
> Signed-off-by: Pavel Pisa <ppisa at pikron.com>
> ---
> c/src/libchip/i2c/spi-sd-card.c | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/c/src/libchip/i2c/spi-sd-card.c b/c/src/libchip/i2c/spi-sd-card.c
> index 5a30451..89d5fb5 100644
> --- a/c/src/libchip/i2c/spi-sd-card.c
> +++ b/c/src/libchip/i2c/spi-sd-card.c
> @@ -501,8 +501,12 @@ static int sd_card_send_register_command( sd_card_driver_entry *e, uint32_t comm
> static int sd_card_stop_multiple_block_read( sd_card_driver_entry *e)
> {
> int rv = 0;
> + uint8_t crc7;
>
> SD_CARD_COMMAND_SET_COMMAND( e->command, SD_CARD_CMD_STOP_TRANSMISSION);
> + SD_CARD_COMMAND_SET_ARGUMENT( e->command, 0);
> + crc7 = sd_card_compute_crc7( e->command + 1, 5);
> + SD_CARD_COMMAND_SET_CRC7( e->command, crc7);
> rv = rtems_libi2c_write_bytes( e->bus, e->command, SD_CARD_COMMAND_SIZE);
> RTEMS_CHECK_RV( rv, "Write stop transfer token");
>
>
Since the command uses only constants is it sufficient to use
SD_CARD_COMMAND_SET_ARGUMENT( e->command, 0);
SD_CARD_COMMAND_SET_CRC7( e->command, 0x7a);
?
--
Sebastian Huber, embedded brains GmbH
Address : Dornierstr. 4, D-82178 Puchheim, Germany
Phone : +49 89 189 47 41-16
Fax : +49 89 189 47 41-09
E-Mail : sebastian.huber at embedded-brains.de
PGP : Public key available on request.
Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.
More information about the devel
mailing list