Skocz do zawartości

[STM32] Funkcja obsługi SPI dla wielue urządzeń - różne paczki danych


Pomocna odpowiedź

Napisano

Witam

Nie mogę poradzić sobie z napisaniem funkcji do wysyłania różnych danych przez spi.

Problem jest w tym, że np dla dev1 wysyłam 1 bajt (uint8_t) a dla dev2 chce wysłać paczkę danych np tablicę uint8_t paczka[10] a dla dev3 paczkę danych, której wielkość zmienia się dynamicznie. Da się to zrobić w jednej funkcji?

typedef enum
{
dev1 = 0,
dev2,
dev3,
}DEV_Select;



void SPI_SEND(uint8_t data, DEV_Select x) {
if (x == dev1) {
	select_dev1();
	SPI_Send_Byte(data);
if (x == dev2) {
	select_dev2();
	SPI_Send_Byte(data);//jak wysłać tablicę 10 elementowa
}
   if (x == dev3) {
   	select_dev3();
   	SPI_Send_Byte(data); // jak wysłać tablicę x elementową
   }


}

To chyba wystarczy po prostu tak:

void send(uint8_t data[], uint8_t len, DEV_Select dev) {
   select_dev(dev); // tę funkcję powinieneś sobie napisać dodatkowo

   for (uint8_t i = 0; i < len; i++)
   {
       SPI_Send_Byte(data[i]);
   }
}

Ogólnie to programowanie mikrokontrolerów warto zacząć od nauki programowania 🙂

zagalopowałem się z tą jedną funkcją, która miała by mi wysyłać różne rodzaje danych (bajt, tablice bajtów i doszła do tego jeszcze struktura). Rozwiązałem to inaczej.

Napisałem funkcje dla każdego typu danych, która pakuje mi je w tablicę i zwraca wielkość jej wielkość. Następnie wysyłam wcześniej przygotowaną tablicę o znanej mi długości. Rozmiar tablicy jest dynamiczny - https://pl.wikibooks.org/wiki/C/Wska%C5%BAniki

quandziadek rzeczywiście najprostsze rozwiązanie jest najlepsze 🙂

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...