Top.Mail.Ru
Уведомления
Очистить все

[Решено] Отключается ножка MISO

Страница 2 / 2
Aveal
(@aveal)
Top level Admin

Вторая страница этой темы не пережила моих махинаций с базой данных, поэтому восстанавливаю вкратце... Итак, решение проблемы заключалось в том, чтобы передачу данных по 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
(@eduard)
Level 4 Moderator

И я добавлю файлик, где перечислены ошибки при работе с SPI. Правда он про TFT дисплеи. Но общая идея очень хорошо расписана.

ОтветитьЦитата
Размещено : 28.12.2022 22:33
(@rodion-2)
Level 3

Кажется, я нашёл ошибку, почему все так странно работало, но пока не получается отправить данные в сеть по udp, поэтому не могу точно говорить, что решение верное 

ОтветитьЦитата
Создатель темы Размещено : 10.01.2023 13:51
Страница 2 / 2
Поделиться: