ESP32 SDMMC技术文档翻译

SDMMC 主机外设
概述
SDMMC 外设支持SD卡、MMC卡和SDIO卡。SDMMC的软件是基于SDMMC驱动之上的,由下面几个部分组成。
SDMMC主机外设(driver/sdmmc_host.h)---驱动支持APIs接口发送命令到从机设备,发送和接受数据,处理条件错误。
SDMMC协议层(sdmmc_cmd.h)---该组件处理SD协议的细节,初始化SD卡和数据数据传输的命令。尽管当前只支持SD (SDSC/SDHC/SDXC) 卡,在将来会支持MCC/eMMC卡。

协议层与主机通过sdmmc_host_t结构建立联系。这个结构包含指向各种功能的主机。这个设计可以实现SD主机使用SPI接口。
应用程序示例
在examples/storage/sd_card这个实例中将SDMMC驱动和FATFS文件系统结合在了一起。这个实例实现了初始化SD卡使用POSIX 和 C库APIs接口来写读数据。看实例中的README.md文件获取更多的信息

协议层APIs接口
协议层获取到描述SDMMC主机驱动sdmmc_host_t结构体,列表它的功能,并且提供了指向驱动函数的指针,协议层特定SD卡信息存储在sdmmc_card_t结构中。当发送命令到SDMMC主机驱动程序,协议层使用sdmmc_command_t结构来描述命令,参数,将返回值,和数据传输,如果任何。

正常使用的协议层如下:

1、调用主机驱动程序函数来初始化主机(例如sdmmc_host_init、sdmmc_host_init_slot)。
2、调用sdmmc_card_init来初始化SD,传递主机驱动信息和sdmmc_card_t结构体信息(作为参数)
3、使用sdmmc_read_sectors sdmmc_write_sectors读写卡扇区,,传递卡信息结构的指针(卡)。
4、当不再使用SD卡时,调用主机驱动程序函数失能SDMMC主机外围和释放资源分配的驱动程序(例如sdmmc_host_deinit)。
5、大多数应用程序需要使用协议层只有一个任务;因此协议层不实现任何锁定sdmmc_card_t结构,或当访问SDMMC主机驱动程序。这种锁是实现更高的层,必要时(如文件系统驱动程序)。


结构体 sdmmc_host_t
SDMMC主机描述
这个结构体定义了SDMMC主机的属性和功能,可由上层使用。
公共成员


uint32_t flags
1、定义主机属性标志
int slot
2、接口槽数,传递到主函数
int max_freq_khz
3、主机支持的最大频率
float io_voltage
4、I / O控制器所使用的电压(不支持电压切换)
esp_err_t (*init)(void)
esp_err_t (*set_bus_width)(int slot, size_t width)
5、设置主机总线宽度函数
esp_err_t (*set_card_clk)(int slot, uint32_t freq_khz)
6、设置卡的主机时钟频率函数
esp_err_t (*do_transaction)(int slot, sdmmc_command_t *cmdinfo)
7、主机功能做一个事务
esp_err_t (*deinit)(void)
8、默认初始化驱动主机函数


SDMMC_HOST_FLAG_1BIT
1、主机支持1条线SD卡通信和MMC协议
SDMMC_HOST_FLAG_4BIT
2、主机支持4条线SD卡通信和MMC协议
SDMMC_HOST_FLAG_8BIT
3、主机支持8条线SD卡通信和MMC协议
SDMMC_HOST_FLAG_SPI
4、主机支持SPI协议
SDMMC_FREQ_DEFAULT
5、SDMMC默认速度(被时钟分频限制)
SDMMC_FREQ_HIGHSPEED
6、SDMMC高速(被时钟分频限制)
SDMMC_FREQ_PROBING
7、SDMMC探测速度

结构体sdmmc_command_t
SDMMC命令信息
公共成员

uint32_t opcode
1、SD卡或MMC命令索引
uint32_t arg
2、SDMMC命令参数
sdmmc_response_t response
response buffer
3、返回缓冲区

void *data
buffer to send or read into
4、发送或接受数据缓冲区
size_t datalen
length of data buffer
5、缓冲区数据长度
size_t blklen
block length
6、快长度
int flags
see below
7、见下文
esp_err_t error
error returned from transfer
8、传递错误回来


struct sdmmc_card_t
SD/MMC card information structure
结构体 sdmmc_card_t
SDMMC卡信息结构体


Public Members
公共成员


sdmmc_host_t host
Host with which the card is associated
1、主机与卡相关联
uint32_t ocr
OCR (Operation Conditions Register) value
2、OCR(操作条件寄存器)的值
sdmmc_cid_t cid
decoded CID (Card IDentification) register value
3、解码CID(卡识别)寄存器的值
sdmmc_csd_t csd
decoded CSD (Card-Specific Data) register value
4、解码CSD(特定卡片数据)寄存器的值
sdmmc_scr_t scr
decoded SCR (SD card Configuration Register) value
5、解码可控硅(SD卡配置寄存器)的价值
uint16_t rca
RCA (Relative Card Address)
6、RCA(相对卡地址)


struct sdmmc_csd_t
Decoded values from SD card Card Specific Data register
结构体sdmmc_csd_t
从SD卡卡具体的数据寄存器解码值
Public Members
公共成员


int csd_ver
CSD structure format
1、CSD结构格式
int mmc_ver
MMC version (for CID format)
2、MMC版本(CID格式)
int capacity
total number of sectors
3、扇区的总数
int sector_size
sector size in bytes
4、扇区大小的字节


int read_block_len
block length for reads
5、读块长度
int card_command_class
Card Command Class for SD
6、SD卡命令类
int tr_speed
Max transfer speed
7、最大传输速度
struct sdmmc_cid_t
Decoded values from SD card Card IDentification register
结构体sdmmc_cid_t
从SD卡解码值卡身份注册
Public Members
公共成员


int mfg_id
manufacturer identification number
1、制造商识别码
int oem_id
OEM/product identification number
2、OEM /产品身份证号码
char name[8]
product name (MMC v1 has the longest)
3、产品名称(MMC v1有最长的)
int revision
product revision
3、产品修版本
int serial
product serial number
4、产品序列号
int date
manufacturing date
5、生产日期


struct sdmmc_scr_t
Decoded values from SD Configuration Register
结构体
从SD解码值配置寄存器
Public Members
公共成员


int sd_spec
SD Physical layer specification version, reported by card
1、SD卡物理层详细版本
int bus_width
bus widths supported by card: BIT(0) — 1-bit bus, BIT(2) — 4-bit bus
2、总线宽度支持卡:1bit总线,4bit总线
esp_err_t sdmmc_card_init(const sdmmc_host_t *host, sdmmc_card_t *out_card)
Probe and initialize SD/MMC card using given host
调查并初始化SD / MMC卡,使用参数来自的主机
Note   
Only SD cards (SDSC and SDHC/SDXC) are supported now. Support for MMC/eMMC cards will be added later.
Return
ESP_OK on success
One of the error codes from SDMMC host controller
Parameters
host: pointer to structure defining host controller
out_card: pointer to structure which will receive information about the card when the function completes
注意:  sdmmc_card_init()
现在仅仅支持(SDSC and SDHC/SDXC),后面会添加MMC/eMMC卡的支持
返回值:
ESP_OK  成功
从SDMMC主机控制器的一个错误代码
参数:
host:指向结构的指针定义主机控制器
out_card:指针结构,将收到的信息卡片,当函数完成




esp_err_t sdmmc_write_sectors(sdmmc_card_t *card, const void *src, size_t start_sector, size_t sector_count)
Write given number of sectors to SD/MMC card
Return
ESP_OK on success
One of the error codes from SDMMC host controller
Parameters
card: pointer to card information structure previously initialized using sdmmc_card_init
src: pointer to data buffer to read data from; data size must be equal to sector_count * card->csd.sector_size
start_sector: sector where to start writing
sector_count: number of sectors to write
写给定数目的扇区到SD卡
返回:
ESP_OK  成功
从SDMMC主机控制器的一个错误代码
参数:
card;指针使用sdmmc_card_init之前初始化卡信息结构
src:指针数据缓冲区读取数据;数据大小必须等于sector_count *card->csd.sector_size
start_sector:扇区从哪里开始写作
sector_count:扇区数目


猜你喜欢

转载自blog.csdn.net/redsleep/article/details/79488798