Привет.
Создал проект для начало в кубе. И увидал странность.
Зависает SPI4 у меня, не сразу а через какое то время работы.
Причем зависает а биты ошибок не ставит.
Примерно на пол пути передачи ставит бит RXNE в единицу и молчит. Если в ручною сбросить его то все дальше работает. Потом проходит какое то время и снова бит RXNE в единице. Такое ощущение что не читается регистр SPI_DR.
В счетчики DMA_SxNDTR остается число, каждый раз разное.
Бит OVR не установлен. Ошибок от DMA нет. Проверял несколько раз.
Вот скриншот всех основных битов. Видно бит RXNE в нуле. Значит данные из SPI не переданы в ОЗУ. DMA2 3 канал приемник 1 канал передатчик.
Может кто подскажет в чем проблема ?
Пытался выловить ошибки DMA:
Код
void DMA2_Stream1_IRQHandler(void)
{
/* USER CODE BEGIN DMA2_Stream1_IRQn 0 */
/* if(DMA2->LISR & DMA_LISR_TCIF1)
{
while(1);
} */
if(DMA2->LISR & DMA_LISR_TEIF1)
{
while(1);
}
if(DMA2->LISR & DMA_LISR_DMEIF1)
{
while(1);
}
if(DMA2->LISR & DMA_LISR_FEIF1)
{
while(1);
}
/* USER CODE END DMA2_Stream1_IRQn 0 */
HAL_DMA_IRQHandler(&hdma_spi4_tx);
/* USER CODE BEGIN DMA2_Stream1_IRQn 1 */
/* USER CODE END DMA2_Stream1_IRQn 1 */
}
Сообщение отредактировал Alex_Golubev - Jun 27 2018, 05:14
Эскизы прикрепленных изображений