35 #define SPI_BUF_SIZE 64 36 #define SPI_DATA_BIT_NUM(databits) (databits+1) 37 #define SPI_DATA_BYTES(databits) (((databits) > SPI_BITS_8) ? 2:1) 38 #define SPI_LO_BYTE_MSK(databits) ((SPI_DATA_BYTES(databits) > 1) ? 0xFF:(0xFF>>(8-SPI_DATA_BIT_NUM(databits)))) 39 #define SPI_HI_BYTE_MSK(databits) ((SPI_DATA_BYTES(databits) > 1) ? (0xFF>>(16-SPI_DATA_BIT_NUM(databits))):0) 42 #pragma data_alignment = 0x400 43 #pragma location=".noinit" 62 CMN_REG->ALT_FUNCTION_CTRL[3] = 0;
63 GPIO_D->ALTFUNCSET =(
GPIO_D->ALTFUNCSET&0)|(1<<7)|(1<<8)|(1<<9)|(1<<10)
64 |(1<<11)|(1<<12)|(1<<13)|(1<<14);
70 static uint8_t
Buffer_Verify(uint8_t bits, uint16_t * src_addr, uint16_t * dst_addr)
197 PRINT(
"Тестирование SPI");
221 PRINT(
"Тест SSP завершен с ошибкой");
265 PRINT(
"Тест SSP завершен с ошибкой");
292 DMA->CTRL_BASE_PTR = (uint32_t) &DMA_SPI_CTRL;
294 DMA->CHNL_ENABLE_SET = 0x0F;
295 DMA->CHNL_USEBURST_CLR |= 0x0F;
300 DMA_N_MINUS_1(SPI_BUF_SIZE - 1) |
DMA_R_POWER(2) | \
309 DMA_N_MINUS_1(SPI_BUF_SIZE - 1) |
DMA_R_POWER(2) | \
334 PRINT(
"Тест SSP завершен с ошибкой");
339 PRINT(
"Тест SSP завершен успешно");
void SPI_DeInit(SPI_T *pSPI)
Сброс SPI.
static uint16_t Master_Tx_Buf[SPI_BUF_SIZE]
#define DMA_DST_PROT_BUFFER_DIS
#define SPI_LO_BYTE_MSK(databits)
uint16_t SPI_ReceiveFrame(SPI_T *pSPI)
Прием слова данных по интерфейсу SPI.
#define DMA
Указатель на структуру DMA.
#define SPI_TXInt_Disable(gl_spi_t)
#define PRINT(...)
Макросы для использования отладочного выхода
Структура для доступа к управлющим данным всех каналов
#define PRINTSTREAM(...)
Печать в СОМ порт
uint32_t src_data_end_ptr
SPI_CLOCK_MODE_T clockMode
void NVIC_EnableIRQ(IRQn_T IRQn, uint32_t vec)
Разрешение прерывания
void SPI_SetFormat(SPI_T *pSPI, uint32_t pbits, uint32_t pframeFormat, uint32_t pclockMode)
Установка формата информационного кадра
#define SPI_HI_BYTE_MSK(databits)
static uint16_t Slave_Rx_Buf[SPI_BUF_SIZE]
#define DMA_DST_PROT_PRIVILEGE_DIS
#define SPI_RXInt_Enable(gl_spi_t)
#define SPI_Enable(gl_spi_t)
static SPI_CONFIG_T ssp_config
#define DMA_SRC_ADDR_INC_HALFWORD
static SPI_DATA_SETUP_T master_setup
#define SPI_TXInt_Enable(gl_spi_t)
#define SPI2
Указатель на структуру SPI2.
Этот файл содержит структуры, макросы и функции необходимые необходимые для тестовой программы для ап...
#define DMA_NEXT_USEBURST_DIS
char dbg_buffer[256]
Отладочный буфер
FlagStatus SPI_GetStatus(SPI_T *pSPI, SPI_STATUS_T pStat)
Получение текущего статуса контроллера SPI.
void DMA_DONE_SPI_2_IRQ(void)
Обработчик прерывания для DMA SPI2.
SPI_FRAME_FORMAT_T frameFormat
uint32_t SPI_Test(void)
Основная программа тестирования SPI.
void Init_ports_SPI()
настройка портов для SPI для первого из режимов альтернативных функций
static SPI_DATA_SETUP_T slave_setup
#define SPI1
Указатель на структуру SPI1.
Структура для работы с буфером SPI.
void DMA_DONE_SPI_1_IRQ(void)
Обработчик прерывания для DMA SPI1.
void NVIC_DisableIRQ(uint32_t vec)
Запрещение прерывания
#define DMA_SRC_PROT_BUFFER_DIS
#define DMA_DST_ADDR_INC_NULL
static uint16_t Slave_Tx_Buf[SPI_BUF_SIZE]
#define DMA_SRC_PROT_PRIVILEGE_DIS
void SPI_1_IRQ(void)
Обработчик прерываний от SPI1.
void SPI_2_IRQ(void)
Обработчик прерываний от SPI2.
uint32_t dst_data_end_ptr
#define DMA_DST_ADDR_INC_HALFWORD
void SPI_SendFrame(SPI_T *pSPI, uint16_t tx_data)
Отправка слова данных по интерфейсу SPI.
static uint8_t Buffer_Verify(uint8_t bits, uint16_t *src_addr, uint16_t *dst_addr)
Проверка данных после транзакции
static uint8_t dma_rx_done
void SPI_Set_Mode(SPI_T *pSPI, uint32_t pmode)
Установка режима работы (ведущий или ведомый).
void SPI_SetBitRate(SPI_T *pSPI, uint32_t bitRate)
Установка частоты тактового сигнала для интерфейса SPI.
DMA_CHNL_CTRL_T prim_chan[32]
void SPI_Init(SPI_T *pSPI)
Инициализация SPI.
#define SPI_DATA_BYTES(databits)
#define CMN_REG
Указатель на структуру CMN_REG.
void SPI_Int_FlushData(SPI_T *pSPI)
Очистка буфера приемника и сброс флагов прерываний.
void DBG_TX_Flush(void)
Вывод всех данных, накопленных в кольцевом буфере, в отладочный UART.
static uint16_t Master_Rx_Buf[SPI_BUF_SIZE]
#define DMA_SRC_ADDR_INC_NULL
static uint8_t dma_tx_done
const uint32_t sys_freq
Системная частота
#define GPIO_D
Указатель на структуру GPIO_D.