Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 14 lip 2025, o 21:00


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 18 ] 
    Autor Wiadomość
    PostNapisane: 2 maja 2017, o 10:30 
    Offline
    Użytkownik

    Dołączył(a): 28 mar 2014
    Posty: 79
    Zbananowany użytkownik

    Pomógł: 1

    Witam,

    Moje pytanie może wydać się głupie, ale wynika ono z tego, że nigdy nie korzystałem z magistrali CAN (nie było potrzeby), natomiast teraz chciałbym się nią pobawić. Moduł DISCO-F429ZI posiada na swoim pokładzie kilka wyjść CAN (wyjścia to np. CAN1_TD oraz CAN1_RD). Szczerze mówiąc byłem pewien, że kontroler magistrali jest wbudowany w mikrokontroler albo znajduje się na płytce. Okazuje się, że nie i należy wykorzystać dodatkowo na przykład PCA82C251, który "wyprodukuje" dopiero sygnał różnicowy.

    I tutaj przechodzę do właściwego pytania. Chcąc połączyć ze sobą powiedzmy dwie płytki discovery, czy powinienem zrobić to w ten sposób?

    uC1 (CAN) <-> PCA82C251 <-> PCA82C251<-> uC2 (CAN)

    I jeszcze jestem ciekaw co by się stało gdyby połączyć mikrokontrolery bez układu PCA82C251, czyli bezpośrednio złączyć ze sobą wyjścia CAN?

    Wszystkie moje wątpliwości wynikają z tego, że byłem pewien, iż już na wyjściach CAN pojawia się sygnał różnicowy.

    Z góry dziękuję za odpowiedzi i przepraszam jeżeli moje pytanie jest banalne.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 2 maja 2017, o 10:56 
    Offline
    Użytkownik

    Dołączył(a): 04 paź 2011
    Posty: 8615
    Pomógł: 338

    w tym sęk cały że właśnie kontroler CAN jest wbudowany w mikrokontroler , ale
    ze względu na universane wykorzystanie GPIO na których ów CAN się też znajduje
    należy do tych wyjść podłączyć transceiver, który wygeneruje właśnie odpowiednie
    sygnały dostosowane do właczenia w magistralę can

    dlatego musisz obu płytkom zapewnić transceivery .

    Układ PCA82C251 nie będzie tu odpowiedni gdyż napiecie pracy to VCC = 4.5 V to 5.5 V
    a twój mikrokontroler pracuje z napięciem 3,3V

    i tu lepszym rozwiązaniem jest zastosowanie transceiverów SN65HVD230


    Autor postu otrzymał pochwałę

    _________________
    Zbuduj swój system [url=https://helion.pl/ksiazki/w-labiryncie-iot-budowanie-urzadzen-z-wykorzystaniem-ukladow-esp8266-i-esp32-andrzej-gromczynski,wlablo.htm#format/d]IOT[/url]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 2 maja 2017, o 15:05 
    Offline
    Użytkownik

    Dołączył(a): 25 lip 2013
    Posty: 2596
    Pomógł: 129

    Moim zdaniem jeśli byś połączył tylko dwa urządzenia ze sobą to teoretycznie przy testach na b. małych odległościach powinno to chodzić (tx połączony z rx). Tylko po co, skoro drivery nie są drogie? Gwoli ścisłości - driver zamienia sygnal ttl na parę rożnicową.
    Uczmy się w takiej konfiguracji w jakiej system ma działać docelowo. Bo za chwilę się okaże ze skoro działało na biurku bez driverow to ktoś dojdzie do wniosku, że w rzeczywistości też będzie działać bez i zacznie tworzyć układy bez driverów i kłopoty gotowe.

    Sent from my Mi-4c using Tapatalk



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 2 maja 2017, o 18:48 
    Offline
    Użytkownik

    Dołączył(a): 04 paź 2011
    Posty: 8615
    Pomógł: 338

    micky napisał(a):
    Moim zdaniem jeśli byś połączył tylko dwa urządzenia ze sobą to teoretycznie przy testach na b. małych odległościach powinno to chodzić (tx połączony z rx). Tylko po co, skoro drivery nie są drogie? Gwoli ścisłości - driver zamienia sygnal ttl na parę rożnicową.


    Nawet nie wnikam skąd koledze takie coś do głowy przyszło ....
    Transceiver ma być i koniec ... nie jest to drogi układ nawet w postaci płytki modułowej to tylko parę złotych
    jak ma być CAN to ma być CAN a nie jakieś tam pseudokomunikacje ...

    albo się trzymamy specyfikacji i założeń i standardu modelu medium transmisyjnego dla danej magistrali , albo
    na co to komu ??

    W czym kłopot dla kolegi autora zakupić 2 moduły np :
    Obrazek

    i pracować jak człowiek z CAN , czy 2 układy i sobie samemu zlutować płytki ??
    nikt nie mówił że elektronika jest prosta i tania , czasem trzeba dokupić to i owo , choć tu i tak jest przecież ułatwienie
    bo nie trzeba dokładac kontrolera CAN komunikować się z nim po SPI i bawić w oprogramowanie i komunikację ...

    micky napisał(a):
    Bo za chwilę się okaże ze skoro działało na biurku bez driverow to ktoś dojdzie do wniosku, że w rzeczywistości też będzie działać bez i zacznie tworzyć układy bez driverów i kłopoty gotowe.


    w tym problem że kłopoty tylko będa a nie działanie ... niech sobie TTL kolega wepnie w CAN to się kolega zdziwi
    to że nie zadziała to nic w porównaniu z uszkodzeniami nie tylko płytki z F4 -- ale i innych dołączonych do magistrali

    _________________
    Zbuduj swój system [url=https://helion.pl/ksiazki/w-labiryncie-iot-budowanie-urzadzen-z-wykorzystaniem-ukladow-esp8266-i-esp32-andrzej-gromczynski,wlablo.htm#format/d]IOT[/url]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 2 maja 2017, o 19:49 
    Offline
    Użytkownik

    Dołączył(a): 25 lip 2013
    Posty: 2596
    Pomógł: 129

    Gwoli wyjaśnienia, bo chyba zostałem opatrznie zrozumiany.

    Z postu kolegi r03c10 zrozumiałem, że chciałby połączyć swoje dwa uC po CANbusie nie używając po obu stronach driverów.
    I to jest możliwe (teoretycznie) - tak samo jak podłączanie dwóch uC po tx/rx bez używania np. MAX232 po obu stronach.
    W żaden sposób nie sugerowałem aby sygnał TTL/cyfrowy (z jednej strony) podłączać do istniejącej magistrali róznicowej CAN (czyli tej z driverami).

    Ale to tak na marginesie, bo to takie akademickie dyskusje :)

    Czasami możliwość wpinania się w sygnał cyfrowy (pomiedzy uC a driverem) bardzo się przydaje - możemy w ten sposób podsłuchiwać
    transmisję i inne rzeczy. Ale to już zupełnie inny temat rzeka :)

    ps. Pisząc o TTL - użyłem skrótu myślowego - chodziło mi sygnał cyfrowy wychodzący bezpośrednio z uC.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 3 maja 2017, o 10:27 
    Offline
    Użytkownik

    Dołączył(a): 28 mar 2014
    Posty: 79
    Zbananowany użytkownik

    Pomógł: 1

    Dziękuję za bardzo wyczerpujące odpowiedzi. Moje pytanie o łączenie płytek bez układu pośredniczącego było czysto teoretyczne i wynikało z ciekawości :D



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 3 maja 2017, o 10:59 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 28 lis 2012
    Posty: 283
    Lokalizacja: Warszawa
    Pomógł: 17

    r03c10 napisał(a):
    Dziękuję za bardzo wyczerpujące odpowiedzi. Moje pytanie o łączenie płytek bez układu pośredniczącego było czysto teoretyczne i wynikało z ciekawości :D


    W/g dokumentacji np. Keila, da się testować CAN bez transiverów, trzeba tylko odpowiednio "zasymulować" obwód:

    Obrazek

    źródło: http://www.keil.com/appnotes/files/apnt_236.pdf

    _________________
    Pozdrawiam
    Grzegorz



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 3 maja 2017, o 11:09 
    Offline
    Użytkownik

    Dołączył(a): 04 paź 2011
    Posty: 8615
    Pomógł: 338

    oczywiście jest to wykonalne tylko po co ??

    _________________
    Zbuduj swój system [url=https://helion.pl/ksiazki/w-labiryncie-iot-budowanie-urzadzen-z-wykorzystaniem-ukladow-esp8266-i-esp32-andrzej-gromczynski,wlablo.htm#format/d]IOT[/url]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 3 maja 2017, o 11:33 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 28 lis 2012
    Posty: 283
    Lokalizacja: Warszawa
    Pomógł: 17

    SunRiver napisał(a):
    oczywiście jest to wykonalne tylko po co ??


    Oj Sun - chociażby dla samej idei - czy się da :)

    _________________
    Pozdrawiam
    Grzegorz



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 3 maja 2017, o 12:03 
    Offline
    Użytkownik

    Dołączył(a): 04 paź 2011
    Posty: 8615
    Pomógł: 338

    buz11 napisał(a):
    Oj Sun - chociażby dla samej idei - czy się da


    zabrzmiało jak slogan z PRL

    _________________
    Zbuduj swój system [url=https://helion.pl/ksiazki/w-labiryncie-iot-budowanie-urzadzen-z-wykorzystaniem-ukladow-esp8266-i-esp32-andrzej-gromczynski,wlablo.htm#format/d]IOT[/url]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 3 maja 2017, o 18:59 
    Offline
    Użytkownik

    Dołączył(a): 28 mar 2014
    Posty: 79
    Zbananowany użytkownik

    Pomógł: 1

    No dobrze, uzbrojony w te cenne informacje w najbliższym czasie będę testował magistralę CAN tylko muszę się zaopatrzyć w układy pośredniczące.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 3 maja 2017, o 19:02 
    Offline
    Użytkownik

    Dołączył(a): 04 paź 2011
    Posty: 8615
    Pomógł: 338

    r03c10 napisał(a):
    No dobrze, uzbrojony w te cenne informacje w najbliższym czasie będę testował magistralę CAN tylko muszę się zaopatrzyć w układy pośredniczące.


    i to jest dobra koncepcja :) jak cos robic to dobrze od poczatku :)

    _________________
    Zbuduj swój system [url=https://helion.pl/ksiazki/w-labiryncie-iot-budowanie-urzadzen-z-wykorzystaniem-ukladow-esp8266-i-esp32-andrzej-gromczynski,wlablo.htm#format/d]IOT[/url]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 3 maja 2017, o 19:11 
    Offline
    Użytkownik

    Dołączył(a): 28 mar 2014
    Posty: 79
    Zbananowany użytkownik

    Pomógł: 1

    I dlatego rozpocząłem tą dyskusję żeby nie zrobić falstartu :)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 27 maja 2017, o 17:24 
    Offline
    Użytkownik

    Dołączył(a): 28 mar 2014
    Posty: 79
    Zbananowany użytkownik

    Pomógł: 1

    Po dłuższej przerwie kontynuuję temat. Czy ma ktoś może jakiś prosty przykład nadawania i odbierania przez CAN w sTM32? I czy dobrze myślę, że przez CAN możemy jednorazowo wysłać tylko osiem znaków? Pytam ponieważ bufor (hcan.pTxMsg->Data) jest tablicą ośmioelementową.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 27 maja 2017, o 21:43 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 28 lis 2012
    Posty: 283
    Lokalizacja: Warszawa
    Pomógł: 17

    r03c10 napisał(a):
    Po dłuższej przerwie kontynuuję temat. Czy ma ktoś może jakiś prosty przykład nadawania i odbierania przez CAN w sTM32?



    Ja posiłkowałem się tym przykładem:
    http://www.keil.com/download/docs/351.asp
    i wszystko działa jak powinno.

    r03c10 napisał(a):
    I czy dobrze myślę, że przez CAN możemy jednorazowo wysłać tylko osiem znaków? Pytam ponieważ bufor (hcan.pTxMsg->Data) jest tablicą ośmioelementową.


    W CAN 2.0 A i B masz pole danych 8-bajtowe. Ale jest CAN-FD i tam możesz mieć już do 64 bajtów.

    _________________
    Pozdrawiam
    Grzegorz



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 28 maja 2017, o 09:35 
    Offline
    Użytkownik

    Dołączył(a): 28 mar 2014
    Posty: 79
    Zbananowany użytkownik

    Pomógł: 1

    Dzięki za link. Co do CAN-FD to chyba STM32F4 nie obsługuje tego standardu.

    Wygenerowałem sobie przykład w CubeMX i chcę przesłać dane z CAN1 do CAN2 na płytce DISCO-F429ZI. Korzystam z takich przejściówek jakie był polecane wcześniej w temacie. Niestety jedyne co widzę kiedy podłączyłem analizator logiczny to error frame:

    Obrazek

    Czy ktoś może potwierdzić, że takie przesłanie z CAN do CAN w obrębie jednego procesora jest w ogóle możliwe?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 28 maja 2017, o 11:50 
    Offline
    Użytkownik

    Dołączył(a): 28 mar 2014
    Posty: 79
    Zbananowany użytkownik

    Pomógł: 1

    Kurczę, no i jeszcze podejrzałem sobie co zwraca funkcja HAL_CAN_Transmit i otrzymuję 0, czyli wszystko powinno być ok. Jeżeli rozłączę któryś z przewodów różnicowych to funkcja zwraca 1 bądź 3. Co tutaj może być nie tak? Może trzeba zasilać SN65HV230 z 3.3 V, a nie z 3 V bo to za mało?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 28 maja 2017, o 19:25 
    Offline
    Użytkownik

    Dołączył(a): 28 mar 2014
    Posty: 79
    Zbananowany użytkownik

    Pomógł: 1

    I jeszcze jedno pytanie mi się nasunęło. Czy jeżeli mam dwa małe STMy, które dysponują tylko jednym wyjściem CAN i mogę je ustawić tylko w trybie master mode w CubeMX to czy mogę ze sobą skomunikować dwa takie małe mikrokontrolery czy koniecznie muszę mieć na magistrali jakiś slave?

    Ogólnie to nie spodziewałem się, że CAN okaże się tak nieprzystępnym interfejsem.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    Wyświetl posty nie starsze niż:  Sortuj wg  
    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 18 ] 

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość


    Nie możesz rozpoczynać nowych wątków
    Nie możesz odpowiadać w wątkach
    Nie możesz edytować swoich postów
    Nie możesz usuwać swoich postów
    Nie możesz dodawać załączników

    Szukaj:
    Skocz do:  
    Sitemap
    Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
    phpBB SEO