99 pSPI->
CR0 = (pSPI->
CR0 & ~0xFF) | pbits | pframeFormat | pclockMode;
113 pSPI->
CR1 = (pSPI->
CR1 & ~(1 << 2)) | pmode;
128 pSPI->
CPSR = prescale;
139 uint32_t SPI_clk, cr0_div, cmp_clk, prescale;
142 cmp_clk = 0xFFFFFFFF;
144 while (cmp_clk > bitRate)
146 cmp_clk = SPI_clk / ((cr0_div + 1) * prescale);
147 if (cmp_clk > bitRate)
202 (*(uint8_t *) ((uint32_t) xf_setup->
tx_data + xf_setup->
tx_cnt)));
225 *(uint8_t *) ((uint32_t) xf_setup->
rx_data + xf_setup->
rx_cnt) = rDat;
264 *(uint16_t *) ((uint32_t) xf_setup->
rx_data + xf_setup->
rx_cnt) = rDat;
341 uint32_t tx_cnt = 0, rx_cnt = 0;
352 wdata16 = (uint16_t *) buffer;
353 while (tx_cnt < buffer_len || rx_cnt < buffer_len)
379 while (tx_cnt < buffer_len || rx_cnt < buffer_len)
413 uint32_t rx_cnt = 0, tx_cnt = 0;
424 rdata16 = (uint16_t *) buffer;
425 while (tx_cnt < buffer_len || rx_cnt < buffer_len)
451 while (tx_cnt < buffer_len || rx_cnt < buffer_len)
uint32_t SPI_RWFrames_Blocking(SPI_T *pSPI, SPI_DATA_SETUP_T *xf_setup)
Чтение/запись методом постоянного опроса.
void SPI_SendFrame(SPI_T *pSPI, uint16_t tx_data)
Отправка слова данных по интерфейсу SPI.
SPI_RAWINTSTATUS_T
Тип для регистра RIS.
Этот файл содержит структуры, макросы и функции необходимые для взаимодействия с контроллером прямого...
void SPI_Set_Mode(SPI_T *pSPI, uint32_t pmode)
Установка режима работы (ведущий или ведомый).
void SPI_Write1BFifo(SPI_T *pSPI, SPI_DATA_SETUP_T *xf_setup)
Запись одного байта в буфер SPI.
#define SPI_Disable(gl_spi_t)
void SPI_Read2BFifo(SPI_T *pSPI, SPI_DATA_SETUP_T *xf_setup)
Чтение двух байт из буфера SPI.
void PWR_RST_Enable(CTRL_T CTRLn)
Ввод модуля в асинхронный сброс
enum FlagStatus IntStatus
SPI_STATUS_T
Тип для регистра SR.
#define SPI_ClearIntPending(gl_spi_t, gl_spi_intclr)
CTRL_T
Номера модулей в регистрах PWR_CLK_CTRL и PWR_RST_CTRL Расшифровка битовых полей для регистров PWR_CT...
Status SPI_Int_RWFrames8Bits(SPI_T *pSPI, SPI_DATA_SETUP_T *xf_setup)
Чтение/запись 8 бит данных при помощи прерываний.
Этот файл содержит описание адресного пространства микроконтроллера 5023ВС016.
void SPI_Read1BFifo(SPI_T *pSPI, SPI_DATA_SETUP_T *xf_setup)
Чтение одного байта из буфера SPI.
void SPI_SetClockRate(SPI_T *pSPI, uint32_t clk_rate, uint32_t prescale)
Установка скорости последовательного обмена: FSSPCLKOUT=FSSPCLK/(CPSDVR*(1+SCR))
Status SPI_Int_RWFrames16Bits(SPI_T *pSPI, SPI_DATA_SETUP_T *xf_setup)
Чтение/запись 16 бит данных при помощи прерываний.
uint32_t SPI_ReadFrames_Blocking(SPI_T *pSPI, uint8_t *buffer, uint32_t buffer_len)
Чтение методом постоянного опроса.
void PWR_CLK_Disable(CTRL_T CTRLn)
Отключение тактового сигнала от модуля
Структура для доступа к регистрам SPI.
Этот файл содержит структуры, макросы и функции необходимые для взаимодействия с интерфейсом SPI...
FlagStatus
Тип для состояний флагов
void SPI_Init(SPI_T *pSPI)
Инициализация SPI.
void SPI_SetFormat(SPI_T *pSPI, uint32_t pbits, uint32_t pframeFormat, uint32_t pclockMode)
Установка формата информационного кадра
void PWR_RST_Disable(CTRL_T CTRLn)
Вывод модуля из асинхронного сброса
#define SPI1
Указатель на структуру SPI1.
void PWR_CLK_Enable(CTRL_T CTRLn)
Подача тактового сигнала на модуль
FlagStatus SPI_GetStatus(SPI_T *pSPI, SPI_STATUS_T pStat)
Получение текущего статуса контроллера SPI.
IntStatus SPI_GetRawIntStatus(SPI_T *pSPI, SPI_RAWINTSTATUS_T pRawInt)
Получение статуса прерывания.
IntStatus SPI_GetIntStatus(SPI_T *pSPI, SPI_MASKINTSTATUS_T pMaskInt)
Получение статуса маскированного прерывания.
Структура для работы с буфером SPI.
uint32_t SPI_WriteFrames_Blocking(SPI_T *pSPI, uint8_t *buffer, uint32_t buffer_len)
Запись методом постоянного опроса.
SPI_MASKINTSTATUS_T
Тип для регистра MIS.
Этот файл содержит структуры, макросы и функции необходимые для взаимодействия с регистрами общего на...
const unsigned int sys_freq
uint16_t SPI_ReceiveFrame(SPI_T *pSPI)
Прием слова данных по интерфейсу SPI.
Status
Тип для статуса операции
void SPI_DeInit(SPI_T *pSPI)
Сброс SPI.
#define SPI_CR0_DSS(x)
Макросы и типы для регистра CR0.
void SPI_Write2BFifo(SPI_T *pSPI, SPI_DATA_SETUP_T *xf_setup)
Запись двух байт в буфер SPI.
#define SPI_DR_DATA(x)
Макросы для регистра DR.
void SPI_Int_FlushData(SPI_T *pSPI)
Очистка буфера приемника и сброс флагов прерываний.
void SPI_SetBitRate(SPI_T *pSPI, uint32_t bitRate)
Установка частоты тактового сигнала для интерфейса SPI.
CTRL_T SPI_GetCtrlNum(SPI_T *pSPI)
Возвращает номер модуля для использования в функциях включения/выключения SPI.
uint8_t SPI_GetDataSize(SPI_T *pSPI)
Получение числа бит в одном слове данных.