初级会员

- 积分
- 105
- 金钱
- 105
- 注册时间
- 2018-12-28
- 在线时间
- 39 小时
|
5金钱
我的数据包为162个字节,SPI从机接收,数据时一直在发送的,前161个字节收的数据都正常,但第162个数据一直出错。
以下是DMA的初始化配置。
- __HAL_LINKDMA(hspi,hdmarx,hdma_spi1_rx);
-
- hdma_spi1_rx.Instance = DMA2_Stream0;
- hdma_spi1_rx.Init.Channel = DMA_CHANNEL_3;
- hdma_spi1_rx.Init.Direction = DMA_PERIPH_TO_MEMORY;
- hdma_spi1_rx.Init.PeriphInc = DMA_PINC_DISABLE;
- hdma_spi1_rx.Init.MemInc = DMA_MINC_ENABLE;
- hdma_spi1_rx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
- hdma_spi1_rx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
- hdma_spi1_rx.Init.Mode = DMA_CIRCULAR;
- hdma_spi1_rx.Init.Priority = DMA_PRIORITY_HIGH;
- hdma_spi1_rx.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
- if (HAL_DMA_Init(&hdma_spi1_rx) != HAL_OK)
- {
- _Error_Handler(__FILE__, __LINE__);
- }
复制代码 以下时SPI的初始化配置
- hspi1.Instance = SPI1;
- hspi1.Init.Mode = SPI_MODE_SLAVE;
- hspi1.Init.Direction = SPI_DIRECTION_2LINES;
- hspi1.Init.DataSize = SPI_DATASIZE_8BIT;
- hspi1.Init.CLKPolarity = SPI_POLARITY_HIGH;
- hspi1.Init.CLKPhase = SPI_PHASE_2EDGE;
- hspi1.Init.NSS = SPI_NSS_SOFT;//SPI_NSS_HARD_OUTPUT;
- // hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2;
- hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB;
- hspi1.Init.TIMode = SPI_TIMODE_DISABLE;
- hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
- hspi1.Init.CRCPolynomial = 7;
- hspi1.Init.CRCLength = SPI_CRC_LENGTH_DATASIZE;
- hspi1.Init.NSSPMode = SPI_NSS_PULSE_ENABLE;
- if(HAL_SPI_Init(&hspi1) != HAL_OK) {
- _Error_Handler(__FILE__, __LINE__);
- }
-
- HAL_SPI_Receive_DMA(&hspi1, receive_data, 162);
复制代码
搞不清楚为什么,求解答
|
|