123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209 |
- #ifndef HAL_SDC_H
- #define HAL_SDC_H
- #if (HAL_USE_SDC == TRUE) || defined(__DOXYGEN__)
- #define SDC_MODE_CARDTYPE_MASK 0xFU
- #define SDC_MODE_CARDTYPE_SDV11 0U
- #define SDC_MODE_CARDTYPE_SDV20 1U
- #define SDC_MODE_CARDTYPE_MMC 2U
- #define SDC_MODE_HIGH_CAPACITY 0x10U
- #define SDC_NO_ERROR 0U
- #define SDC_CMD_CRC_ERROR 1U
- #define SDC_DATA_CRC_ERROR 2U
- #define SDC_DATA_TIMEOUT 4U
- #define SDC_COMMAND_TIMEOUT 8U
- #define SDC_TX_UNDERRUN 16U
- #define SDC_RX_OVERRUN 32U
- #define SDC_STARTBIT_ERROR 64U
- #define SDC_OVERFLOW_ERROR 128U
- #define SDC_UNHANDLED_ERROR 0xFFFFFFFFU
- #if !defined(SDC_INIT_RETRY) || defined(__DOXYGEN__)
- #define SDC_INIT_RETRY 100
- #endif
- #if !defined(SDC_MMC_SUPPORT) || defined(__DOXYGEN__)
- #define SDC_MMC_SUPPORT FALSE
- #endif
- #if !defined(SDC_NICE_WAITING) || defined(__DOXYGEN__)
- #define SDC_NICE_WAITING TRUE
- #endif
- #if !defined(SDC_INIT_OCR_V20) || defined(__DOXYGEN__)
- #define SDC_INIT_OCR_V20 0x50FF8000U
- #endif
- #if !defined(SDC_INIT_OCR) || defined(__DOXYGEN__)
- #define SDC_INIT_OCR 0x80100000U
- #endif
- typedef enum {
- SDC_MODE_1BIT = 0,
- SDC_MODE_4BIT,
- SDC_MODE_8BIT
- } sdcbusmode_t;
- typedef enum {
- SDC_CLK_25MHz = 0,
- SDC_CLK_50MHz
- } sdcbusclk_t;
- #include "hal_sdc_lld.h"
- #define sdcIsCardInserted(sdcp) (sdc_lld_is_card_inserted(sdcp))
- #define sdcIsWriteProtected(sdcp) (sdc_lld_is_write_protected(sdcp))
- #ifdef __cplusplus
- extern "C" {
- #endif
- void sdcInit(void);
- void sdcObjectInit(SDCDriver *sdcp);
- void sdcStart(SDCDriver *sdcp, const SDCConfig *config);
- void sdcStop(SDCDriver *sdcp);
- bool sdcConnect(SDCDriver *sdcp);
- bool sdcDisconnect(SDCDriver *sdcp);
- bool sdcRead(SDCDriver *sdcp, uint32_t startblk,
- uint8_t *buf, uint32_t n);
- bool sdcWrite(SDCDriver *sdcp, uint32_t startblk,
- const uint8_t *buf, uint32_t n);
- sdcflags_t sdcGetAndClearErrors(SDCDriver *sdcp);
- bool sdcSync(SDCDriver *sdcp);
- bool sdcGetInfo(SDCDriver *sdcp, BlockDeviceInfo *bdip);
- bool sdcErase(SDCDriver *sdcp, uint32_t startblk, uint32_t endblk);
- bool _sdc_wait_for_transfer_state(SDCDriver *sdcp);
- #ifdef __cplusplus
- }
- #endif
- #endif
- #endif
|