1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/notrynohigh-BabyOS

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
mcu_hc32l17x_spi.c 2.4 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
notrynohigh Отправлено 10 месяцев назад cd2b0e0
#include "b_config.h"
#include "hal/inc/b_hal_spi.h"
typedef struct
{
volatile uint32_t CR;
volatile uint32_t SSN;
volatile uint32_t STAT;
volatile uint32_t DATA;
volatile uint32_t CR2;
volatile uint32_t ICLR;
} bMcuSpi_t;
#define MCU_SPI0_BASE ((bMcuSpi_t *)0x40000800UL)
#define MCU_SPI1_BASE ((bMcuSpi_t *)0x40004800UL)
static bMcuSpi_t *bMcuSpiTable[] = {MCU_SPI0_BASE, MCU_SPI1_BASE};
int bMcuSpiSetSpeed(const bHalSPIIf_t *spi_if, bHalSPISpeed_t speed)
{
return -1;
}
uint8_t bMcuSpiTransfer(const bHalSPIIf_t *spi_if, uint8_t dat)
{
if (IS_NULL(spi_if) || (spi_if->_if.spi > B_HAL_SPI_2))
{
return 0;
}
while ((bMcuSpiTable[spi_if->_if.spi]->STAT & (0x1 << 2)) == 0)
{
;
}
bMcuSpiTable[spi_if->_if.spi]->DATA = dat;
while ((bMcuSpiTable[spi_if->_if.spi]->STAT & (0x1 << 1)) == 0)
{
;
}
return bMcuSpiTable[spi_if->_if.spi]->DATA;
}
int bMcuSpiSend(const bHalSPIIf_t *spi_if, const uint8_t *pbuf, uint16_t len)
{
if (IS_NULL(spi_if) || IS_NULL(pbuf) || (len == 0) || (spi_if->_if.spi > B_HAL_SPI_2))
{
return -1;
}
uint32_t u32Index = 0;
uint8_t tmp = 0;
for (u32Index = 0; u32Index < len; u32Index++)
{
while ((bMcuSpiTable[spi_if->_if.spi]->STAT & (0x1 << 2)) == 0)
{
;
}
bMcuSpiTable[spi_if->_if.spi]->DATA = pbuf[u32Index];
while ((bMcuSpiTable[spi_if->_if.spi]->STAT & (0x1 << 1)) == 0)
{
;
}
tmp = bMcuSpiTable[spi_if->_if.spi]->DATA;
}
while ((bMcuSpiTable[spi_if->_if.spi]->STAT & (0x1 << 2)) == 0)
{
;
}
while ((bMcuSpiTable[spi_if->_if.spi]->STAT & (0x1 << 3)))
{
;
}
return len;
}
int bMcuSpiReceive(const bHalSPIIf_t *spi_if, uint8_t *pbuf, uint16_t len)
{
if (IS_NULL(spi_if) || IS_NULL(pbuf) || (len == 0) || (spi_if->_if.spi > B_HAL_SPI_2))
{
return -1;
}
uint32_t u32Index = 0;
for (u32Index = 0; u32Index < len; u32Index++)
{
while ((bMcuSpiTable[spi_if->_if.spi]->STAT & (0x1 << 2)) == 0)
{
;
}
bMcuSpiTable[spi_if->_if.spi]->DATA = 0x0;
while ((bMcuSpiTable[spi_if->_if.spi]->STAT & (0x1 << 1)) == 0)
{
;
}
pbuf[u32Index] = bMcuSpiTable[spi_if->_if.spi]->DATA;
}
while ((bMcuSpiTable[spi_if->_if.spi]->STAT & (0x1 << 3)))
{
;
}
return len;
}

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://gitlife.ru/oschina-mirror/notrynohigh-BabyOS.git
git@gitlife.ru:oschina-mirror/notrynohigh-BabyOS.git
oschina-mirror
notrynohigh-BabyOS
notrynohigh-BabyOS
master