void spiInitialize(void) { gpioConfigurePin(SPIx_MISO_GPIO, SPIx_MISO_PIN, SPIx_MISO_CONFIGURATION); gpioConfigurePin(SPIx_MOSI_GPIO, SPIx_MOSI_PIN, SPIx_MOSI_CONFIGURATION); gpioConfigurePin(SPIx_SCK_GPIO, SPIx_SCK_PIN, SPIx_SCK_CONFIGURATION); gpioConfigurePin(SPIx_SSB_GPIO, SPIx_SSB_PIN, SPIx_SSB_CONFIGURATION); SPIx_SSB_bb=SPIx_SSB_END; RCC_APBxENR_SPIxEN_bb = 1; SPIx->CR1 = SPI_CR1_SSM | SPI_CR1_SSI | SPI_CR1_SPE | SPI_CR1_MSTR; // software slave management, enable SPI, master mode spiSetBaudRate(SPIx_BOUDRATE); }
U8 uOpioidInit(void) { U8 errorCode = STD_EC_SUCCESS; // ====== µC Initialisation ====== // // Reset the Port LATB = LED_B; //Everything to 0 except LED_B (active low) LATA = LED_R|LED_G; //Everything to 0 except LED_B and LED_R (active low) // -- Set the IO direction -- // TRISA = 0xFFFF ^ (LED_R|LED_G); //Everything in input except LED_R and LED_G TRISB = 0xFFFF ^ (LED_B|RAM_MOSI|RAM_SCK|RAM_SS|RAM_HOLD|EXT0_TX|COM0_TX|COM0_MOSI|COM0_SCK); //Everything in input except LED_B, RAM_MOSI,RAM_SCK,RAM_HOLD,EXT0_TC,COM0_TX,COM0_MOSI and COM0_SCK // -------------------------- // // -- Attach pins to peripherals -- // ppsUnlock(); ppsAttachOut(U1TX,RPB4); ppsAttachIn(U1RX,RPA4); ppsAttachOut(U2TX,RPB10); ppsAttachIn(U2RX,RPB11); ppsAttachOut(SDO1,RPB6); ppsAttachIn(SDI1,RPB8); ppsAttachOut(SDO2,RPB1); ppsAttachIn(SDI2,RPB2); ppsAttachIn(INT4,RPB3); ppsAttachIn(INT2,RPA2); ppsAttachOut(OC1,RPA0); ppsAttachOut(OC2,RPA1); ppsAttachOut(OC3,RPB0); //ppsAttachOut(REFCLKO,RPA2); ppsLock(); // -------------------------------- // // -- Init the Interrupts -- // INTEnableSystemMultiVectoredInt(); intFastSetPriority(COM0_IRQ0_INT_ID, 4); intSetExternalEdge(COM0_IRQ0_INT_IRQ, RISING); //COM0 IRQ0 is Rising edge by default intFastSetPriority(COM0_IRQ1_INT_ID, 4); intSetExternalEdge(COM0_IRQ1_INT_IRQ, RISING); //COM0 IRQ1 is Rising edge by default intFastSetPriority(COM0_SPI_INT_ID, 5); intFastSetPriority(COM0_UART_INT_ID, 5); intFastSetPriority(RAM_SPI_INT_ID, 6); intFastSetPriority(EXT0_IRQ_INT_ID, 2); intSetExternalEdge(EXT0_IRQ_INT_IRQ, RISING); //EXT0 IRQ0 is Rising edge by default intFastSetPriority(EXT0_UART_INT_ID, 3); intFastSetPriority(BTN_INT_ID, 1); intSetExternalEdge(BTN_INT_IRQ, FALLING); //BTN Falling edge trigger intFastInit(BTN_INT_ID); INTEnableInterrupts(); // ------------------------- // // -- Init the realTime system -- // errorCode = realTimeInit(UOPIOID_SYSTICK_VALUE); if (errorCode != STD_EC_SUCCESS) return errorCode; // ------------------------------ // // =============================== // // ====== External Initialization ====== // // -- RAM initialisation -- // //Init the RAM SPI spiSetConfig(RAM_SPI_ID,SPI_MODE_MASTER|SPI_ENHANCED_BUF|SPI_TX_BUF_INT_BUF_EMPTY|SPI_RX_BUF_INT_BUF_HALF_FULL); spiSetBaudRate(RAM_SPI_ID,5000000); spiStart(RAM_SPI_ID); spiAddSlave(RAM_SPI_ID,&LATB,RAM_SS); // ------------------------ // // -- COM0 Initialisation -- // //Init the COM Uart errorCode = uartInit(COM0_UART_ID,UART_TX_INT_TSR_EMPTY|UART_RX_INT_DATA_READY|UART_MODE_8N1); if (errorCode != STD_EC_SUCCESS) return errorCode; //Init the COM SPI spiSetConfig(COM0_SPI_ID,SPI_MODE_MASTER|SPI_ENHANCED_BUF|SPI_TX_BUF_INT_BUF_EMPTY|SPI_RX_BUF_INT_BUF_HALF_FULL); spiSetBaudRate(COM0_SPI_ID,5000000); spiStart(COM0_SPI_ID); //Detect presence // ------------------------- // // -- EXT0 Initialisation -- // //Init the EXT Uart //Detect presence // ------------------------- // // ===================================== // return errorCode; }