реклама на сайте
подробности

 
 
> SPI не принимает больше одного байта
Nosaer
сообщение Jun 29 2017, 11:37
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 85
Регистрация: 6-02-15
Пользователь №: 84 967



Доброго времени суток.
Столкнулся со следующей проблемой.
В данном случае SPI работает корректно:

Код
uint8_t    BufReadMR45[3] = {0x03,0x00,0x00};
uint8_t     DataReadMR45[5] = {0};    

    void ReadMR45(void)
    {

        HAL_GPIO_WritePin(PortCSMR45, PinCSMR45, GPIO_PIN_RESET);                                                        // CS on
        HAL_Delay(1);
        HAL_SPI_Transmit(&hspi1, &BufReadMR45[0], 3, 1000);                                                                // Отправка данных по SPI
        HAL_SPI_Receive(&hspi1, &DataReadMR45[0], 1, 1000);                                                                // Получение данных по SPI

        HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_SET);
        HAL_GPIO_WritePin(PortCSMR45, PinCSMR45, GPIO_PIN_SET);                                                            // CS off
        HAL_UART_Transmit(&huart1, &DataReadMR45[0], 1, 0x1000);                                                    // Отправляю данные по UART
        ByteMR45_R = ByteMR45_R + 1;
    }


Если я изменю функцию:
Код
HAL_SPI_Receive(&hspi1, &DataReadMR45[0], 5, 1000);

Чтобы считывать сразу больше 1 байта, программа зависает.
Отладчик приводит в HardFault_Handler(void)

Процессор STM32F030, до этого работал с серией F4, таких проблем вроде как не было.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 17:00
Рейтинг@Mail.ru


Страница сгенерированна за 0.01368 секунд с 7
ELECTRONIX ©2004-2016