Пример #1
0
void Zone_Init(void)
{
    SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI0);
    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);

    GPIOPinTypeSSI(GPIO_PORTA_BASE,
            GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_5);

    GPIOPadConfigSet(GPIO_PORTA_BASE, 
            GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_5,
            GPIO_STRENGTH_8MA, GPIO_PIN_TYPE_STD_WPU);

    SSIDisable(SSI0_BASE);

    SSIConfigSetExpClk(SSI0_BASE, SysCtlClockGet(), SSI_FRF_MOTO_MODE_0,
            SSI_MODE_MASTER, 2000000, 8);

    GPIOPinTypeSSI(GPIO_PORTA_BASE, GPIO_PIN_3);
    GPIOPadConfigSet(GPIO_PORTA_BASE, GPIO_PIN_3,
            GPIO_STRENGTH_8MA, GPIO_PIN_TYPE_STD_WPU);

    SSIEnable(SSI0_BASE);
  
    while(SSIBusy(SSI0_BASE)) {}

    SSIDataPut(SSI0_BASE, ZONE_NONE);
}
Пример #2
0
//*****************************************************************************
//
//! Enable the SSI component of the OLED display driver.
//!
//! \param ulFrequency specifies the SSI Clock Frequency to be used.
//!
//! This function initializes the SSI interface to the OLED display.
//!
//! \return None.
//
//*****************************************************************************
void
RIT128x96x4Enable(unsigned long ulFrequency)
{
    //
    // Disable the SSI port.
    //
    SSIDisable(SSI0_BASE);

    //
    // Configure the SSI0 port for master mode.
    //
    SSIConfigSetExpClk(SSI0_BASE, SysCtlClockGet(), SSI_FRF_MOTO_MODE_3,
                       SSI_MODE_MASTER, ulFrequency, 8);

    //
    // (Re)Enable SSI control of the FSS pin.
    //
    GPIOPinTypeSSI(GPIO_PORTA_BASE, GPIO_PIN_3);
    GPIOPadConfigSet(GPIO_PORTA_BASE, GPIO_PIN_3, GPIO_STRENGTH_8MA,
                     GPIO_PIN_TYPE_STD_WPU);

    //
    // Enable the SSI port.
    //
    SSIEnable(SSI0_BASE);

    //
    // Indicate that the RIT driver can use the SSI Port.
    //
    HWREGBITW(&g_ulSSIFlags, FLAG_SSI_ENABLED) = 1;
}
Пример #3
0
int main()
{
	SysCtlClockSet(SYSCTL_SYSDIV_2_5|SYSCTL_USE_PLL|SYSCTL_XTAL_16MHZ|SYSCTL_OSC_MAIN);

	SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);
	SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI2);
	GPIOPinConfigure(GPIO_PB4_SSI2CLK);
	GPIOPinConfigure(GPIO_PB7_SSI2TX);
	GPIOPinTypeSSI(GPIO_PORTB_BASE,GPIO_PIN_4|GPIO_PIN_7);
	SSIConfigSetExpClk(SSI2_BASE,SysCtlClockGet(),SSI_FRF_MOTO_MODE_0,SSI_MODE_MASTER,2000000,8);
	SSIEnable(SSI2_BASE);

	SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
	GPIOPinTypeGPIOOutput(GPIO_PORTA_BASE, GPIO_PIN_2|GPIO_PIN_3);
	GPIOPinWrite(GPIO_PORTA_BASE,GPIO_PIN_2,0);
	GPIOPinWrite(GPIO_PORTA_BASE,GPIO_PIN_3,0);

	GPIOPinTypeGPIOOutput(GPIO_PORTB_BASE, GPIO_PIN_6);
	GPIOPinWrite(GPIO_PORTB_BASE,GPIO_PIN_6,0);

	while(1)
	{
		SSIDataPut(SSI2_BASE,0xAA);
		latch();
		SysCtlDelay(SysCtlClockGet()/10);

		SSIDataPut(SSI2_BASE,0x55);
		latch();
		SysCtlDelay(SysCtlClockGet()/10);
	}
}
Пример #4
0
/*
 *  ======== EK_TM4C123GXL_initWiFi ========
 */
void EK_TM4C123GXL_initWiFi(void)
{
	/* Configure SSI2 */
	SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI2);
	GPIOPinConfigure(GPIO_PB4_SSI2CLK);
	GPIOPinConfigure(GPIO_PB6_SSI2RX);
	GPIOPinConfigure(GPIO_PB7_SSI2TX);
	GPIOPinTypeSSI(GPIO_PORTB_BASE, GPIO_PIN_4 | GPIO_PIN_6 | GPIO_PIN_7);

	/* Configure IRQ pin */
	GPIOPinTypeGPIOInput(GPIO_PORTB_BASE, GPIO_PIN_2);
	GPIOIntTypeSet(GPIO_PORTB_BASE, GPIO_PIN_2, GPIO_FALLING_EDGE);

	/* Configure EN pin */
	GPIOPinTypeGPIOOutput(GPIO_PORTB_BASE, GPIO_PIN_5);
	GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_5, 0);

	/* Configure CS pin */
	GPIOPinTypeGPIOOutput(GPIO_PORTE_BASE, GPIO_PIN_0);
	GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_0, 0);

	/* Call necessary SPI init functions */
	SPI_init();
	EK_TM4C123GXL_initDMA();

	/* Initialize WiFi driver */
	WiFi_init();
}
Пример #5
0
void EEPROM_Init()
{
   SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI1);
   SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);



   GPIOPinConfigure(GPIO_PD0_SSI1CLK);
   GPIOPinConfigure(GPIO_PD1_SSI1FSS);
   GPIOPinConfigure(GPIO_PD2_SSI1RX);
   GPIOPinConfigure(GPIO_PD3_SSI1TX);
   GPIOPinTypeGPIOOutput(GPIO_PORTD_BASE,GPIO_PIN_CS);


   GPIOPinTypeSSI(GPIO_PORTD_BASE, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2|GPIO_PIN_3);


   SSIConfigSetExpClk(SSI1_BASE, SysCtlClockGet(), SSI_FRF_MOTO_MODE_0, SSI_MODE_MASTER, 1000, 8);

   SSIEnable(SSI1_BASE);
   
   memset(_eepromcachestr,0,EEPROMADDRSTRLEN+1);
   _iseepromenabled  = EEPROM_Test();

}
Пример #6
0
/*
 *  ======== EK_TM4C123GXL_initWiFi ========
 */
void EK_TM4C123GXL_initWiFi(void)
{
	/* Configure EN & CS pins to disable CC3100 */
	GPIOPinTypeGPIOOutput(GPIO_PORTE_BASE, GPIO_PIN_0 | GPIO_PIN_4);
	GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_0, GPIO_PIN_0);
	GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_4, 0);

	/* Configure SSI2 for CC3100 */
	SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI2);
	GPIOPinConfigure(GPIO_PB4_SSI2CLK);
	GPIOPinConfigure(GPIO_PB6_SSI2RX);
	GPIOPinConfigure(GPIO_PB7_SSI2TX);
	GPIOPinTypeSSI(GPIO_PORTB_BASE, GPIO_PIN_4 | GPIO_PIN_6 | GPIO_PIN_7);

	/* Configure IRQ pin */
	GPIOPinTypeGPIOInput(GPIO_PORTB_BASE, GPIO_PIN_2);
	GPIOPadConfigSet(GPIO_PORTB_BASE, GPIO_PIN_2, GPIO_STRENGTH_2MA,
			GPIO_PIN_TYPE_STD_WPD);
	GPIOIntTypeSet(GPIO_PORTB_BASE, GPIO_PIN_2, GPIO_RISING_EDGE);

	SPI_init();
	EK_TM4C123GXL_initDMA();

	WiFi_init();
}
Пример #7
0
/* ------------------------------------------------------------------------------------------------------
 *									ssi0_Init()
 *
 * Description : SPI sysctl init function.
 *
 * Argument(s) : none.
 *
 */
void BSP_SSI0_Init(void)
{
    SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI0);
	SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
	
	SSIDisable(SSI0_BASE);											/* Disable SSI0.*/
	
	GPIOPinTypeSSI(GPIO_PORTA_BASE, 								/* Configure the SPI port*/
				   GPIO_PIN_2|GPIO_PIN_4|GPIO_PIN_5);
	GPIOPadConfigSet(GPIO_PORTA_BASE,
					 GPIO_PIN_2|GPIO_PIN_4|GPIO_PIN_5,
					 GPIO_STRENGTH_4MA,
                     GPIO_PIN_TYPE_STD_WPU);
	
	
	GPIOPinTypeGPIOOutput(GPIO_PORTA_BASE, GPIO_PIN_6);				/* Configure the CS port*/
    GPIOPadConfigSet(GPIO_PORTA_BASE, GPIO_PIN_6, GPIO_STRENGTH_4MA,
                     GPIO_PIN_TYPE_STD_WPU);
	
    SELECT();
	DESELECT();														/* Deassert the SSI0 chip select */
	
	SSIConfigSetExpClk(SSI0_BASE,									/* Configure the SSI0 port */
						SysCtlClockGet(),
						SSI_FRF_MOTO_MODE_0,
						SSI_MODE_MASTER, 400000, 8);
	SSIEnable(SSI0_BASE);											/* Enable SSI0.*/
}
Пример #8
0
int main(void)
{
	uint32_t ui32Index;
	uint32_t ui32Data;

	SysCtlClockSet(SYSCTL_SYSDIV_4 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | SYSCTL_XTAL_16MHZ);

	SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI0);
	SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);

	GPIOPinConfigure(GPIO_PA2_SSI0CLK);
	GPIOPinConfigure(GPIO_PA3_SSI0FSS);
	GPIOPinConfigure(GPIO_PA5_SSI0TX);
	GPIOPinTypeSSI(GPIO_PORTA_BASE,GPIO_PIN_5|GPIO_PIN_3|GPIO_PIN_2);

	SSIConfigSetExpClk(SSI0_BASE, SysCtlClockGet(), SSI_FRF_MOTO_MODE_0, SSI_MODE_MASTER, 10000, 16);
	SSIEnable(SSI0_BASE);

	while(1)
	{
		for(ui32Index = 0; ui32Index < NUM_SSI_DATA; ui32Index++)
		{
			ui32Data = (Reverse(pui8DataTx[ui32Index]) << 8) + (1 << ui32Index);
			SSIDataPut(SSI0_BASE, ui32Data);
			while(SSIBusy(SSI0_BASE))
			{
			}
		}

	}

}
Пример #9
0
void init_pins()
{
	//PORT A - SDHC Card
	SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
	//set output: SD_SCK, SD_CS, SD_MOSI
	GPIOSetOutput(GPIO_PORTA_BASE, GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_5);
	//Set Input: SD_MISO
	GPIOSetInput(GPIO_PORTA_BASE, GPIO_PIN_4);
	//Initialize pins: SD_SCK <- LOW, SD_CS <- HIGH, SD_MOSI <- LOW
	GPIOPinWrite(GPIO_PORTA_BASE, GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_5, GPIO_PIN_3);
	//Set SD_CLK, SD_MISO, SD_MOSI as SSI pins
	GPIOPinTypeSSI(GPIO_PORTA_BASE, GPIO_PIN_2 | GPIO_PIN_4 | GPIO_PIN_5);

	//Port B - RTC

	//Enable Port B
	SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);
	//Set pin type as I2C
	GPIOPinTypeI2C(GPIO_PORTB_BASE, GPIO_PIN_2 | GPIO_PIN_3);

	//Port D - LCD

	//TODO: Initialize LCD pins

	//Port E - SSI1 , VS0_BSYNC, VS0_RESET, VS0_DREQ, VS0_CS
	SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE);
	//Set Output: VS_CLK, VS0_CS, VS_MOSI, VS0_BSYNC, VS0_RESET
	GPIOSetOutput(GPIO_PORTE_BASE, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_3 | GPIO_PIN_4 | GPIO_PIN_6);
	//Set Input: VS_MISO, VS0_DREQ
	GPIOSetInput(GPIO_PORTE_BASE, GPIO_PIN_2 | GPIO_PIN_5);
	//Initialize Pins: VS_CLK <- LOW, VS0_CS <- HIGH, VS_MOSI <- LOW, VS0_BSYNC <- HIGH, VS0_RESET <- LOW,
	GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_3 | GPIO_PIN_4 | GPIO_PIN_6, GPIO_PIN_1 | GPIO_PIN_4);
	//Set VS_CLK, VS_MOSI, VS_MISO as SSI pins
	GPIOPinTypeSSI(GPIO_PORTE_BASE, GPIO_PIN_0 | GPIO_PIN_2 | GPIO_PIN_3);

	//Port F -VS1_BSYNC, VS1_RESET, VS1_DREQ, VS1_CS
	SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
	//Set Output: VS1_RESET, VS1_BSYNC, VS1_CS
	GPIOSetOutput(GPIO_PORTF_BASE, GPIO_PIN_0 | GPIO_PIN_2 | GPIO_PIN_3);
	//Set Input: VS1_DREQ
	GPIOSetInput(GPIO_PORTF_BASE, GPIO_PIN_1);
	//Initialize Pins: VS0_RESET <- LOW,  VS0_BSYNC <- HIGH, VS1_CS <- HIGH
	GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_0 | GPIO_PIN_2 | GPIO_PIN_3, GPIO_PIN_2 | GPIO_PIN_3);

	return;

}
Пример #10
0
//*****************************************************************************
//
//! Initialize the OLED display.
//!
//! \param ulFrequency specifies the SSI Clock Frequency to be used.
//!
//! This function initializes the SSI interface to the OLED display and
//! configures the SSD1329 controller on the panel.
//!
//! \return None.
//
//*****************************************************************************
void
RIT128x96x4Init(unsigned long ulFrequency)
{
    unsigned long ulIdx;

	
    // Initialize the semaphore
    OS_InitSemaphore(&oLEDFree, 1);

    //
    // Enable the SSI0 and GPIO port blocks as they are needed by this driver.
    //
    SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI0);
    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIO_OLEDDC);

    //
    // Configure the SSI0CLK and SSIOTX pins for SSI operation.
    //
    GPIOPinTypeSSI(GPIO_PORTA_BASE, GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_5);
    GPIOPadConfigSet(GPIO_PORTA_BASE, GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_5,
                     GPIO_STRENGTH_8MA, GPIO_PIN_TYPE_STD_WPU);

    //
    // Configure the GPIO port pin used as a D/Cn signal for OLED device,
    // and the port pin used to enable power to the OLED panel.
    //
    GPIOPinTypeGPIOOutput(GPIO_OLEDDC_BASE, GPIO_OLEDDC_PIN | GPIO_OLEDEN_PIN);
    GPIOPadConfigSet(GPIO_OLEDDC_BASE, GPIO_OLEDDC_PIN | GPIO_OLEDEN_PIN,
                     GPIO_STRENGTH_8MA, GPIO_PIN_TYPE_STD);
    GPIOPinWrite(GPIO_OLEDDC_BASE, GPIO_OLEDDC_PIN | GPIO_OLEDEN_PIN,
                 GPIO_OLEDDC_PIN | GPIO_OLEDEN_PIN);
    HWREGBITW(&g_ulSSIFlags, FLAG_DC_HIGH) = 1;

    //
    // Configure and enable the SSI0 port for master mode.
    //
    RIT128x96x4Enable(ulFrequency);

    //
    // Clear the frame buffer.
    //
    RIT128x96x4Clear();

    //
    // Initialize the SSD1329 controller.  Loop through the initialization
    // sequence array, sending each command "string" to the controller.
    //
    for(ulIdx = 0; ulIdx < sizeof(g_pucRIT128x96x4Init);
        ulIdx += g_pucRIT128x96x4Init[ulIdx] + 1)
    {
        //
        // Send this command.
        //
        RITWriteCommand(g_pucRIT128x96x4Init + ulIdx + 1,
                        g_pucRIT128x96x4Init[ulIdx] - 1);
    }
}
Пример #11
0
//*************************************************//
//initSSI 
//Prototype: void initSSI(void)
//Description: init SPI module for communicate with vs1011e.
//Returns: None.
//*************************************************//
void initSSI(void)
{
	SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI0);
	SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
	GPIOPinTypeSSI(GPIO_PORTA_BASE, GPIO_PIN_2 | GPIO_PIN_4 | GPIO_PIN_5);
	GPIOPadConfigSet(GPIO_PORTA_BASE, GPIO_PIN_2 | GPIO_PIN_4| GPIO_PIN_5, GPIO_STRENGTH_8MA, GPIO_PIN_TYPE_STD_WPU);
	SSIConfigSetExpClk(SSI0_BASE, SysCtlClockGet(), SSI_FRF_MOTO_MODE_0, SSI_MODE_MASTER, 2000000, 8);
	SSIEnable(SSI0_BASE);
}
Пример #12
0
void
OrbitOledHostInit()
	{

	DelayInit();

	/* Initialize SSI port 3.
	*/
	SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI3);
	GPIOPinTypeSSI(SCK_OLEDPort, SCK_OLED_PIN);
	GPIOPinTypeSSI(SDI_OLEDPort, SDI_OLED_PIN);
	GPIOPinConfigure(SDI_OLED);
	GPIOPinConfigure(SCK_OLED);
	SSIClockSourceSet(SSI3_BASE, SSI_CLOCK_SYSTEM);
	SSIConfigSetExpClk(SSI3_BASE, SysCtlClockGet(), SSI_FRF_MOTO_MODE_0, SSI_MODE_MASTER, 8000000, 8);
	SSIEnable(SSI3_BASE);

	/* Make power control pins be outputs with the supplies off
	*/
	GPIOPinWrite(VBAT_OLEDPort, VBAT_OLED, VBAT_OLED);
	GPIOPinWrite(VDD_OLEDPort, VDD_OLED, VDD_OLED);
	GPIOPinTypeGPIOOutput(VBAT_OLEDPort, VBAT_OLED);	//VDD power control (1=off)
	GPIOPinTypeGPIOOutput(VDD_OLEDPort, VDD_OLED);		//VBAT power control (1=off)

	/* Make the Data/Command select, Reset, and SSI CS pins be outputs.
	 * The nDC_OLED pin is PD7 an is a special GPIO (it is an NMI pin)
	 * Therefore, we must unlock it first:
	 * 1. Write 0x4C4F434B to GPIOLOCK register to unlock the GPIO Commit register
	 * 2. Write to appropriate bit in the Commit Register (bit 7)
	 * 3. Re-lock the GPIOLOCK register
	*/
	HWREG(GPIO_PORTD_BASE + GPIO_O_LOCK) = 0x4C4F434B;	// unlock
	HWREG(GPIO_PORTD_BASE + GPIO_O_CR) |= 1 << 7; 		// allow writes
	HWREG(GPIO_PORTD_BASE + GPIO_O_LOCK) = 0x0;			// re-lock
	GPIOPinWrite(nDC_OLEDPort, nDC_OLED, nDC_OLED);
	GPIOPinTypeGPIOOutput(nDC_OLEDPort, nDC_OLED);
	GPIOPinWrite(nDC_OLEDPort, nDC_OLED, nDC_OLED);
	GPIOPinWrite(nRES_OLEDPort, nRES_OLED, nRES_OLED);
	GPIOPinTypeGPIOOutput(nRES_OLEDPort, nRES_OLED);
	GPIOPinWrite(nCS_OLEDPort, nCS_OLED, nCS_OLED);
	GPIOPinTypeGPIOOutput(nCS_OLEDPort, nCS_OLED);

}
Пример #13
0
/*
 *  ======== EKS_LM4F232_initSPI ========
 */
Void EKS_LM4F232_initSPI(Void)
{
	 /* SPI1
	    SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI1);

	    Need to unlock PF0
	    HWREG(GPIO_PORTF_BASE + GPIO_O_LOCK) = GPIO_LOCK_KEY;
	    HWREG(GPIO_PORTF_BASE + GPIO_O_CR) |= GPIO_PIN_0;
	    GPIOPinConfigure(GPIO_PF0_SSI1RX);
	    GPIOPinConfigure(GPIO_PF1_SSI1TX);
	    GPIOPinConfigure(GPIO_PF2_SSI1CLK);
	    GPIOPinConfigure(GPIO_PF3_SSI1FSS);

	    GPIOPinTypeSSI(GPIO_PORTF_BASE, GPIO_PIN_0 | GPIO_PIN_1 |
	                                    GPIO_PIN_2 | GPIO_PIN_3);
	    HWREG(GPIO_PORTF_BASE + GPIO_O_LOCK) = GPIO_LOCK_M;*/


		/* SSI0 */
		    SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI0);

		    GPIOPinConfigure(GPIO_PA2_SSI0CLK);
		    GPIOPinConfigure(GPIO_PA3_SSI0FSS);
		    GPIOPinConfigure(GPIO_PA4_SSI0RX);
		    GPIOPinConfigure(GPIO_PA5_SSI0TX);

		    GPIOPinTypeSSI(GPIO_PORTA_BASE, GPIO_PIN_2 | GPIO_PIN_3 |
		                                    GPIO_PIN_4 | GPIO_PIN_5);

    /* SSI3 */
    SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI3);

    GPIOPinConfigure(GPIO_PK0_SSI3CLK);
    GPIOPinConfigure(GPIO_PK1_SSI3FSS);
    GPIOPinConfigure(GPIO_PK2_SSI3RX);
    GPIOPinConfigure(GPIO_PK3_SSI3TX);

    GPIOPinTypeSSI(GPIO_PORTK_BASE, GPIO_PIN_0 | GPIO_PIN_1 |
                                    GPIO_PIN_2 | GPIO_PIN_3);

    EKS_LM4F232_initDMA();
    SPI_init();
}
Пример #14
0
//*****************************************************************************
//
//! Initialize the OLED display.
//!
//! \param ulFrequency specifies the SSI Clock Frequency to be used.
//!
//! This function initializes the SSI interface to the OLED display and
//! configures the SSD0323 controller on the panel.
//!
//! This function is contained in <tt>osram128x64x4.c</tt>, with
//! <tt>osram128x64x4.h</tt> containing the API definition for use by
//! applications.
//!
//! \return None.
//
//*****************************************************************************
void
OSRAM128x64x4Init(unsigned long ulFrequency)
{
    unsigned long ulIdx;

    //
    // Enable the SSI0 and GPIO port  blocks as they are needed by this driver.
    //
    SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI0);
    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC);

    //
    // Configure the SSI0CLK and SSIOTX pins for SSI operation.
    //
    GPIOPinTypeSSI(GPIO_PORTA_BASE, GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_5);
    GPIOPadConfigSet(GPIO_PORTA_BASE, GPIO_PIN_2, GPIO_STRENGTH_8MA,
                     GPIO_PIN_TYPE_STD_WPU);
    GPIOPadConfigSet(GPIO_PORTA_BASE, GPIO_PIN_3, GPIO_STRENGTH_8MA,
                     GPIO_PIN_TYPE_STD_WPU);
    GPIOPadConfigSet(GPIO_PORTA_BASE, GPIO_PIN_5, GPIO_STRENGTH_8MA,
                     GPIO_PIN_TYPE_STD_WPU);

    //
    // Configure the PC7 pin as a D/Cn signal for OLED device.
    //
    GPIODirModeSet(GPIO_PORTC_BASE, GPIO_PIN_7, GPIO_DIR_MODE_OUT);
    GPIOPadConfigSet(GPIO_PORTC_BASE, GPIO_PIN_7, GPIO_STRENGTH_8MA,
                     GPIO_PIN_TYPE_STD);
    GPIOPinWrite(GPIO_PORTC_BASE, GPIO_PIN_7, GPIO_PIN_7);

    //
    // Configure and enable the SSI0 port for master mode.
    //
    OSRAM128x64x4Enable(ulFrequency);

    //
    // Clear the frame buffer.
    //
    OSRAM128x64x4Clear();

    //
    // Initialize the SSD0323 controller.  Loop through the initialization
    // sequence array, sending each command "string" to the controller.
    //
    for(ulIdx = 0; ulIdx < sizeof(g_pucOSRAM128x64x4Init);
            ulIdx += g_pucOSRAM128x64x4Init[ulIdx] + 1)
    {
        //
        // Send this command.
        //
        OSRAMWriteCommand(g_pucOSRAM128x64x4Init + ulIdx + 1,
                          g_pucOSRAM128x64x4Init[ulIdx] - 1);
    }
}
Пример #15
0
void Spi::enable(uint32_t baudrate)
{
    GpioConfig& miso = miso_.getGpioConfig();
    GpioConfig& mosi = mosi_.getGpioConfig();
    GpioConfig& clk  = clk_.getGpioConfig();
    // GpioConfig& ncs  = ncs_.getGpioConfig();

    // Store baudrate in configuration
    if (baudrate != 0) {
        config_.baudrate = baudrate;
    }
    
    // Enable peripheral except in deep sleep modes (e.g. LPM1, LPM2, LPM3)
    SysCtrlPeripheralEnable(config_.peripheral);
    SysCtrlPeripheralSleepEnable(config_.peripheral);
    SysCtrlPeripheralDeepSleepDisable(config_.peripheral);

    // Reset peripheral previous to configuring it
    SSIDisable(config_.base);

    // Set IO clock as SPI0 clock source
    SSIClockSourceSet(config_.base, config_.clock);

    // Configure the MISO, MOSI, CLK and nCS pins as peripheral
    IOCPinConfigPeriphInput(miso.port, miso.pin, miso.ioc);
    IOCPinConfigPeriphOutput(mosi.port, mosi.pin, mosi.ioc);
    IOCPinConfigPeriphOutput(clk.port, clk.pin, clk.ioc);
    // IOCPinConfigPeriphOutput(ncs.port, ncs.pin, ncs.ioc);

    // Configure MISO, MOSI, CLK and nCS GPIOs
    GPIOPinTypeSSI(miso.port, miso.pin);
    GPIOPinTypeSSI(mosi.port, mosi.pin);
    GPIOPinTypeSSI(clk.port, clk.pin);
    // GPIOPinTypeSSI(ncs.port, ncs.pin);

    // Configure the SPI0 clock
    SSIConfigSetExpClk(config_.base, SysCtrlIOClockGet(), config_.protocol, \
                       config_.mode, config_.baudrate, config_.datawidth);

    // Enable the SPI0 module
    SSIEnable(config_.base);
}
Пример #16
0
void setup()
{
	//--------------------- GENERAL ---------------------

    // Enable lazy stacking for interrupt handlers.  This allows floating-point
    // instructions to be used within interrupt handlers, but at the expense of
    // extra stack usage.
    ROM_FPUEnable();
    ROM_FPULazyStackingEnable();

    // Set the clocking to run directly from the crystal.
    ROM_SysCtlClockSet(SYSCTL_SYSDIV_1 | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN |
                       SYSCTL_XTAL_16MHZ);

    ROM_IntMasterEnable();

    ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);

    ROM_GPIOPinTypeGPIOOutput(GPIO_PORTA_BASE, GPIO_PIN_6);

	//--------------------- UART ---------------------

    ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_UART0);

    GPIOPinConfigure(GPIO_PA0_U0RX);
    GPIOPinConfigure(GPIO_PA1_U0TX);
    ROM_GPIOPinTypeUART(GPIO_PORTA_BASE, GPIO_PIN_0 | GPIO_PIN_1);

    // Configure the UART for 115,200, 8-N-1 operation.
    ROM_UARTConfigSetExpClk(UART0_BASE, ROM_SysCtlClockGet(), 115200,
                            (UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE | UART_CONFIG_PAR_NONE));

    // Enable the UART interrupt.
    ROM_IntEnable(INT_UART0);
    ROM_UARTIntEnable(UART0_BASE, UART_INT_RX | UART_INT_RT);


	//--------------------- SSI ---------------------

    SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI0);

    GPIOPinConfigure(GPIO_PA2_SSI0CLK);
    GPIOPinConfigure(GPIO_PA3_SSI0FSS);
    GPIOPinConfigure(GPIO_PA4_SSI0RX);
    GPIOPinConfigure(GPIO_PA5_SSI0TX);

    GPIOPinTypeSSI(GPIO_PORTA_BASE, GPIO_PIN_5 | GPIO_PIN_4 | GPIO_PIN_3 | GPIO_PIN_2);

    SSIConfigSetExpClk(SSI0_BASE, SysCtlClockGet(), SSI_FRF_MOTO_MODE_0, SSI_MODE_MASTER, 10000, 8);

    SSIEnable(SSI0_BASE);

}
Пример #17
0
void SPI_init(){
	SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
	GPIOPinTypeSSI(GPIO_PORTA_BASE,GPIO_PIN_2|GPIO_PIN_4|GPIO_PIN_5);

    GPIOPinConfigure(GPIO_PA2_SSI0CLK);
    GPIOPinConfigure(GPIO_PA4_SSI0RX);
    GPIOPinConfigure(GPIO_PA5_SSI0TX);

	SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI0);
	SSIClockSourceSet(SSI0_BASE,SSI_CLOCK_PIOSC);
	SSIConfigSetExpClk(SSI0_BASE,SysCtlClockGet(),SSI_FRF_MOTO_MODE_0,SSI_MODE_MASTER,6000000,8);
	SSIEnable(SSI0_BASE);
}
Пример #18
0
/*
 *  ======== EK_TM4C123GXL_initSPI ========
 */
void EK_TM4C123GXL_initSPI(void)
{
    /* SPI0 */
    SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI0);

    /* Need to unlock PF0 */
    GPIOPinConfigure(GPIO_PA2_SSI0CLK);
    GPIOPinConfigure(GPIO_PA3_SSI0FSS);
    GPIOPinConfigure(GPIO_PA4_SSI0RX);
    GPIOPinConfigure(GPIO_PA5_SSI0TX);

    GPIOPinTypeSSI(GPIO_PORTA_BASE, GPIO_PIN_2 | GPIO_PIN_3 |
                                    GPIO_PIN_4 | GPIO_PIN_5);

    /* SSI2 */
    SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI2);

    GPIOPinConfigure(GPIO_PB4_SSI2CLK);
    GPIOPinConfigure(GPIO_PB5_SSI2FSS);
    GPIOPinConfigure(GPIO_PB6_SSI2RX);
    GPIOPinConfigure(GPIO_PB7_SSI2TX);

    GPIOPinTypeSSI(GPIO_PORTB_BASE, GPIO_PIN_4 | GPIO_PIN_5 |
                                    GPIO_PIN_6 | GPIO_PIN_7);

    /* SSI3 */
    SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI3);

    GPIOPinConfigure(GPIO_PD0_SSI3CLK);
    GPIOPinConfigure(GPIO_PD1_SSI3FSS);
    GPIOPinConfigure(GPIO_PD2_SSI3RX);
    GPIOPinConfigure(GPIO_PD3_SSI3TX);

    GPIOPinTypeSSI(GPIO_PORTD_BASE, GPIO_PIN_0 | GPIO_PIN_1 |
                                    GPIO_PIN_2 | GPIO_PIN_3);

    EK_TM4C123GXL_initDMA();
    SPI_init();
}
Пример #19
0
void Spi::enable(uint32_t mode, uint32_t protocol, uint32_t datawidth, uint32_t baudrate)
{
    // Store SPI mode, protoco, baudrate and datawidth
    mode_      = mode;
    protocol_  = protocol;
    baudrate_  = baudrate;
    datawidth_ = datawidth;

    // Enable peripheral except in deep sleep modes (e.g. LPM1, LPM2, LPM3)
    SysCtrlPeripheralEnable(peripheral_);
    SysCtrlPeripheralSleepEnable(peripheral_);
    SysCtrlPeripheralDeepSleepDisable(peripheral_);

    // Reset peripheral previous to configuring it
    SSIDisable(base_);

    // Set IO clock as SPI0 clock source
    SSIClockSourceSet(base_, clock_);

    // Configure the MISO, MOSI, CLK and nCS pins as peripheral
    IOCPinConfigPeriphInput(miso_.getPort(), miso_.getPin(), miso_.getIoc());
    IOCPinConfigPeriphOutput(mosi_.getPort(), mosi_.getPin(), mosi_.getIoc());
    IOCPinConfigPeriphOutput(clk_.getPort(), clk_.getPin(), clk_.getIoc());
    // IOCPinConfigPeriphOutput(ncs_.getPort(), ncs_.getPin(), ncs_.getIoc());

    // Configure MISO, MOSI, CLK and nCS GPIOs
    GPIOPinTypeSSI(miso_.getPort(), miso_.getPin());
    GPIOPinTypeSSI(mosi_.getPort(), mosi_.getPin());
    GPIOPinTypeSSI(clk_.getPort(), clk_.getPin());
    // GPIOPinTypeSSI(ncs_.getPort(), ncs_.getPin());

    // Configure the SPI0 clock
    SSIConfigSetExpClk(base_, SysCtrlIOClockGet(), protocol_, \
                       mode_, baudrate_, datawidth_);

    // Enable the SPI0 module
    SSIEnable(base_);
}
Пример #20
0
/*
 * Configura la interfaz SSI0
 *
 * Notas: El formato Freescale SPI con SPO=1 y SPH=1 funciona bien con el TLV5616,
 * 	pero en cambio se configura con el formato TI, que es especifico para este integrado
 *
 */
void SSI0_Init(void) {
	#ifdef __CONFIGURACION_CON_REGISTROS__
		volatile unsigned long delay;
		// Habilitar el modulo SSI y el puerto A
		SYSCTL_RCGCSSI_R |= SYSCTL_RCGCSSI_R0;
		SYSCTL_RCGCGPIO_R |= SYSCTL_RCGCGPIO_R0;
		delay = SYSCTL_RCGCGPIO_R;		// Esperar a que se activen los modulos
		// Configurar funciones alternativas en los pines PA2, 3, 5
		GPIO_PORTA_AFSEL_R |= 0x2c;
		// Configurar la funcion de SSI en los pines
		GPIO_PORTA_PCTL_R = (GPIO_PORTA_PCTL_R & 0xff0f00ff) + GPIO_PCTL_PA2_SSI0CLK + GPIO_PCTL_PA3_SSI0FSS + GPIO_PCTL_PA5_SSI0TX;
		// Configurar los registros de funciones digitales, configurar pull-up o pull-down alternativamente
		GPIO_PORTA_AMSEL_R = 0;
		GPIO_PORTA_DEN_R |= 0x2c;

		// Configurar los formatos de trama
		// Deshabilitar el modulo SSI antes de hacer cambios
		SSI0_CR1_R &= ~SSI_CR1_SSE;
		// Connfigurar la operacion como maestro
		SSI0_CR1_R &= ~SSI_CR1_MS;
		// Configurar la fuente de reloj como reloj del sistema basado en un factor de division
		SSI0_CC_R &= ~SSI_CC_CS_M;
		// Configurar el prescaler para una frecuencia del modulo SSI de 1Mhz = 40MHz/40
		SSI0_CPSR_R = (SSI0_CPSR_R & ~SSI_CPSR_CPSDVSR_M) + 20;
		// Configurar el serial clock rate, polaridad del reloj y fase, protocolo y tamaño de los datos
		SSI0_CR0_R &= ~(SSI_CR0_SCR_M); 	// SCR = 0
	//	SSI0_CR0_R |= SSI_CR0_SPO;			// SPO = 1
	//	SSI0_CR0_R |= SSI_CR0_SPH;			// SPH = 1
	//	SSI0_CR0_R = (SSI0_CR0_R & ~SSI_CR0_FRF_M) + SSI_CR0_FRF_MOTO;	// Freescale SPI
		SSI0_CR0_R = (SSI0_CR0_R & ~SSI_CR0_FRF_M) + SSI_CR0_FRF_TI;	// Texas Instruments Synchronous Serial Frame Format
		SSI0_CR0_R = (SSI0_CR0_R & ~SSI_CR0_DSS_M) + SSI_CR0_DSS_16;	// 16 bits de datos

		// Finalmente, habilitar el modulo SPI
		SSI0_CR1_R |= SSI_CR1_SSE;
	#else
		// Habilitar el reloj
		SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI0);
		SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);

		// Configurar los pines
		GPIOPinConfigure(GPIO_PA2_SSI0CLK);
		GPIOPinConfigure(GPIO_PA3_SSI0FSS);
		GPIOPinConfigure(GPIO_PA5_SSI0TX);
		GPIOPinTypeSSI(GPIO_PORTA_BASE, GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_5);

		// Configurar el modulo SSI y habilitarlo
		SSIConfigSetExpClk(SSI0_BASE, SysCtlClockGet(), SSI_FRF_TI, SSI_MODE_MASTER, 2000000, 16);
		SSIEnable(SSI0_BASE);
	#endif
}
Пример #21
0
void Ssi1_ad7567Init(void)
/*Act as Master*/
{
	SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI1);
	SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE);
	GPIOPinConfigure(GPIO_PE0_SSI1CLK);
    GPIOPinConfigure(GPIO_PE1_SSI1FSS);
    GPIOPinConfigure(GPIO_PE2_SSI1RX);
    GPIOPinConfigure(GPIO_PE3_SSI1TX);
    GPIOPinTypeSSI(GPIO_PORTE_BASE, GPIO_PIN_0 | GPIO_PIN_1|GPIO_PIN_2 | GPIO_PIN_3 );
   	SSIConfigSetExpClk(SSI1_BASE,SysCtlClockGet(),SSI_FRF_MOTO_MODE_2,SSI_MODE_MASTER,20000000,14);
	SSIEnable(SSI1_BASE);

	
}
Пример #22
0
//------------------------------------LCD-------------------------------------------
//初始化SPI端口
void SSI0_InitialSPI(void)     
{
		SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI0);
		SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);

		GPIOPinConfigure(GPIO_PA2_SSI0CLK);
		GPIOPinConfigure(GPIO_PA3_SSI0FSS);
		GPIOPinConfigure(GPIO_PA5_SSI0TX);
		GPIOPinConfigure(GPIO_PA4_SSI0RX);
		GPIOPinTypeSSI(GPIO_PORTA_BASE,GPIO_PIN_5|GPIO_PIN_4|GPIO_PIN_3|GPIO_PIN_2);

		SSIConfigSetExpClk(SSI0_BASE, SysCtlClockGet(), SSI_FRF_MOTO_MODE_0, SSI_MODE_MASTER,50000, 16);
		SSIEnable(SSI0_BASE);
		SSI0_FlushFIFO();
}
Пример #23
0
void Ssi0Init(void)
/*Act as Master*/
{
	SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI0);
	SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
	GPIOPinConfigure(GPIO_PA2_SSI0CLK);
    GPIOPinConfigure(GPIO_PA3_SSI0FSS);
    GPIOPinConfigure(GPIO_PA4_SSI0RX);
   // GPIOPinConfigure(GPIO_PA5_SSI0TX);
    GPIOPinTypeSSI(GPIO_PORTA_BASE, GPIO_PIN_2 | GPIO_PIN_4);
   	SSIConfigSetExpClk(SSI0_BASE,SysCtlClockGet(),SSI_FRF_MOTO_MODE_2,SSI_MODE_MASTER,20000000,14);
	SSIEnable(SSI0_BASE);

	
}
Пример #24
0
/*
 * 	This configures the SSI.
 * 	Setups only the TX and configures the SSI to work at 6.4Mhz and 8bit packets.
 * 	It's 6.4Mhz because 6.4Mhz/8 is about 800Khz, the frequency needed for the WS2812B
 *
 */
void SPIInit()
{
  // put your setup code here, to run once:
  SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI0);
  SysCtlDelay(3);

  SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
  SysCtlDelay(3);

  GPIOPinConfigure(GPIO_PA5_SSI0TX);

  GPIOPinTypeSSI(GPIO_PORTA_BASE, GPIO_PIN_5);
  SSIIntClear(SSI0_BASE,SSI_TXEOT);
  SSIConfigSetExpClk(SSI0_BASE, 80000000, SSI_FRF_MOTO_MODE_0,SSI_MODE_MASTER, 6400000, 8);
  SSIEnable(SSI0_BASE);
}
Пример #25
0
int
main(void)
{
		//Clock del sistema
		SysCtlClockSet(SYSCTL_SYSDIV_1 | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN |
			SYSCTL_XTAL_16MHZ);

		//Configuro la UART1 para el GPS

		SysCtlPeripheralEnable(SYSCTL_PERIPH_UART1);
		SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);

		GPIOPinConfigure(GPIO_PB0_U1RX);
		GPIOPinConfigure(GPIO_PB1_U1TX);

		GPIOPinTypeUART(GPIO_PORTB_BASE, GPIO_PIN_0 | GPIO_PIN_1);

		UARTConfigSetExpClk(UART1_BASE, SysCtlClockGet(), 9600,
				(UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE |
						UART_CONFIG_PAR_NONE));


		//Uso el modulo SPI3 para el YEI3
		SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI3);

		//Habilito el puerto correspondiente D
		SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);

		//Configuro c/u de los pines para la funcion especificada
		GPIOPinConfigure(GPIO_PD0_SSI3CLK);
		GPIOPinConfigure(GPIO_PD1_SSI3FSS);
		GPIOPinConfigure(GPIO_PD2_SSI3RX);
		GPIOPinConfigure(GPIO_PD3_SSI3TX);

		GPIOPinTypeSSI(GPIO_PORTD_BASE, GPIO_PIN_3 | GPIO_PIN_2 | GPIO_PIN_1 |
			GPIO_PIN_0);

		//Configuro el SPI para trabajar a 115200bps
		SSIConfigSetExpClk(SSI3_BASE, SysCtlClockGet(), SSI_FRF_MOTO_MODE_0, SSI_MODE_MASTER, 115200, 8);

		SSIEnable(SSI3_BASE);

		//Orden enviada al Yei

		return(0);
}
Пример #26
0
/*
 *  ======== EK_LM4F120XL_initWiFi ========
 */
Void EK_LM4F120XL_initWiFi(Void)
{
    /* Configure SSI2 */
    SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI2);

    GPIOPinConfigure(GPIO_PB4_SSI2CLK);
    GPIOPinConfigure(GPIO_PB6_SSI2RX);
    GPIOPinConfigure(GPIO_PB7_SSI2TX);

    GPIOPinTypeSSI(GPIO_PORTB_BASE, GPIO_PIN_4 | GPIO_PIN_6 | GPIO_PIN_7);

    /* Call necessary SPI init functions */
    SPI_init();
    EK_LM4F120XL_initDMA();

    /* Initialize WiFi driver */
    WiFi_init();
}
Пример #27
0
u32 platform_spi_setup( unsigned id, int mode, u32 clock, unsigned cpol, unsigned cpha, unsigned databits )
{
  unsigned protocol;

  if( cpol == 0 )
    protocol = cpha ? SSI_FRF_MOTO_MODE_1 : SSI_FRF_MOTO_MODE_0;
  else
    protocol = cpha ? SSI_FRF_MOTO_MODE_3 : SSI_FRF_MOTO_MODE_2;
  mode = mode == PLATFORM_SPI_MASTER ? SSI_MODE_MASTER : SSI_MODE_SLAVE;
  SSIDisable( spi_base[ id ] );

  GPIOPinTypeSSI( spi_gpio_base[ id ], spi_gpio_pins[ id ] );

  // FIXME: not sure this is always "right"
  // GPIOPadConfigSet(spi_gpio_base[ id ], spi_gpio_clk_pin[ id ], GPIO_STRENGTH_8MA, GPIO_PIN_TYPE_STD_WPU);

  SSIConfigSetExpClk( spi_base[ id ], SysCtlClockGet(), protocol, mode, clock, databits );
  SSIEnable( spi_base[ id ] );
  return clock;
}
/*
 * spi_config_SSI0 ();
 * Enable SPI on
 * SSIOClk PA2
 * SSIOFss PA3
 * SSIOR	PA4
 * SSIT		PA5
 */
void spi_config_SSI0(void)
{
	volatile uint32_t clk_freq = 0;

	SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
	SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI0); // enable SSI0

	GPIOPinConfigure(GPIO_PA2_SSI0CLK);
	GPIOPinConfigure(GPIO_PA3_SSI0FSS);
	GPIOPinConfigure(GPIO_PA5_SSI0TX);
	GPIOPinConfigure(GPIO_PA4_SSI0RX);

	GPIOPinTypeSSI(GPIO_PORTA_BASE, GPIO_PIN_5 | GPIO_PIN_4 | GPIO_PIN_2);

	clk_freq = SysCtlClockGet()/20;
	SSIConfigSetExpClk(SSI0_BASE, clk_freq, SSI_FRF_MOTO_MODE_0, SSI_MODE_MASTER, 10000, 16);
	SSIEnable(SSI0_BASE);

	clk_freq = SSIClockSourceGet(SSI0_BASE);
}
Пример #29
0
void spi_uart_init(unsigned short uart_idx, unsigned long baud, unsigned short config) {
    unsigned long divisor;



    /* Enable the peripherals used to drive the UART on SSI, and the CS */
    SysCtlPeripheralEnable(UART4_SSI_SYSCTL_PERIPH);
    SysCtlPeripheralEnable(UART4_GPIO_SYSCTL_PERIPH);
    SysCtlPeripheralEnable(UART4_CS_GPIO_SYSCTL_PERIPH);

    // set MOD_RES == Low
    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE);
    GPIOPinTypeGPIOOutput(GPIO_PORTE_BASE, GPIO_PIN_5);
    GPIOPinWrite(GPIO_PORTE_BASE, GPIO_PIN_5 , 1);


    /* Configure the appropriate pins to be SSI instead of GPIO */
    GPIOPinTypeSSI(UART4_GPIO_PORT_BASE, UART4_SSI_PINS);
    GPIOPinTypeGPIOOutput(UART4_CS_GPIO_PORT_BASE, UART4_CS);
    GPIOPadConfigSet(UART4_GPIO_PORT_BASE, UART4_SSI_PINS, GPIO_STRENGTH_4MA, GPIO_PIN_TYPE_STD_WPU);
    GPIOPadConfigSet(UART4_CS_GPIO_PORT_BASE, UART4_CS, GPIO_STRENGTH_4MA, GPIO_PIN_TYPE_STD_WPU);

    DESELECT();

    /* Configure the SSI1 port */
    SSIConfigSetExpClk(UART4_SSI_BASE, SysCtlClockGet()/16, SSI_FRF_MOTO_MODE_0, SSI_MODE_MASTER, 400000, 8);
    SSIEnable(UART4_SSI_BASE);
    /*
    	SELECT();
    	xmit_spi( LCR); // write to LCR
    	xmit_spi( 0x83 ); // write  8N1

    	divisor = 7372800 / baud / 16;
    	INFO("divisor %X",divisor);
    	xmit_spi(DLL); // write to DLL register
    	xmit_spi((unsigned short)divisor ); // low
    	xmit_spi(DLH); // write to DLH register
    	xmit_spi( (unsigned short)(divisor >> 8) ); // low
    	DESELECT();
    */
}
Пример #30
0
//*****************************************************************************
//
//! Enable the SSI component of the OLED display driver.
//!
//! \param ulFrequency specifies the SSI Clock Frequency to be used.
//!
//! This function initializes the SSI interface to the OLED display.
//!
//! \return None.
//
//*****************************************************************************
void
RIT128x96x4Enable(unsigned long ulFrequency)
{
    unsigned long ulTemp;

    //
    // Disable the SSI port.
    //
    SSIDisable(SSI0_BASE);

    //
    // Configure the SSI0 port for master mode.
    //
    SSIConfigSetExpClk(SSI0_BASE, SysCtlClockGet(), SSI_FRF_MOTO_MODE_2,
                       SSI_MODE_MASTER, ulFrequency, 8);

    //
    // (Re)Enable SSI control of the FSS pin.
    //
    GPIOPinTypeSSI(GPIO_PORTA_BASE, GPIO_PIN_3);
    GPIOPadConfigSet(GPIO_PORTA_BASE, GPIO_PIN_3, GPIO_STRENGTH_8MA,
                     GPIO_PIN_TYPE_STD_WPU);

    //
    // Enable the SSI port.
    //
    SSIEnable(SSI0_BASE);

    //
    // Drain the receive fifo.
    //
    while(SSIDataGetNonBlocking(SSI0_BASE, &ulTemp) != 0)
    {
    }

    //
    // Indicate that the RIT driver can use the SSI Port.
    //
    g_bSSIEnabled = true;
}