Escolar Documentos
Profissional Documentos
Cultura Documentos
AVT 5280
dw nazywanych CAN High (CANH) oraz CAN Low (CANL), ktre su do rnicowego przesyania sygnaw (stan magistrali idane interpretowane s za pomoc rnicy napi midzy przewodami). Linie sygnaowe na obu kocach s ze sob poczone za pomoc rezystorw o opornoci 120 V, co zapewnia dopasowanie energetyczne. Podstawow topologi sieci CAN jest magistrala, a wic architektura sieciowa polegajca na poczeniu szeregowym wzw sieci do wsplnego medium transmisyjnego (rysunek1). W sieci CAN mona przesya dane z prdkoci do 1 Mbit/s, jednak tak warto prdkoci mona uzyska tylko wmagistralach omaym zasigu, nieprzekraczajcym 40 metrw. Wyduenie magistrali jest moliwe do uzyskania kosztem prdkoci transmisji. W skrajnym przypadku mona osign dugo magistrali rzdu 10 km (przy prdkoci transmisji 5 kbit/s, rysunek2). Warstwa druga modelu OSI/ISO standardu CAN specyfikuje cztery rodzaje ramek komunikacyjnych. S to: ramka danych, ramka zdalnego wywoania, ramka sygnalizacji bdu, ramka przepenienia. Informacje s przesyane w ramce danych. Doku-
mentacja firmy Bosch wyrnia dwa rodzaje ramek danych: standardow (wersja CAN 2.0A) oraz rozszerzon (CAN 2.0B). Te dwie wersje definiuj odmienne formaty ramek wiadomoci, gwnie rnice si dugoci identyfikatora. Standard CAN 2.0A cechuje si adresem ramki o dugoci 11 bitw (rysunek 3), natomiast w standardzie CAN ELEKTRONIKA PRAKTYCZNA 3/2011
22
23
PROJEKTY
Na CD: karty katalogowe i noty aplikacyjne elementw oznaczonych w Wykazie elementw kolorem czerwonym
Wykaz elementw Rezystory: R1: 10 kV (SMD, 0805) R2: 1 MV (SMD, 0805) R3: 1,5 kV (SMD, 0805) R4, R5: 22 V (SMD, 0805) R6: 120 V (SMD, 0805) R7...R9: 150 V (SMD, 0805) Kondensatory: C1..C6: 100 nF (SMD, 0805) C7, C8: 22 pF (SMD, 0805) C9: 10 mF (tantalowy, A) C10, C11: 1 mF (0805) Pprzewodniki: IC1: STM32F103RCT6 IC2: MCP1802T-33 IC3: SN65HVD230 Inne: Q1: 25 MHz (SMD) RX, TX, PWR: dioda LED (3 mm) USB_CON: gniazdo USB typu B, ktowe SWD_CON: gniazdo IDC10 proste JP1: zcze szpilkowe (2 goldpiny) JP2: zcze szpilkowe (3 goldpiny) Obudowa ABS-2A
Liczba i rodzaj przetwornikw A/C Liczba i rodzaj przetwornikw C/A Rodzaj i ilo interfejsw komunikacyjnych Temperatura pracy Obudowa
Stacjonarny charakter urzdzenia i obsuga transmisji USB umoliwiaj zasilanie urzdzenia z gniazda USB, dlatego kolejn integraln czci testera powinien by stabilizator napicia. Schemat blokowy obrazujcy wzajemne relacje midzy tymi komponentami przedstawiono na rysunku6. W zrealizowanym projekcie wykorzystano mikrokontroler STM32F105RCT6 firmy STMicroelectronics. Naley on do rodziny Rysunek 6. Schemat blokowy analizatora CAN ukadw STM32 (rdze ARM Cortex-M3) z grupy Connectivity Line. Mikrokontroler jest bogato wyposaony w zasoby wewntrzne, do ktrych nale dua ilo pamici (256 kB Rysunek 7. Wyprowadzenia oraz struktura wewntrzna ukaFlash, 64kB SRAM) oraz du SN65HVD230 liczne peryferie: moduy Tab. 4 Parametry ukadu SN65HVD230 zegarowe (PLL do 72MHz), ukady licznikoNazwa parametru Warto we, przetwornik A/C oraz C/A, interfejsy komunikacyjne. Wrd ostatniej wymienionej Napicie zasilania 3.03.6 V grupy znajduj si interfejsy CAN (2) oraz Prdko transmisji do 1 Mbit/s USB (1). Istotn cech jest moliwo rwPobr prdu Tryb Normal do 17 mA noczesnego korzystania z obu peryferii, co Tryb Sleep mode 40 nA byo niemoliwe wdotychczasowych ukaTryb Standby mode 370 uA dach STM32, gdzie interfejsy te korzystaj Temperatura pracy 40+ 85 C ze wspdzielonych zasobw. SzczegoObudowa 8SOIC we zestawienie parametrw ukadu STM32F105RCT6 przedstawiono wtabeli3. Jako ukad nadawczo-odbiorczy CAN uyto SN65HVD230 firmy Texas Instruments. Do komunikacji zmikrokontrolerem ukad ma wyprowadzenia D i R, natomiast CANH i CANL do poczenia z magistral CAN (rysunek7). Do cech charakterystycznych ukadu mona zaliczy niski pobr prdu, mechanizm wyczenia w przypadku przegrzania oraz dostosowanie do zasilania napiciem 3,3V (tabela4). Na potrzeby projektu zastosowano stabilizator MCP1802T-33, ktry suy do zasilania mikrokontrolera oraz ukadu interfejsowego CAN. Atutem tego ukadu jest niewielka liczba komponentw potrzebnych do prawidowej pracy wystarcz dwa kondensatory ceramiczne 1mF. Wyprowadzenia oraz struktur wewntrzn ukadu wida na rysunku8. Dokadne parametry stabilizatora zamieszczono wtabeli5. 32F105RCT6 (IC1). Jego schemat aplikacyjny zaczerpnity zosta zdokumentacji producenta. Zgodnie zzaleceniami producenta do kadego wyprowadzenia zasilajcego (VBAT, VDDA, VDD1VDD4) doczono ceramiczny kondensator blokujcy 100 nF (C1...C6). W celu wybrania rodzaju pamici, z ktrej wykonywany jest kod programu,
- wysyaniu ramek CAN o parametrach podanych przez operatora. Spenienie tych zaoe realizowane jest poprzez dwukierunkow konwersj CAN/USB, dziki czemu caa warstwa interfejsu uytkownika dostpna jest w postaci aplikacji komputerowej. Blokowy model funkcjonalnoci urzdzenia przedstawiono na rysunku5. Przyjcie takiej koncepcji wymaga wyboru odpowiednich ukadw elektronicznych. Naley do nich przede wszystkim mikrokontroler, ktry powinien by wyposaony winterfejsy CAN oraz USB. Nastpnym potrzebnym elementem jest ukad transmisyjny CAN umoliwiajcy komunikacj zsieciami pracujcymi wtym standardzie.
Budowa
Schemat ideowy urzdzenia pokazano na rysunku 9. W centralnym miejscu umieszczono mikrokontroler STM-
24
Rysunek 8. Wyprowadzenia oraz struktura wewntrzna ukadu MCP1802T-33 nka BOOT0 poczona zostaa zmas, co powoduje wybranie wewntrznej pamici Flash ukadu. Kolejnym doczonym do mikrokontrolera elementem jest kwarc Q1. Suy on jako rdo sygnau zegarowego, umoliwiajc taktowanie ukadu z wykorzystaniem ptli PLL. Elementami wspierajcymi dziaanie kwarcu s kondensatory C7, C8 oraz rezystor R2. Programowanie i debugowanie mikrokontrolera odbywa si poprzez interfejs SWD, ktrego linie wyprowadzono na gniedzie SWD_CON. Standard ten ma liczne zalety, gdy wymaga minimalnej liczby pocze oraz nie potrzebuje dodatkowych rezystorw podcigajcych, zachowujc jednoczenie pen funkcjonalno klasycznego interfejsu JTAG. Listing 1. Realizacja konwersji CAN=>USB Linie sygnaowe USB D+ oraz USB D s doprowadzone do mikrokontrolera przez wczone szeregowo rezystory R4, R5 (odpowiednio PA12, PA11). Dodatkowo, do linii USB D+ doczono rezystor podcigajcy R3, ktrego obecno informuje kontroler USB komputera o zgodnoci z trybami transmisji USB Full Speed oraz USB High Speed. Pierwszym ukadem peryferyjnym mikrokontrolera jest transceiver CAN (IC3). Transmisja midzy nim amikrokontrolerem odbywa si za pomoc linii sygnaowych TXD iRXD. Poczenie ukadu zmagistral CAN jest moliwe przez zcze JP2, gdzie wyprowadzone zostay linie CAN High oraz CAN Low. Rwnolegle midzy obiema liniami zosta umieszczony rezystor R6. Jego doczenie do magistrali jest moliwe przez zamknicie zworki JP1, co powinno zosta zrobione, gdy analizator jest doczony na jednym zkocw magistrali CAN. Napicie wejciowe stabilizatora IC2 pochodzi zgniazda USB (5V), po czym jest ono filtrowane przez kondensator tantalowy C8. Dodatkowo zgodnie ze schematem aplikacyjnym producenta, na wejciu iwyjciu ukadu umieszczono po jednym kondensatorze ceramicznym opojemnoci 1mF (C10, C11). Stabilizator zapewnia napicie 3,3 V ijest rdem zasilania dla mikrokontrolera oraz ukadu transmisyjnego CAN. Stan pracy urzdzenia sygnalizowany jest przez diody LED. Dioda PWR (kolor zielony) informuje oobecnoci napicia zasilania. Diody TX (kolor ty) iRX (kolor czerwony) informuj otrwajcej wdanej chwili transmisji (odpowiednio nadawczej dla TX iodbiorczej dla RX).
void CAN1_RX0_IRQHandler(void) { CAN_Receive(CAN1, CAN_FIFO0, &RxMessage); //odbior ramki CAN if(RxMessage.ExtId != 0) //adres (rozszerzony) { RX_Buffer[0] = (RxMessage.ExtId & 0xFF000000)>>24; RX_Buffer[1] = (RxMessage.ExtId & 0x00FF0000)>>16; RX_Buffer[2] = (RxMessage.ExtId & 0x0000FF00)>>8; RX_Buffer[3] = RxMessage.ExtId & 0x000000FF; } if(RxMessage.StdId != 0) //adres (podstawowy) { RX_Buffer[0] = (RxMessage.StdId & 0xFF000000)>>24; RX_Buffer[1] = (RxMessage.StdId & 0x00FF0000)>>16; RX_Buffer[2] = (RxMessage.StdId & 0x0000FF00)>>8; RX_Buffer[3] = RxMessage.StdId & 0x000000FF; } RX_Buffer[4] = RxMessage.Data[0]; RX_Buffer[5] = RxMessage.Data[1]; RX_Buffer[6] = RxMessage.Data[2]; RX_Buffer[7] = RxMessage.Data[3]; RX_Buffer[8] = RxMessage.Data[4]; RX_Buffer[9] = RxMessage.Data[5]; RX_Buffer[10] = RxMessage.Data[6]; RX_Buffer[11] = RxMessage.Data[7]; RX_Buffer[12] = RxMessage.DLC; RX_Buffer[13] = RxMessage.IDE; USB_SIL_Write(EP1_IN,RX_Buffer,14); SetEPTxValid(ENDP1); GPIO_SetBits(GPIOA, GPIO_Pin_1); my_delay(20000); GPIO_ResetBits(GPIOA, GPIO_Pin_1); //dane
//dlugosc pola danych //rodzaj ramki //transfer USB //miganie diody LED
25
PROJEKTY
STM32. Na pocztku wczony zostaje zegar taktujcy rdze (zwielokrotniony przez ptl PLL) oraz zegary dla peryferii (CAN, USB). Nastpnie zostaj skonfigurowane wyprowadzenia: PA1, PA2 (diody LED), PA11, PA12 (USB), PB8, PB9 (CAN). Kolejnym krokiem jest inicjalizacja interfejsw CAN oraz USB. Oba zostaj uruchomione zobsug przerwa. Po wykonaniu tej czynnoci koczy si etap konfigurowania urzdzenia. Sposb doczenia urzdzenia do magistrali CAN pokazano na rysunku 11. Bdc jednym z wzw sieci, analizator ma moliwo odbioru wszystkich ramek. Kadorazowo po odebraniu ramki odczytuje j, kopiuje zniej informacje oadresie, danych, rodzaju ramki i dugoci pola danych, po czym przesya je do komputera interfejsem USB. Realizujc te czynnoci funkcj obsugi przerwania CAN1_RX0_IRQHandler(void) przedstawiono na listingu1. Wewntrz niej znajduje si funkcja odbierajca ramki CAN CAN_Receive(CAN1, CAN_FIFO0, &RxMessage). Odczytana ramka znajduje si wstrukturze RxMessage, ktrej pola zpotrzebnymi informacjami kopio-
26
Rysunek 11. Widok zakadki menedera urzdze wsystemie Windows (analizator CAN widoczny jako STM Virtual COM Port)
Rysunek 12. Informacje na temat analizatora CAN widoczne zpoziomu systemu Windows (zakadka Waciwoci wmenederze urzdze) M A
27
PROJEKTY
CAN. Kada linia to jedna ramka (format szesnastkowy): pierwsze cztery bajty to adres, kolejne osiem to dane.
Monta
S c h e m a t montaowy urzdzenia pokazano na rysunku 15. Monta warto rozpocz od przytwierdzenia mikrokontrolera, co naley wyko- Rysunek 13. Widok tworzonej aplikacji komputerowej wrodowina z naleyt sku Microsoft Visual C# precyzj gwarantujc styczno wyprowadze z odpowiaoobsug popularnych protokow CAN wardajcymi im padami pytki. Nastpn czynstwy 7. modelu OSI/ISO, ktre wymienione noci powinien by monta pozostaych zostay na pocztku artykuu. Umoliwioby elementw SMD. Wkolejnym kroku naley to obiektow interpretacj danych przesyawlutowa elementy przewlekane (gniazda, nych przez sie iwizualizacj ich wformie zcza, diody LED). konkretnych parametrw, ich wartoci oraz Opcjonalnie mona dodatkowo osadzi jednostki. Istotn kwesti moe by ponadurzdzenie wobudowie (za pomoc przewito dodanie obsugi dodatkowych prdkoci dzianych otworw na rubki) oraz przygotransmisji CAN, ktre w obecnej chwili s towa przewd i zcze umoliwiajce wyograniczone do 4 wartoci. godne podczanie analizatora do sieci CAN Szymon Panecki (rysunek16). szymon.panecki@pwr.wroc.pl Ostatnim etapem jest zaprogramowanie mikrokontrolera. Oprogramowanie zostao Bibliografia: napisane przy wykorzystaniu rodowiska Daniluk A. USB Praktyczne programowanie Raisonance RIDE7 (kompatybilny z nim zWindows API wC++, 2009 programator to R-Link), jednake kod moe Etschberger K. Controller Area Network:bazosta atwo przeniesiony na inne platforsics, protocols, chips and applications, 2001 my programistyczne. Listing 2 Realizacja konwersji USB=>CAN
Rysunek 16. Wykonany na podstawie gniazda DB9 interfejs komunikacyjny CAN Mielczarek W. USB Uniwersalny interfejs szeregowy, 2005 Voss W. AComprehensible Guide to Controller Area Network, 2005 Yin J. The Definitive Guide to the ARM Cortex-M3, 2007 www.arm.com SWD Serial Wire Debug www.microchip.com MCP1802 datasheet www.st.com STM32F10xxx hardware development: getting started www.st.com STM32 datasheet www.ti.com SN65HVD230 datasheet
Podsumowanie
Wartykule przedstawiono autorski projekt urzdzenia diagnostycznego do sieci CAN. Urzdzenie moe by realn alternatyw dla istniejcych rozwiza komercyjnych, gdy cechuje si zblion do nich funkcjonalnoci i niezawodnoci. Dodatkowym atutem opracowanej konstrukcji jest prostota budowy, gdy wykorzystano minimaln ilo elementw elektronicznych, ktre jednoczenie s tanie iatwo dostpne na rynku. Istnieje moliwo dalszego ulepszania projektu. Interesujcym kierunkiem rozwoju jest np. uzupenienie aplikacji komputerowej
//odczyt USB
if(USB_Rx_Buffer[12] == 1) //adres (rozszerzony) { TxMessage.ExtId = (USB_Rx_Buffer[0] << 24); TxMessage.ExtId = TxMessage.ExtId + (USB_Rx_Buffer[1] << 16); TxMessage.ExtId = TxMessage.ExtId + (USB_Rx_Buffer[2] << 8); TxMessage.ExtId = TxMessage.ExtId + USB_Rx_Buffer[3]; } if(USB_Rx_Buffer[12] { TxMessage.StdId = TxMessage.StdId = TxMessage.StdId = TxMessage.StdId = } == 0) (USB_Rx_Buffer[0] TxMessage.ExtId + TxMessage.ExtId + TxMessage.ExtId + //adres (podstawowy) << 24); (USB_Rx_Buffer[1] << 16); (USB_Rx_Buffer[2] << 8); USB_Rx_Buffer[3]; //dane
TxMessage.Data[0]=USB_Rx_Buffer[4]; TxMessage.Data[1]=USB_Rx_Buffer[5]; TxMessage.Data[2]=USB_Rx_Buffer[6]; TxMessage.Data[3]=USB_Rx_Buffer[7]; TxMessage.Data[4]=USB_Rx_Buffer[8]; TxMessage.Data[5]=USB_Rx_Buffer[9]; TxMessage.Data[6]=USB_Rx_Buffer[10]; TxMessage.Data[7]=USB_Rx_Buffer[11]; TxMessage.IDE= USB_Rx_Buffer[12]; TxMessage.RTR= USB_Rx_Buffer[13]; TxMessage.DLC= USB_Rx_Buffer[14];
TransmitMailbox = CAN_Transmit(CAN1,&TxMessage); while(CAN_TransmitStatus(CAN1, TransmitMailbox) != CANTXOK) { } GPIO_SetBits(GPIOA, GPIO_Pin_2); my_delay(20000); GPIO_ResetBits(GPIOA, GPIO_Pin_2);
28