1 / 24

CAN kursus StellarisWare

Mikk Leini TTÜ Robotiklubi. CAN kursus StellarisWare. Texas Instruments StellarisWare. Texas Instruments (endine Luminary Micro) Stellaris-seeria mikrokontrollerite programeerimise liides (API) C-keeles IAR, GCC (CodeSourcery) ja Keil kompilaatoritele

rhoda
Download Presentation

CAN kursus StellarisWare

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Mikk Leini TTÜ Robotiklubi CAN kursusStellarisWare

  2. Texas InstrumentsStellarisWare • Texas Instruments(endine Luminary Micro)Stellaris-seeria mikrokontrollerite programeerimise liides (API) • C-keeles IAR, GCC (CodeSourcery) ja Keil kompilaatoritele • Programmeerimise lihtsustamiseks ja kiirendamiseks

  3. Programeerimine

  4. Sardsüsteemide (Embedded) programmeerimine • Assemblersbi 0x2000h 0x01 • C*(0x2000) |= 0x01; • C APISetBit(PORTA, PIN1)

  5. Driver Library • System Control • Interrupt Controller • GPIO • ADC • System Tick Kogu MCU perifeeria kasutamise API. Asub: C:\StellarisWare\driverlib

  6. StellarisWareSystem Control • CPU töörežiimide, pinge, töötakti ja perifeeria seadistamiseks // // 50 MHz takt PLL-ist // SysCtlClockSet(SYSCTL_SYSDIV_4 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN |SYSCTL_XTAL_8MHZ); // // Port A lubamine // SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);

  7. StellarisWareInterrupt Controller • Katkestuste lubamine, keelamine ja prioriteedide seadistamine // // Port A väliste katkestuste lubamine // IntEnable(INT_GPIOA); // // Globaalne katkestuste lubamine // IntMasterEnable();

  8. StellarisWareGPIO • IO siinide režiimi valik, seadistamine, kirjutamine ja lugemine. Katkestuste seadistamine. // // Port A viikude 0 ja 1 väljundiks määramine // GPIOPinTypeGPIOOutput(GPIO_PORTA_BASE, GPIO_PIN_0 | GPIO_PIN_1); // // Port A viigu 0 kõrgeks ja 1 madalaks määramine // GPIOPinWrite(GPIO_PORTA_BASE, GPIO_PIN_0 | GPIO_PIN_1, GPIO_PIN_0);

  9. StellarisWareGPIO // // Port A viigu 2 sisendiks määramine // voolu piiramine ja nõrga pull-up takisti lisamine // GPIOPinTypeGPIOInput(GPIO_PORTA_BASE, GPIO_PIN_2); GPIOPadConfigSet(GPIO_PORTA_BASE, GPIO_PIN_2, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD_WPU); // // Port A viigu 2 oleku lugemine // unsigned int x = GPIOPinRead(GPIO_PORTA_BASE, 0xFF) // // Oleku kontroll // if (x == GPIO_PIN_2) …

  10. StellarisWareADC • 10 bit ADC. 4 programeeritavat järjestajat. Erinevad käivitusmehhanismid. Riistvaraline ümardus ja kiiruse seadistus. // // Järjestik-muunduri 0 seadistamine 3 kanali peale // ADCSequenceConfigure(ADC0_BASE, 0, ADC_TRIGGER_PROCESSOR, 0); ADCSequenceStepConfigure(ADC0_BASE, 0, 0,ADC_CTL_CH2); ADCSequenceStepConfigure(ADC0_BASE, 0, 1, ADC_CTL_IE | ADC_CTL_END | ADC_CTL_CH3); ADCSequenceEnable(ADC0_BASE, 0); // // Käivitamine // ADCProcessorTrigger(ADC0_BASE, 0);

  11. StellarisWareADC // // ADC katkestus // void ADCIntHandler(void) { unsigned long ulValues[2]; // // ADC katkestuse lipukese kustutamine // ADCIntClear(ADC0_BASE, 0); // // Sämplite lugemine FIFO puhvrist // ADCSequenceDataGet(ADC0_BASE, 0, ulValues); }

  12. StellarisWareSystem Tick • Cortex M3 CPU sisemine taimer. Operatsioonisüsteemi jaoks. Määratav periood CPU taktides. // // Taimeri seadistamine 1 ms perioodi peale, // katkestuste lubamine ja käivitamine // SysTickPeriodSet(SysCtlClockGet() / 1000); SysTickIntEnable(); SysTickEnable();

  13. Reaalsus

  14. StellarisWareCAN

  15. Seadistamine SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD; SysCtlPeripheralEnable(SYSCTL_PERIPH_CAN0); GPIOPinTypeCAN(GPIO_PORTD_BASE, GPIO_PIN_0 | GPIO_PIN_1); CANInit(CAN0_BASE); CANBitRateSet(CAN0_BASE, SysCtlClockGet(), 250000); CANEnable(CAN0_BASE);

  16. Sõnumi objekt • 32 postkasti sõnumi objektidele TCANMsgObject { unsigned long ulMsgID;unsigned long ulMsgIDMask;unsigned long ulFlags;unsigned long ulMsgLen;unsigned char *pucMsgData; }

  17. Saatmise seadistamine tCANMsgObject psTxMsg; unsigned char pucTxData[4]; psTxMsg.ulMsgID = 0x01; psTxMsg.ulFlags = MSG_OBJ_NO_FLAGS; psTxMsg.ulMsgLen = 4; psTxMsg.pucMsgData = pucTxData; CANMessageSet(CAN0_BASE, 1, &psTxMsg, MSG_OBJ_TYPE_TX);

  18. Vastuvõtmise seadistamine tCANMsgObject psRxMsg; unsigned char pucRxData[4]; psRxMsg.ulMsgID = 0x01; psRxMsg.ulMsgIDMask = 0x7FE; psRxMsg.ulFlags = MSG_OBJ_NO_FLAGS; psRxMsg.ulMsgLen = 4; psRxMsg.pucMsgData = pucRxData; CANMessageSet(CAN0_BASE, 4, &psRxMsg, MSG_OBJ_TYPE_RX);

  19. Vastuvõtmise registreerimine #define RX_BOX 4 #define RX_BOX_MASK(nr) (1 << (nr - 1)) if (CANStatusGet(CAN0_BASE, CAN_STS_NEWDAT) & RX_BOX_MASK(RX_BOX)) { CANMessageGet(CAN0_BASE, RX_BOX, &psRxMsg, true); // todo - pucRxData }

  20. Kokkuvõte • „Saatmist“ ja „Vastu võtmist“ teostab MCU CAN kontroller. Kasutaja saab vaid kontrolleri tööd seadistada. • Extended ID kasutamiseks peab sõnumiulFlags MSG_OBJ_EXTENDED_ID lipp seatud olema

More Related