Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
TASTE
uPython-mirror
Commits
c79ff993
Commit
c79ff993
authored
Sep 08, 2016
by
Krzysztof Blazewicz
Browse files
stmhal/hal/sd: reapply HAL commit
1d7fb82f
for f4
parent
a9fb88e1
Changes
2
Hide whitespace changes
Inline
Side-by-side
stmhal/hal/f4/inc/stm32f4xx_hal_sd.h
View file @
c79ff993
...
...
@@ -663,8 +663,9 @@ void HAL_SD_MspDeInit(SD_HandleTypeDef *hsd);
* @{
*/
/* Blocking mode: Polling */
HAL_SD_ErrorTypedef
HAL_SD_ReadBlocks
(
SD_HandleTypeDef
*
hsd
,
uint32_t
*
pReadBuffer
,
uint64_t
ReadAddr
,
uint32_t
BlockSize
,
uint32_t
NumberOfBlocks
);
HAL_SD_ErrorTypedef
HAL_SD_WriteBlocks
(
SD_HandleTypeDef
*
hsd
,
uint32_t
*
pWriteBuffer
,
uint64_t
WriteAddr
,
uint32_t
BlockSize
,
uint32_t
NumberOfBlocks
);
// dpgeorge: read/write functions renamed to emphasise that address is given by block number
HAL_SD_ErrorTypedef
HAL_SD_ReadBlocks_BlockNumber
(
SD_HandleTypeDef
*
hsd
,
uint32_t
*
pReadBuffer
,
uint32_t
BlockNumber
,
uint32_t
BlockSize
,
uint32_t
NumberOfBlocks
);
HAL_SD_ErrorTypedef
HAL_SD_WriteBlocks_BlockNumber
(
SD_HandleTypeDef
*
hsd
,
uint32_t
*
pWriteBuffer
,
uint32_t
BlockNumber
,
uint32_t
BlockSize
,
uint32_t
NumberOfBlocks
);
HAL_SD_ErrorTypedef
HAL_SD_Erase
(
SD_HandleTypeDef
*
hsd
,
uint64_t
startaddr
,
uint64_t
endaddr
);
/* Non-Blocking mode: Interrupt */
...
...
@@ -679,8 +680,9 @@ void HAL_SD_XferCpltCallback(SD_HandleTypeDef *hsd);
void
HAL_SD_XferErrorCallback
(
SD_HandleTypeDef
*
hsd
);
/* Non-Blocking mode: DMA */
HAL_SD_ErrorTypedef
HAL_SD_ReadBlocks_DMA
(
SD_HandleTypeDef
*
hsd
,
uint32_t
*
pReadBuffer
,
uint64_t
ReadAddr
,
uint32_t
BlockSize
,
uint32_t
NumberOfBlocks
);
HAL_SD_ErrorTypedef
HAL_SD_WriteBlocks_DMA
(
SD_HandleTypeDef
*
hsd
,
uint32_t
*
pWriteBuffer
,
uint64_t
WriteAddr
,
uint32_t
BlockSize
,
uint32_t
NumberOfBlocks
);
// dpgeorge: read/write functions renamed to emphasise that address is given by block number
HAL_SD_ErrorTypedef
HAL_SD_ReadBlocks_BlockNumber_DMA
(
SD_HandleTypeDef
*
hsd
,
uint32_t
*
pReadBuffer
,
uint32_t
BlockNumber
,
uint32_t
BlockSize
,
uint32_t
NumberOfBlocks
);
HAL_SD_ErrorTypedef
HAL_SD_WriteBlocks_BlockNumber_DMA
(
SD_HandleTypeDef
*
hsd
,
uint32_t
*
pWriteBuffer
,
uint32_t
BlockNumber
,
uint32_t
BlockSize
,
uint32_t
NumberOfBlocks
);
HAL_SD_ErrorTypedef
HAL_SD_CheckWriteOperation
(
SD_HandleTypeDef
*
hsd
,
uint32_t
Timeout
);
HAL_SD_ErrorTypedef
HAL_SD_CheckReadOperation
(
SD_HandleTypeDef
*
hsd
,
uint32_t
Timeout
);
/**
...
...
stmhal/hal/f4/src/stm32f4xx_hal_sd.c
View file @
c79ff993
...
...
@@ -461,13 +461,13 @@ __weak void HAL_SD_MspDeInit(SD_HandleTypeDef *hsd)
* is managed by polling mode.
* @param hsd: SD handle
* @param pReadBuffer: pointer to the buffer that will contain the received data
* @param
ReadAddr: Address
from where data is to be read
* @param
BlockNumber: Block number
from where data is to be read
(byte address = BlockNumber * BlockSize)
* @param BlockSize: SD card Data block size
* @note BlockSize must be 512 bytes.
* @param NumberOfBlocks: Number of SD blocks to read
* @retval SD Card error state
*/
HAL_SD_ErrorTypedef
HAL_SD_ReadBlocks
(
SD_HandleTypeDef
*
hsd
,
uint32_t
*
pReadBuffer
,
uint
64
_t
ReadAdd
r
,
uint32_t
BlockSize
,
uint32_t
NumberOfBlocks
)
HAL_SD_ErrorTypedef
HAL_SD_ReadBlocks
_BlockNumber
(
SD_HandleTypeDef
*
hsd
,
uint32_t
*
pReadBuffer
,
uint
32
_t
BlockNumbe
r
,
uint32_t
BlockSize
,
uint32_t
NumberOfBlocks
)
{
SDIO_CmdInitTypeDef
sdio_cmdinitstructure
;
SDIO_DataInitTypeDef
sdio_datainitstructure
;
...
...
@@ -477,10 +477,16 @@ HAL_SD_ErrorTypedef HAL_SD_ReadBlocks(SD_HandleTypeDef *hsd, uint32_t *pReadBuff
/* Initialize data control register */
hsd
->
Instance
->
DCTRL
=
0U
;
uint32_t
ReadAddr
;
if
(
hsd
->
CardType
==
HIGH_CAPACITY_SD_CARD
)
{
BlockSize
=
512U
;
ReadAddr
/=
512U
;
BlockSize
=
512
;
ReadAddr
=
BlockNumber
;
}
else
{
// should not overflow for standard-capacity cards
ReadAddr
=
BlockNumber
*
BlockSize
;
}
/* Set Block Size for Card */
...
...
@@ -519,7 +525,7 @@ HAL_SD_ErrorTypedef HAL_SD_ReadBlocks(SD_HandleTypeDef *hsd, uint32_t *pReadBuff
sdio_cmdinitstructure
.
CmdIndex
=
SD_CMD_READ_SINGLE_BLOCK
;
}
sdio_cmdinitstructure
.
Argument
=
(
uint32_t
)
ReadAddr
;
sdio_cmdinitstructure
.
Argument
=
ReadAddr
;
SDIO_SendCommand
(
hsd
->
Instance
,
&
sdio_cmdinitstructure
);
/* Read block(s) in polling mode */
...
...
@@ -655,13 +661,13 @@ HAL_SD_ErrorTypedef HAL_SD_ReadBlocks(SD_HandleTypeDef *hsd, uint32_t *pReadBuff
* transfer is managed by polling mode.
* @param hsd: SD handle
* @param pWriteBuffer: pointer to the buffer that will contain the data to transmit
* @param
WriteAddr: Address from
where data is to be written
* @param
BlockNumber: Block number to
where data is to be written
(byte address = BlockNumber * BlockSize)
* @param BlockSize: SD card Data block size
* @note BlockSize must be 512 bytes.
* @param NumberOfBlocks: Number of SD blocks to write
* @retval SD Card error state
*/
HAL_SD_ErrorTypedef
HAL_SD_WriteBlocks
(
SD_HandleTypeDef
*
hsd
,
uint32_t
*
pWriteBuffer
,
uint
64
_t
WriteAdd
r
,
uint32_t
BlockSize
,
uint32_t
NumberOfBlocks
)
HAL_SD_ErrorTypedef
HAL_SD_WriteBlocks
_BlockNumber
(
SD_HandleTypeDef
*
hsd
,
uint32_t
*
pWriteBuffer
,
uint
32
_t
BlockNumbe
r
,
uint32_t
BlockSize
,
uint32_t
NumberOfBlocks
)
{
SDIO_CmdInitTypeDef
sdio_cmdinitstructure
;
SDIO_DataInitTypeDef
sdio_datainitstructure
;
...
...
@@ -673,10 +679,16 @@ HAL_SD_ErrorTypedef HAL_SD_WriteBlocks(SD_HandleTypeDef *hsd, uint32_t *pWriteBu
/* Initialize data control register */
hsd
->
Instance
->
DCTRL
=
0U
;
uint32_t
WriteAddr
;
if
(
hsd
->
CardType
==
HIGH_CAPACITY_SD_CARD
)
{
BlockSize
=
512U
;
WriteAddr
/=
512U
;
BlockSize
=
512
;
WriteAddr
=
BlockNumber
;
}
else
{
// should not overflow for standard-capacity cards
WriteAddr
=
BlockNumber
*
BlockSize
;
}
/* Set Block Size for Card */
...
...
@@ -706,7 +718,7 @@ HAL_SD_ErrorTypedef HAL_SD_WriteBlocks(SD_HandleTypeDef *hsd, uint32_t *pWriteBu
sdio_cmdinitstructure
.
CmdIndex
=
SD_CMD_WRITE_SINGLE_BLOCK
;
}
sdio_cmdinitstructure
.
Argument
=
(
uint32_t
)
WriteAddr
;
sdio_cmdinitstructure
.
Argument
=
WriteAddr
;
SDIO_SendCommand
(
hsd
->
Instance
,
&
sdio_cmdinitstructure
);
/* Check for error conditions */
...
...
@@ -883,13 +895,13 @@ HAL_SD_ErrorTypedef HAL_SD_WriteBlocks(SD_HandleTypeDef *hsd, uint32_t *pWriteBu
* to check the completion of the read process
* @param hsd: SD handle
* @param pReadBuffer: Pointer to the buffer that will contain the received data
* @param
ReadAddr: Address
from where data is to be read
* @param
BlockNumber: Block number
from where data is to be read
(byte address = BlockNumber * BlockSize)
* @param BlockSize: SD card Data block size
* @note BlockSize must be 512 bytes.
* @param NumberOfBlocks: Number of blocks to read.
* @retval SD Card error state
*/
HAL_SD_ErrorTypedef
HAL_SD_ReadBlocks_DMA
(
SD_HandleTypeDef
*
hsd
,
uint32_t
*
pReadBuffer
,
uint
64
_t
ReadAdd
r
,
uint32_t
BlockSize
,
uint32_t
NumberOfBlocks
)
HAL_SD_ErrorTypedef
HAL_SD_ReadBlocks_
BlockNumber_
DMA
(
SD_HandleTypeDef
*
hsd
,
uint32_t
*
pReadBuffer
,
uint
32
_t
BlockNumbe
r
,
uint32_t
BlockSize
,
uint32_t
NumberOfBlocks
)
{
SDIO_CmdInitTypeDef
sdio_cmdinitstructure
;
SDIO_DataInitTypeDef
sdio_datainitstructure
;
...
...
@@ -937,10 +949,16 @@ HAL_SD_ErrorTypedef HAL_SD_ReadBlocks_DMA(SD_HandleTypeDef *hsd, uint32_t *pRead
/* Enable the DMA Stream */
HAL_DMA_Start_IT
(
hsd
->
hdmarx
,
(
uint32_t
)
&
hsd
->
Instance
->
FIFO
,
(
uint32_t
)
pReadBuffer
,
(
uint32_t
)(
BlockSize
*
NumberOfBlocks
)
/
4
);
uint32_t
ReadAddr
;
if
(
hsd
->
CardType
==
HIGH_CAPACITY_SD_CARD
)
{
BlockSize
=
512U
;
ReadAddr
/=
512U
;
BlockSize
=
512
;
ReadAddr
=
BlockNumber
;
}
else
{
// should not overflow for standard-capacity cards
ReadAddr
=
BlockNumber
*
BlockSize
;
}
/* Set Block Size for Card */
...
...
@@ -980,7 +998,7 @@ HAL_SD_ErrorTypedef HAL_SD_ReadBlocks_DMA(SD_HandleTypeDef *hsd, uint32_t *pRead
sdio_cmdinitstructure
.
CmdIndex
=
SD_CMD_READ_SINGLE_BLOCK
;
}
sdio_cmdinitstructure
.
Argument
=
(
uint32_t
)
ReadAddr
;
sdio_cmdinitstructure
.
Argument
=
ReadAddr
;
SDIO_SendCommand
(
hsd
->
Instance
,
&
sdio_cmdinitstructure
);
/* Check for error conditions */
...
...
@@ -1007,13 +1025,13 @@ HAL_SD_ErrorTypedef HAL_SD_ReadBlocks_DMA(SD_HandleTypeDef *hsd, uint32_t *pRead
* to check the completion of the write process (by SD current status polling).
* @param hsd: SD handle
* @param pWriteBuffer: pointer to the buffer that will contain the data to transmit
* @param
WriteAddr: Address from where data is to be read
* @param
BlockNumber: Block number to where data is to be written (byte address = BlockNumber * BlockSize)
* @param BlockSize: the SD card Data block size
* @note BlockSize must be 512 bytes.
* @param NumberOfBlocks: Number of blocks to write
* @retval SD Card error state
*/
HAL_SD_ErrorTypedef
HAL_SD_WriteBlocks_DMA
(
SD_HandleTypeDef
*
hsd
,
uint32_t
*
pWriteBuffer
,
uint
64
_t
WriteAdd
r
,
uint32_t
BlockSize
,
uint32_t
NumberOfBlocks
)
HAL_SD_ErrorTypedef
HAL_SD_WriteBlocks_
BlockNumber_
DMA
(
SD_HandleTypeDef
*
hsd
,
uint32_t
*
pWriteBuffer
,
uint
32
_t
BlockNumbe
r
,
uint32_t
BlockSize
,
uint32_t
NumberOfBlocks
)
{
SDIO_CmdInitTypeDef
sdio_cmdinitstructure
;
SDIO_DataInitTypeDef
sdio_datainitstructure
;
...
...
@@ -1061,10 +1079,16 @@ HAL_SD_ErrorTypedef HAL_SD_WriteBlocks_DMA(SD_HandleTypeDef *hsd, uint32_t *pWri
/* Enable SDIO DMA transfer */
__HAL_SD_SDIO_DMA_ENABLE
();
uint32_t
WriteAddr
;
if
(
hsd
->
CardType
==
HIGH_CAPACITY_SD_CARD
)
{
BlockSize
=
512U
;
WriteAddr
/=
512U
;
BlockSize
=
512
;
WriteAddr
=
BlockNumber
;
}
else
{
// should not overflow for standard-capacity cards
WriteAddr
=
BlockNumber
*
BlockSize
;
}
/* Set Block Size for Card */
...
...
@@ -1095,7 +1119,7 @@ HAL_SD_ErrorTypedef HAL_SD_WriteBlocks_DMA(SD_HandleTypeDef *hsd, uint32_t *pWri
sdio_cmdinitstructure
.
CmdIndex
=
SD_CMD_WRITE_MULT_BLOCK
;
}
sdio_cmdinitstructure
.
Argument
=
(
uint32_t
)
WriteAddr
;
sdio_cmdinitstructure
.
Argument
=
WriteAddr
;
SDIO_SendCommand
(
hsd
->
Instance
,
&
sdio_cmdinitstructure
);
/* Check for error conditions */
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment