SPI Device API (#304)
* spi device config * fix api_interrupt_call warning * added configs for spi2 bus devices * simplified spi bus api * use new spi device api
This commit is contained in:
@@ -291,11 +291,9 @@ static uint8_t SD_ReadData(void);
|
||||
* - MSD_OK: Sequence succeed
|
||||
*/
|
||||
uint8_t BSP_SD_Init(void) {
|
||||
// TODO: SPI manager
|
||||
api_hal_spi_lock(&SPI_SD_HANDLE);
|
||||
|
||||
/* Init to maximum slow speed */
|
||||
SD_SPI_Reconfigure_Slow();
|
||||
// TODO: SPI manager
|
||||
api_hal_spi_lock_device(&sd_slow_spi);
|
||||
|
||||
/* Configure IO functionalities for SD pin */
|
||||
SD_IO_Init();
|
||||
@@ -304,11 +302,8 @@ uint8_t BSP_SD_Init(void) {
|
||||
SdStatus = SD_PRESENT;
|
||||
uint8_t res = SD_GoIdleState();
|
||||
|
||||
/* Init to maximum fastest speed */
|
||||
SD_SPI_Reconfigure_Fast();
|
||||
|
||||
// TODO: SPI manager
|
||||
api_hal_spi_unlock(&SPI_SD_HANDLE);
|
||||
api_hal_spi_unlock_device(&sd_slow_spi);
|
||||
|
||||
/* SD initialized and set to SPI mode properly */
|
||||
return res;
|
||||
|
@@ -87,12 +87,12 @@ Diskio_drvTypeDef USER_Driver = {
|
||||
DSTATUS USER_initialize(BYTE pdrv) {
|
||||
/* USER CODE BEGIN INIT */
|
||||
// TODO: SPI manager
|
||||
api_hal_spi_lock(&SPI_SD_HANDLE);
|
||||
api_hal_spi_lock_device(&sd_fast_spi);
|
||||
|
||||
DSTATUS status = User_CheckStatus(pdrv);
|
||||
|
||||
// TODO: SPI manager
|
||||
api_hal_spi_unlock(&SPI_SD_HANDLE);
|
||||
api_hal_spi_unlock_device(&sd_fast_spi);
|
||||
|
||||
return status;
|
||||
/* USER CODE END INIT */
|
||||
@@ -122,7 +122,7 @@ DRESULT USER_read(BYTE pdrv, BYTE* buff, DWORD sector, UINT count) {
|
||||
DRESULT res = RES_ERROR;
|
||||
|
||||
// TODO: SPI manager
|
||||
api_hal_spi_lock(&SPI_SD_HANDLE);
|
||||
api_hal_spi_lock_device(&sd_fast_spi);
|
||||
|
||||
if(BSP_SD_ReadBlocks((uint32_t*)buff, (uint32_t)(sector), count, SD_DATATIMEOUT) == MSD_OK) {
|
||||
/* wait until the read operation is finished */
|
||||
@@ -132,7 +132,7 @@ DRESULT USER_read(BYTE pdrv, BYTE* buff, DWORD sector, UINT count) {
|
||||
}
|
||||
|
||||
// TODO: SPI manager
|
||||
api_hal_spi_unlock(&SPI_SD_HANDLE);
|
||||
api_hal_spi_unlock_device(&sd_fast_spi);
|
||||
|
||||
return res;
|
||||
/* USER CODE END READ */
|
||||
@@ -153,7 +153,7 @@ DRESULT USER_write(BYTE pdrv, const BYTE* buff, DWORD sector, UINT count) {
|
||||
DRESULT res = RES_ERROR;
|
||||
|
||||
// TODO: SPI manager
|
||||
api_hal_spi_lock(&SPI_SD_HANDLE);
|
||||
api_hal_spi_lock_device(&sd_fast_spi);
|
||||
|
||||
if(BSP_SD_WriteBlocks((uint32_t*)buff, (uint32_t)(sector), count, SD_DATATIMEOUT) == MSD_OK) {
|
||||
/* wait until the Write operation is finished */
|
||||
@@ -163,7 +163,7 @@ DRESULT USER_write(BYTE pdrv, const BYTE* buff, DWORD sector, UINT count) {
|
||||
}
|
||||
|
||||
// TODO: SPI manager
|
||||
api_hal_spi_unlock(&SPI_SD_HANDLE);
|
||||
api_hal_spi_unlock_device(&sd_fast_spi);
|
||||
|
||||
return res;
|
||||
/* USER CODE END WRITE */
|
||||
@@ -186,7 +186,7 @@ DRESULT USER_ioctl(BYTE pdrv, BYTE cmd, void* buff) {
|
||||
if(Stat & STA_NOINIT) return RES_NOTRDY;
|
||||
|
||||
// TODO: SPI manager
|
||||
api_hal_spi_lock(&SPI_SD_HANDLE);
|
||||
api_hal_spi_lock_device(&sd_fast_spi);
|
||||
|
||||
switch(cmd) {
|
||||
/* Make sure that no pending write process */
|
||||
@@ -220,7 +220,7 @@ DRESULT USER_ioctl(BYTE pdrv, BYTE cmd, void* buff) {
|
||||
}
|
||||
|
||||
// TODO: SPI manager
|
||||
api_hal_spi_unlock(&SPI_SD_HANDLE);
|
||||
api_hal_spi_unlock_device(&sd_fast_spi);
|
||||
|
||||
return res;
|
||||
/* USER CODE END IOCTL */
|
||||
|
@@ -290,7 +290,7 @@ void SD_SPI_Reconfigure_Fast(void) {
|
||||
SPI_SD_HANDLE.Init.CLKPolarity = SPI_POLARITY_LOW;
|
||||
SPI_SD_HANDLE.Init.CLKPhase = SPI_PHASE_1EDGE;
|
||||
SPI_SD_HANDLE.Init.NSS = SPI_NSS_SOFT;
|
||||
SPI_SD_HANDLE.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_64;
|
||||
SPI_SD_HANDLE.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2;
|
||||
SPI_SD_HANDLE.Init.FirstBit = SPI_FIRSTBIT_MSB;
|
||||
SPI_SD_HANDLE.Init.TIMode = SPI_TIMODE_DISABLE;
|
||||
SPI_SD_HANDLE.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
|
||||
|
Reference in New Issue
Block a user