summaryrefslogtreecommitdiff
path: root/bsp
diff options
context:
space:
mode:
authorwoody <[email protected]>2022-06-16 18:31:07 +0800
committerGitHub <[email protected]>2022-06-16 18:31:07 +0800
commit1c81a6d22035bbc5e22315471ff0451eeade8a08 (patch)
treeff4ff842fa256b49a44b2e6335281b120d25f53b /bsp
parentb1fab8942a2c6e73abca4809ace8050a6ba20fd7 (diff)
修复sdio读写块的地址偏移问题 (#6082)
* 修复sdio读写块的地址偏移问题
Diffstat (limited to 'bsp')
-rw-r--r--bsp/swm320/drivers/drv_sdio.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/bsp/swm320/drivers/drv_sdio.c b/bsp/swm320/drivers/drv_sdio.c
index 15dc84fd21..aeb7495c01 100644
--- a/bsp/swm320/drivers/drv_sdio.c
+++ b/bsp/swm320/drivers/drv_sdio.c
@@ -534,13 +534,17 @@ static rt_err_t swm_sdio_rxconfig(struct sdio_pkg *pkg, rt_uint32_t *buff, int s
{
struct rt_mmcsd_cmd *cmd = pkg->cmd;
struct rt_mmcsd_data *data = cmd->data;
+ int offset = 0;
for (uint32_t i = 0; i < data->blks; i++)
{
+ offset = i* data->blksize / 4;
while ((SDIO->IF & SDIO_IF_BUFRDRDY_Msk) == 0)
__NOP();
SDIO->IF = SDIO_IF_BUFRDRDY_Msk;
for (uint32_t j = 0; j < data->blksize / 4; j++)
- buff[j] = SDIO->DATA;
+ {
+ buff[offset + j] = SDIO->DATA;
+ }
}
return RT_EOK;
}
@@ -549,13 +553,15 @@ static rt_err_t swm_sdio_txconfig(struct sdio_pkg *pkg, rt_uint32_t *buff, int s
{
struct rt_mmcsd_cmd *cmd = pkg->cmd;
struct rt_mmcsd_data *data = cmd->data;
+ int offset = 0;
for (uint32_t i = 0; i < data->blks; i++)
{
+ offset = i* data->blksize / 4;
while ((SDIO->IF & SDIO_IF_BUFWRRDY_Msk) == 0)
__NOP();
SDIO->IF = SDIO_IF_BUFWRRDY_Msk;
for (uint32_t j = 0; j < data->blksize / 4; j++)
- SDIO->DATA = buff[j];
+ SDIO->DATA = buff[offset + j];
}
return RT_EOK;
}