Microchip® Advanced Software Framework

hsmci.c File Reference

SAM HSMCI driver.

Copyright (c) 2012-2019 Microchip Technology Inc. and its subsidiaries.

#include <asf.h>
#include "conf_board.h"
#include "sd_mmc_protocol.h"
#include "sysclk.h"
#include "pmc.h"
#include "hsmci.h"

Macros

#define hsmci_debug(...)
 
#define SD_MMC_HSMCI_MEM_CNT   1
 
#define SD_MMC_HSMCI_SLOT_0_SIZE   1
 

Functions

bool hsmci_adtc_start (sdmmc_cmd_def_t cmd, uint32_t arg, uint16_t block_size, uint16_t nb_block, bool access_block)
 Send an ADTC command on the selected slot An ADTC (Addressed Data Transfer Commands) command is used for read/write access. More...
 
bool hsmci_adtc_stop (sdmmc_cmd_def_t cmd, uint32_t arg)
 Send a command to stop an ADTC command on the selected slot. More...
 
void hsmci_deselect_device (uint8_t slot)
 Deselect a slot. More...
 
uint8_t hsmci_get_bus_width (uint8_t slot)
 Return the maximum bus width of a slot. More...
 
uint32_t hsmci_get_response (void)
 Return the 32 bits response of the last command. More...
 
void hsmci_get_response_128 (uint8_t *response)
 Return the 128 bits response of the last command. More...
 
void hsmci_init (void)
 Initializes the low level driver. More...
 
bool hsmci_is_high_speed_capable (void)
 Return the high speed capability of the driver. More...
 
bool hsmci_read_word (uint32_t *value)
 Read a word on the line. More...
 
static void hsmci_reset (void)
 Reset the HSMCI interface. More...
 
void hsmci_select_device (uint8_t slot, uint32_t clock, uint8_t bus_width, bool high_speed)
 Select a slot and initialize it. More...
 
void hsmci_send_clock (void)
 Send 74 clock cycles on the line of selected slot Note: It is required after card plug and before card install. More...
 
bool hsmci_send_cmd (sdmmc_cmd_def_t cmd, uint32_t arg)
 Send a command on the selected slot. More...
 
static bool hsmci_send_cmd_execute (uint32_t cmdr, sdmmc_cmd_def_t cmd, uint32_t arg)
 Send a command. More...
 
static void hsmci_set_speed (uint32_t speed, uint32_t mck)
 Set speed of the HSMCI clock. More...
 
static bool hsmci_wait_busy (void)
 Wait the end of busy signal on data line. More...
 
bool hsmci_write_word (uint32_t value)
 Write a word on the line. More...
 

Variables

static uint16_t hsmci_block_size
 Size block requested by last hsmci_adtc_start() More...
 
static uint16_t hsmci_nb_block
 Total number of block requested by last hsmci_adtc_start() More...
 
static uint32_t hsmci_transfert_pos
 Current position (byte) of the transfer started by hsmci_adtc_start() More...