71 lines
1.3 KiB
C
Raw Normal View History

2022-03-28 17:19:25 +08:00
#include <stdio.h>
#include "wm_hal.h"
void Error_Handler(void);
SPI_HandleTypeDef hspi;
static void SPI_Init(void);
#define data_len (20*1024)
uint8_t tx_data[data_len] = {0};
uint8_t rx_data[data_len] = {0};
int main(void)
{
int i = 0;
SystemClock_Config(CPU_CLK_160M);
printf("enter main\r\n");
SPI_Init();
for(i = 0; i < data_len; i++)
{
tx_data[i] = i;
}
while (1)
{
memset(rx_data, 0, data_len);
__HAL_SPI_SET_CS_LOW(&hspi);
// HAL_SPI_Transmit(&hspi, tx_data, data_len, 1000);
// HAL_SPI_Receive(&hspi, rx_data, data_len, 1000);
HAL_SPI_TransmitReceive(&hspi, tx_data, rx_data, data_len, 1000);
__HAL_SPI_SET_CS_HIGH(&hspi);
for (i = 0; i < data_len; i++)
{
if (rx_data[i] != tx_data[i])
{
printf("err\r\n");
break;
}
}
HAL_Delay(1000);
}
}
static void SPI_Init(void)
{
hspi.Instance = SPI;
hspi.Init.Mode = SPI_MODE_MASTER;
hspi.Init.CLKPolarity = SPI_POLARITY_LOW;
hspi.Init.CLKPhase = SPI_PHASE_1EDGE;
hspi.Init.NSS = SPI_NSS_SOFT;
hspi.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_20;
hspi.Init.FirstByte = SPI_LITTLEENDIAN;
if (HAL_SPI_Init(&hspi) != HAL_OK)
{
Error_Handler();
}
}
void Error_Handler(void)
{
while (1)
{
}
}
void assert_failed(uint8_t *file, uint32_t line)
{
printf("Wrong parameters value: file %s on line %d\r\n", file, line);
}