/*************************************************************************************************************************
* 函数 : void SDIO_SetAndStartDataTrans(u8 *pDataBuff, bool isEnableReadData, SDIO_DataBlockSize SDIOBlockSize, u32 TransDataLen)
* 功能 : 设置SDIO并开始准备数据传输
* 参数 : pDataBuff:传输的数据缓冲区;isEnableReadData:是否为读取数据;SDIOBlockSize:SDIO传输块大小;TransDataLen:传输数据长度
* 返回 : 无
* 依赖 : 底层宏定义
* 作者 : cp1300@139.com
* 时间 : 2020-09-04
* 最后修改时间 : 2020-09-04
* 说明 : 数据传输必须首先写入到数据计时器寄存器和数据长度寄存器,然后才写入到数据控制寄存器。
对于 SDIO 多字节传输,数据长度寄存器中的值必须在 1 到 512 之间。
会使能DMA传输
*************************************************************************************************************************/
void SDIO_SetAndStartDataTrans(u8 *pDataBuff, bool isEnableReadData, SDIO_DataBlockSize SDIOBlockSize, u32 TransDataLen)
{
//初始化DMA
SDIO_DMA->SA = (u32)pDataBuff; //设置DMA数据传输地址
//SDIO传输数据块大小设置
SDIO_SetDataTransBlockSize(SDIOBlockSize); //设置传输块大小
//SDIO传输数据长度
SDIO_SetDataTransLength(TransDataLen);
SDIO->INTSTS = SDIO->INTSTS; //清除中断状态
//数据读取方向
if(isEnableReadData) //读数据,卡到控制器
{
SDIO->CTL |= BIT2;
}
else //写数据,控制器到卡
{
SDIO->CTL |= BIT3;
}
}
|