Skocz do zawartości

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


hagop

Pomocna odpowiedź

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ą
   }


}
Link do komentarza
Share on other sites

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 🙂

Link do komentarza
Share on other sites

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 🙂

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

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...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.