新手上路
- 积分
- 29
- 金钱
- 29
- 注册时间
- 2019-12-10
- 在线时间
- 8 小时
|
5金钱
如题,萌新第一次用SPI通讯麦克风,SPI配置如下:
static void MX_SPI3_Init(void)
{
hspi3.Instance = SPI3;
hspi3.Init.Mode = SPI_MODE_MASTER;
hspi3.Init.Direction = SPI_DIRECTION_2LINES_RXONLY;
hspi3.Init.DataSize = SPI_DATASIZE_16BIT;
hspi3.Init.CLKPolarity = SPI_POLARITY_LOW;
hspi3.Init.CLKPhase = SPI_PHASE_1EDGE;
hspi3.Init.NSS = SPI_NSS_SOFT;
hspi3.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_8;
hspi3.Init.FirstBit = SPI_FIRSTBIT_MSB;
hspi3.Init.TIMode = SPI_TIMODE_DISABLE;
hspi3.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
hspi3.Init.CRCPolynomial = 10;
if (HAL_SPI_Init(&hspi3) != HAL_OK)
{
Error_Handler();
}
}
波特率2M,符合芯片的工作范围。
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_DMA_Init();
MX_SPI3_Init();
while (1)
{
HAL_SPI_Receive_DMA(&hspi3,adc12buff,4);
HAL_Delay(2);
}
}
while里如果不加delay,能够顺利读到数据,但是如果加了delay,不管延时多少,都会没有数据,示波器看了下时钟信号几十ms才跳一下。但是在debug里面读取函数设置断点的话能看到寄存器DR里面是有数据的,现在也不知道问题到底出在哪里,求各位大佬指点一下。
|
|