Astra MCU SDK Peripheral Driver Library
 
Loading...
Searching...
No Matches

Functions for SDIO Driver. More...

Functions

sdio_status_en sdio_init (sdio_instance_en id)
 
sdio_status_en sdio_deinit (sdio_instance_en id)
 
sdio_status_en sdio_enable (sdio_instance_en id)
 
sdio_status_en sdio_disable (sdio_instance_en id)
 
sdio_status_en sdio_config (sdio_instance_en id, const sdio_config_t *config)
 
sdio_status_en sdio_sd_card_init (sdio_instance_en id, sdio_sd_card_config_t *config)
 
sdio_status_en sdio_sd_card_read (sdio_instance_en id, sdio_write_read_config_t *config)
 
sdio_status_en sdio_sd_card_write (sdio_instance_en id, sdio_write_read_config_t *config)
 
sdio_status_en sdio_sd_card_erase (sdio_instance_en id, uint32_t startAddr, uint32_t endAddr, sdio_erase_type_en eraseType)
 
sdio_status_en sdio_set_sd_clk_div (sdio_instance_en id, uint16_t clkDiv)
 
bool sdio_is_wp_set (sdio_instance_en id)
 
sdio_status_en sdio_set_host_bus_width (sdio_instance_en id, sdio_bus_width_en width)
 
sdio_status_en sdio_set_bus_width (sdio_instance_en id, sdio_bus_width_en width)
 
sdio_status_en sdio_set_host_speed_mode (sdio_instance_en id, sdio_bus_speed_mode_en speedMode)
 
sdio_status_en sdio_set_bus_speed_mode (sdio_instance_en id, sdio_bus_speed_mode_en speedMode)
 
sdio_status_en sdio_sel_bus_voltage (sdio_instance_en id, bool enable18VSignal)
 
void sdio_enable_card_voltage (sdio_instance_en id)
 
void sdio_disable_card_voltage (sdio_instance_en id)
 
sdio_status_en sdio_get_response (sdio_instance_en id, uint32_t *responsePtr, bool largeResponse)
 
sdio_status_en sdio_send_command (sdio_instance_en id, sdio_cmd_config_t const *config)
 
sdio_status_en sdio_init_data_transfer (sdio_instance_en id, sdio_data_config_t const *dataConfig)
 
sdio_status_en sdio_abort_transfer (sdio_instance_en id)
 
sdio_status_en sdio_write_protect (sdio_instance_en id, sdio_write_protect_en writeProtect)
 
uint32_t sdio_get_card_status (sdio_instance_en id)
 
uint32_t sdio_get_ocr (sdio_instance_en id)
 
sdio_status_en sdio_get_cid (sdio_instance_en id, uint32_t *cid)
 
sdio_status_en sdio_get_csd (sdio_instance_en id, uint32_t *csd)
 
uint32_t sdio_get_rca (sdio_instance_en id)
 
sdio_status_en sdio_get_scr (sdio_instance_en id, uint32_t *scr)
 
uint32_t sdio_get_present_state (sdio_instance_en id)
 
bool sdio_is_card_connected (sdio_instance_en id)
 
sdio_status_en sdio_software_reset (sdio_instance_en id, sdio_reset_en reset)
 
sdio_status_en sdio_get_block_count (sdio_instance_en id, uint32_t *block_count)
 
uint32_t sdio_get_normal_interrupt_status (sdio_instance_en id)
 
void sdio_clear_normal_interrupt_status (sdio_instance_en id, uint32_t status)
 
void sdio_set_error_interrupt_enable (sdio_instance_en id, uint32_t interrupt)
 
void sdio_clear_error_interrupt_status (sdio_instance_en id, uint32_t status)
 
void sdio_set_normal_interrupt_enable (sdio_instance_en id, uint32_t interrupt)
 
sdio_status_en sdio_buffer_write (sdio_instance_en id, uint32_t data)
 
uint32_t sdio_buffer_read (sdio_instance_en id)
 
sdio_status_en sdio_ops_go_idle (sdio_instance_en id)
 
sdio_status_en sdio_set_host_voltage (sdio_instance_en id)
 
sdio_status_en sdio_change_clock (sdio_instance_en id, uint32_t frequency)
 
void sdio_set_block_size_count (sdio_instance_en id)
 
sdio_status_en sdio_ops_send_io_rw_direct_cmd (sdio_instance_en id, uint32_t rwFlag, uint32_t functionNumber, uint32_t rawFlag, uint32_t registerAddress, uint32_t data)
 
sdio_status_en sdio_ops_sdio_send_op_cond (sdio_instance_en id, uint32_t *ocrReg, uint32_t cmdArgument)
 
sdio_status_en sdio_ops_select_card (sdio_instance_en id)
 
sdio_status_en sdio_fetch_rca (sdio_instance_en id)
 
sdio_status_en sdio_cmd_rx_data (sdio_instance_en id, sdio_data_config_t *pcmd)
 
sdio_status_en sdio_cmd_tx_data (sdio_instance_en id, sdio_data_config_t *pcmd)
 
void sdio_set_normal_interrupt_mask (sdio_instance_en id, uint32_t interruptMask)
 
ISR_CODE uint32_t sdio_isr (sdio_instance_en id)
 

Detailed Description

Functions for SDIO Driver.

Function Documentation

◆ sdio_init()

Initializes the specified SDIO host controller. This function typically enables clocks and performs basic register configuration for the SDIO peripheral. This function must be called before any other SDIO function is used.

Parameters
idSDIO instance ID.
Returns
sdio_status_en Status code indicating success or the reason for failure.

◆ sdio_deinit()

sdio_status_en sdio_deinit ( sdio_instance_en id)

Deinitializes the specified SDIO host controller. This typically disables clocks and resets the peripheral.

Parameters
idSDIO instance ID.
Returns
sdio_status_en Status code indicating success or the reason for failure.

◆ sdio_enable()

sdio_status_en sdio_enable ( sdio_instance_en id)

Enables the specified SDIO host controller.

Parameters
idSDIO instance ID.
Returns
sdio_status_en Status code indicating success or the reason for failure.

◆ sdio_disable()

sdio_status_en sdio_disable ( sdio_instance_en id)

Disables the specified SDIO host controller.

Parameters
idSDIO instance ID.
Returns
sdio_status_en Status code indicating success or the reason for failure.

◆ sdio_config()

sdio_status_en sdio_config ( sdio_instance_en id,
const sdio_config_t * config )

Configures the SDIO host controller with the provided settings.

Parameters
idSDIO instance ID.
configPointer to the SDIO initialization configuration structure (sdio_config_t).
Returns
sdio_status_en Status code indicating success or the reason for failure.

◆ sdio_sd_card_init()

sdio_status_en sdio_sd_card_init ( sdio_instance_en id,
sdio_sd_card_config_t * config )

Initializes the SD card connected to the specified SDIO instance. This function handles the necessary steps to bring the SD card to an operational state, including power-up sequence, command issuance, and configuration.

Parameters
idSDIO instance ID.
configPointer to the SD card configuration structure (sdio_sd_card_config_t).
Returns
sdio_status_en Status code indicating success or the reason for failure.

◆ sdio_sd_card_read()

sdio_status_en sdio_sd_card_read ( sdio_instance_en id,
sdio_write_read_config_t * config )

Reads data from the SD card. This function can be used for single or multiple block reads based on the configuration provided.

Parameters
idSDIO instance ID.
configPointer to the read configuration structure (sdio_write_read_config_t).
Returns
sdio_status_en Status code indicating success or the reason for failure.

◆ sdio_sd_card_write()

sdio_status_en sdio_sd_card_write ( sdio_instance_en id,
sdio_write_read_config_t * config )

Writes data to the SD card. This function can be used for single or multiple block writes based on the configuration provided.

Parameters
idSDIO instance ID.
configPointer to the write configuration structure (sdio_write_read_config_t).
Returns
sdio_status_en Status code indicating success or the reason for failure.

◆ sdio_sd_card_erase()

sdio_status_en sdio_sd_card_erase ( sdio_instance_en id,
uint32_t startAddr,
uint32_t endAddr,
sdio_erase_type_en eraseType )

Erases a specified range of blocks on the SD card.

Parameters
idSDIO instance ID.
startAddrStarting address for the erase operation.
endAddrEnding address for the erase operation.
eraseTypeType of erase operation (sdio_erase_type_en).
Returns
sdio_status_en Status code indicating success or the reason for failure.

◆ sdio_set_sd_clk_div()

sdio_status_en sdio_set_sd_clk_div ( sdio_instance_en id,
uint16_t clkDiv )

Sets the SD clock divider for the specified SDIO instance. This controls the clock frequency provided to the SD card.

Parameters
idSDIO instance ID.
clkDivClock divider value.
Returns
sdio_status_en Status code indicating success or the reason for failure.

◆ sdio_is_wp_set()

bool sdio_is_wp_set ( sdio_instance_en id)

Checks if the write protection is set on the SD card connected to the specified SDIO instance.

Parameters
idSDIO instance ID.
Returns
bool True if write protection is set, false otherwise.

◆ sdio_set_host_bus_width()

sdio_status_en sdio_set_host_bus_width ( sdio_instance_en id,
sdio_bus_width_en width )

Sets the host bus width for the specified SDIO instance. This configures how many data lines are used for communication with the SD card.

Parameters
idSDIO instance ID.
widthBus width to set (sdio_bus_width_en).
Returns
sdio_status_en Status code indicating success or the reason for failure.

◆ sdio_set_bus_width()

sdio_status_en sdio_set_bus_width ( sdio_instance_en id,
sdio_bus_width_en width )

Sets the bus width for the SD card. This sends the appropriate command to the SD card to change its bus width mode.

Parameters
idSDIO instance ID.
widthBus width to set (sdio_bus_width_en).
Returns
sdio_status_en Status code indicating success or the reason for failure.

◆ sdio_set_host_speed_mode()

sdio_status_en sdio_set_host_speed_mode ( sdio_instance_en id,
sdio_bus_speed_mode_en speedMode )

Sets the host speed mode for the specified SDIO instance. This configures the host controller's operational speed.

Parameters
idSDIO instance ID.
speedModeBus speed mode to set (sdio_bus_speed_mode_en).
Returns
sdio_status_en Status code indicating success or the reason for failure.

◆ sdio_set_bus_speed_mode()

sdio_status_en sdio_set_bus_speed_mode ( sdio_instance_en id,
sdio_bus_speed_mode_en speedMode )

Sets the bus speed mode for the SD card. This sends the appropriate command to the SD card to change its speed mode.

Parameters
idSDIO instance ID.
speedModeBus speed mode to set (sdio_bus_speed_mode_en).
Returns
sdio_status_en Status code indicating success or the reason for failure.

◆ sdio_sel_bus_voltage()

sdio_status_en sdio_sel_bus_voltage ( sdio_instance_en id,
bool enable18VSignal )

Selects the bus voltage for the SDIO interface. This is typically used for voltage switching operations (e.g., 3.3V to 1.8V).

Parameters
idSDIO instance ID.
enable18VSignalTrue to enable 1.8V signaling, false for other voltages (e.g., 3.3V).
Returns
sdio_status_en Status code indicating success or the reason for failure.

◆ sdio_enable_card_voltage()

void sdio_enable_card_voltage ( sdio_instance_en id)

Enables the power supply to the SD card.

Parameters
idSDIO instance ID.
Returns
void

◆ sdio_disable_card_voltage()

void sdio_disable_card_voltage ( sdio_instance_en id)

Disables the power supply to the SD card.

Parameters
idSDIO instance ID.
Returns
void

◆ sdio_get_response()

sdio_status_en sdio_get_response ( sdio_instance_en id,
uint32_t * responsePtr,
bool largeResponse )

Retrieves the response from the last SDIO command.

Parameters
idSDIO instance ID.
responsePtrPointer to a buffer to store the response.
largeResponseTrue if a large response (e.g., R2) is expected, false for short responses.
Returns
sdio_status_en Status code indicating success or the reason for failure.

◆ sdio_send_command()

sdio_status_en sdio_send_command ( sdio_instance_en id,
sdio_cmd_config_t const * config )

Sends a command to the SD card.

Parameters
idSDIO instance ID.
configPointer to the command configuration structure (sdio_cmd_config_t).
Returns
sdio_status_en Status code indicating success or the reason for failure.

◆ sdio_init_data_transfer()

sdio_status_en sdio_init_data_transfer ( sdio_instance_en id,
sdio_data_config_t const * dataConfig )

Initializes a data transfer operation (read or write) with the SD card.

Parameters
idSDIO instance ID.
dataConfigPointer to the data transfer configuration structure (sdio_data_config_t).
Returns
sdio_status_en Status code indicating success or the reason for failure.

◆ sdio_abort_transfer()

sdio_status_en sdio_abort_transfer ( sdio_instance_en id)

Aborts any ongoing data transfer operation.

Parameters
idSDIO instance ID.
Returns
sdio_status_en Status code indicating success or the reason for failure.

◆ sdio_write_protect()

sdio_status_en sdio_write_protect ( sdio_instance_en id,
sdio_write_protect_en writeProtect )

Sets or clears the write protection on the SD card.

Parameters
idSDIO instance ID.
writeProtectWrite protect state to set (sdio_write_protect_en).
Returns
sdio_status_en Status code indicating success or the reason for failure.

◆ sdio_get_card_status()

uint32_t sdio_get_card_status ( sdio_instance_en id)

Retrieves the current status of the SD card.

Parameters
idSDIO instance ID.
Returns
uint32_t The card status register value.

◆ sdio_get_ocr()

uint32_t sdio_get_ocr ( sdio_instance_en id)

Retrieves the Operation Condition Register (OCR) value from the SD card.

Parameters
idSDIO instance ID.
ocrRegPointer to a variable where the OCR register value will be stored.
Returns
uint32_t The OCR register value.

◆ sdio_get_cid()

sdio_status_en sdio_get_cid ( sdio_instance_en id,
uint32_t * cid )

Retrieves the Card Identification (CID) register from the SD card.

Parameters
idSDIO instance ID.
cidPointer to a buffer to store the CID register value (typically 4 32-bit words).
Returns
sdio_status_en Status code indicating success or the reason for failure.

◆ sdio_get_csd()

sdio_status_en sdio_get_csd ( sdio_instance_en id,
uint32_t * csd )

Retrieves the Card-Specific Data (CSD) register from the SD card.

Parameters
idSDIO instance ID.
csdPointer to a buffer to store the CSD register value (typically 4 32-bit words).
Returns
sdio_status_en Status code indicating success or the reason for failure.

◆ sdio_get_rca()

uint32_t sdio_get_rca ( sdio_instance_en id)

Retrieves the Relative Card Address (RCA) of the SD card.

Parameters
idSDIO instance ID.
Returns
uint32_t The RCA value.

◆ sdio_get_scr()

sdio_status_en sdio_get_scr ( sdio_instance_en id,
uint32_t * scr )

Retrieves the SD Configuration Register (SCR) from the SD card.

Parameters
idSDIO instance ID.
scrPointer to a buffer to store the SCR register value.
Returns
sdio_status_en Status code indicating success or the reason for failure.

◆ sdio_get_present_state()

uint32_t sdio_get_present_state ( sdio_instance_en id)

Retrieves the present state register of the SDIO host controller. This register provides information about various aspects of the host controller's current status and the connected card's state.

Parameters
idSDIO instance ID.
Returns
uint32_t The present state register value.

◆ sdio_is_card_connected()

bool sdio_is_card_connected ( sdio_instance_en id)

Checks if a card is currently connected to the specified SDIO instance.

Parameters
idSDIO instance ID.
Returns
bool True if a card is connected, false otherwise.

◆ sdio_software_reset()

sdio_status_en sdio_software_reset ( sdio_instance_en id,
sdio_reset_en reset )

Performs a software reset of the SDIO host controller or parts of it.

Parameters
idSDIO instance ID.
resetType of reset to perform (sdio_reset_en).
Returns
sdio_status_en Status code indicating success or the reason for failure.

◆ sdio_get_block_count()

sdio_status_en sdio_get_block_count ( sdio_instance_en id,
uint32_t * block_count )

Retrieves the total number of blocks available on the SD card.

Parameters
idSDIO instance ID.
block_countPointer to a uint32_t variable to store the block count.
Returns
sdio_status_en Status code indicating success or the reason for failure.

◆ sdio_get_normal_interrupt_status()

uint32_t sdio_get_normal_interrupt_status ( sdio_instance_en id)

Retrieves the normal interrupt status register of the SDIO host controller. This indicates various non-error interrupt events.

Parameters
idSDIO instance ID.
Returns
uint32_t The normal interrupt status register value.

◆ sdio_clear_normal_interrupt_status()

void sdio_clear_normal_interrupt_status ( sdio_instance_en id,
uint32_t status )

Clears the specified bits in the normal interrupt status register.

Parameters
idSDIO instance ID.
statusMask of status bits to clear.
Returns
void

◆ sdio_set_error_interrupt_enable()

void sdio_set_error_interrupt_enable ( sdio_instance_en id,
uint32_t interrupt )

Setting a bit in this register allows for the bit to be active in the Int status register.

Parameters
idSDIO instance ID.
interruptThe Bit field of which error interrupt status to enable.

◆ sdio_clear_error_interrupt_status()

void sdio_clear_error_interrupt_status ( sdio_instance_en id,
uint32_t status )

Clears the error interrupt status.

Parameters
idSDIO instance ID.
statusThe bitmask of statuses to clear.

◆ sdio_set_normal_interrupt_enable()

void sdio_set_normal_interrupt_enable ( sdio_instance_en id,
uint32_t interrupt )

Sets the bit to be active in the Int status register.

Parameters
idSDIO instance ID.
interruptThe Bit field of which normal interrupt status to enable.

◆ sdio_buffer_write()

sdio_status_en sdio_buffer_write ( sdio_instance_en id,
uint32_t data )

Writes 32-bits of data into the write buffer. Only use this function if not using SD block DMA to transfer data to buffer.

Parameters
idSDIO instance ID.
dataData to be written.
Returns
sdio_status_en

◆ sdio_buffer_read()

uint32_t sdio_buffer_read ( sdio_instance_en id)

Reads 32-bits of data from the read buffer. Only use this function if not using SD block DMA to transfer data from buffer.

Parameters
idSDIO instance ID.
Returns
uint32_t Data that is being read.

◆ sdio_ops_go_idle()

sdio_status_en sdio_ops_go_idle ( sdio_instance_en id)

Send CMD0 (Go idle).

Parameters
idSDIO instance ID.
Returns
sdio_status_en

◆ sdio_set_host_voltage()

sdio_status_en sdio_set_host_voltage ( sdio_instance_en id)

Sets the host controller voltage.

Parameters
id
SDIO instance ID.
Returns
sdio_status_en

◆ sdio_change_clock()

sdio_status_en sdio_change_clock ( sdio_instance_en id,
uint32_t frequency )

Changes the Host controller SD clock.

Parameters
id
SDIO instance ID.
frequency
The frequency in Hz.
Returns
sdio_status_en

◆ sdio_set_block_size_count()

void sdio_set_block_size_count ( sdio_instance_en id)

Sets the block size and count.

Parameters
id
SDIO instance ID.
Returns
void

◆ sdio_ops_send_io_rw_direct_cmd()

sdio_status_en sdio_ops_send_io_rw_direct_cmd ( sdio_instance_en id,
uint32_t rwFlag,
uint32_t functionNumber,
uint32_t rawFlag,
uint32_t registerAddress,
uint32_t data )

Sends CMD52 (Reads/writes 1 byte to the SDIO register).

Parameters
id
SDIO instance ID.
rwFlag
Read/Write flag. Set to 1 for write, 0 for read.
functionNumber
SDIO function number to access.
rawFlag
Read After Write flag. Used when performing write with readback verification.
registerAddress
The register address to access.
data
Data to write or dummy value for read.
Returns
sdio_status_en

◆ sdio_ops_sdio_send_op_cond()

sdio_status_en sdio_ops_sdio_send_op_cond ( sdio_instance_en id,
uint32_t * ocrReg,
uint32_t cmdArgument )

Send CMD5 (Send SDIO operation condition command).

Parameters
id
SDIO instance ID.
ocrReg
Pointer to the Operation Condition Register (OCR) to store the response.
cmdArgument
The command argument to send with CMD5.
Returns
sdio_status_en

◆ sdio_ops_select_card()

sdio_status_en sdio_ops_select_card ( sdio_instance_en id)

Send CMD7 (Send select card command).

Parameters
id
SDIO instance ID.
Returns
sdio_status_en

◆ sdio_fetch_rca()

sdio_status_en sdio_fetch_rca ( sdio_instance_en id)

Sends CMD3 to get the Relative Card Address (RCA).

Parameters
id
SDIO instance ID.
Returns
sdio_status_en

◆ sdio_cmd_rx_data()

sdio_status_en sdio_cmd_rx_data ( sdio_instance_en id,
sdio_data_config_t * pcmd )

Reads the command data using a non-DMA data transfer.

Parameters
id
SDIO instance ID.
pcmd
Pointer to the current command data structure.
Returns
sdio_status_en

◆ sdio_cmd_tx_data()

sdio_status_en sdio_cmd_tx_data ( sdio_instance_en id,
sdio_data_config_t * pcmd )

Writes the command data using a non-DMA data transfer.

Parameters
id
SDIO instance ID.
pcmd
Pointer to the current command data structure.
Returns
sdio_status_en

◆ sdio_set_normal_interrupt_mask()

void sdio_set_normal_interrupt_mask ( sdio_instance_en id,
uint32_t interruptMask )

Sets bits in the register that allow enabled status bits to cause interrupts.

Parameters
id
SDIO instance ID.
interruptMask
Bit field specifying which normal interrupts can cause an interrupt.
Returns
void

◆ sdio_isr()

ISR_CODE uint32_t sdio_isr ( sdio_instance_en id)

SDIO interrupt service routine for the specified instance.

Parameters
idSDIO Instance ID.
Returns
uint32_t Returns the bit mask of interrupts that were handled.