Уведомления
Очистить все
Страница 2 / 2
Предыдущий
Вторая страница этой темы не пережила моих махинаций с базой данных, поэтому восстанавливаю вкратце... Итак, решение проблемы заключалось в том, чтобы передачу данных по SPI осуществить следующим образом:
//-------------------------------------------------------------------
void SPI_SendByte(uint8_t data)
{
while((SPI1->SR & SPI_SR_TXE) == RESET);
SPI1->DR = data;
}
//-------------------------------------------------------------------
void SPI_WaitLastData()
{
while((SPI1->SR & SPI_SR_TXE) == RESET);
while((SPI1->SR & SPI_SR_BSY) != RESET);
}
//-------------------------------------------------------------------
void SPI_SendDataMultiple(uint8_t *data, int num)
{
// Handle CS
for (int i = 0; i < num; i++)
{
SPI_SendByte(*data);
data++;
}
SPI_WaitLastData();
// Handle CS
}
//-------------------------------------------------------------------
Соответственно, если необходимо передать всего 1 байт суммарно, то после SPI_SendByte() также надо использовать SPI_WaitLastData().
Размещено : 28.12.2022 21:32
И я добавлю файлик, где перечислены ошибки при работе с SPI. Правда он про TFT дисплеи. Но общая идея очень хорошо расписана.
Размещено : 28.12.2022 22:33
Кажется, я нашёл ошибку, почему все так странно работало, но пока не получается отправить данные в сеть по udp, поэтому не могу точно говорить, что решение верное
Создатель темы Размещено : 10.01.2023 13:51
Страница 2 / 2
Предыдущий
