FreeCalypso > hg > freecalypso-sw
view gsm-fw/bsp/abb+spi/spi_drv.c @ 390:bb4814eb51e4
target-utils abb[rw] commands: call abb_init() to avoid dead hang
author | Michael Spacefalcon <msokolov@ivan.Harhan.ORG> |
---|---|
date | Wed, 11 Jun 2014 07:11:16 +0000 |
parents | e48ea5875df7 |
children | 54459b912ef0 |
line wrap: on
line source
/**********************************************************************************/ /* TEXAS INSTRUMENTS INCORPORATED PROPRIETARY INFORMATION */ /* */ /* Property of Texas Instruments -- For Unrestricted Internal Use Only */ /* Unauthorized reproduction and/or distribution is strictly prohibited. This */ /* product is protected under copyright law and trade secret law as an */ /* unpublished work. Created 1987, (C) Copyright 1997 Texas Instruments. All */ /* rights reserved. */ /* */ /* */ /* Filename : spi_drv.c */ /* */ /* Description : Functions to drive the SPI module. */ /* The Serial Port Interface is a bidirectional 3 lines */ /* interface dedicated to the transfer of data to and */ /* from up to 5 external devices offering a 3 lines */ /* serial interface. */ /* In this project, it is only used to connect the TI */ /* Analog BaseBand (ABB). */ /* It is assumed that the ABB is connected as the SPI */ /* device 0. */ /* */ /* This interface is specified to be compatible with */ /* the UMA1018M Philips, the FUJITSU MB15F02, the */ /* SIEMENS PMB2306T synthesizers and the TI ABB. */ /* */ /* This serial port is based on a looped shift-register */ /* thus allowing both transmit (PISO) and receive (SIPO) */ /* modes. */ /* */ /* */ /* Author : Pascal PUEL */ /* */ /* Version number : 1.45 */ /* */ /* Date and time : 07/01/03 */ /* */ /* Previous delta : Rework */ /* */ /**********************************************************************************/ #include "spi_drv.h" /*-----------------------------------------------------------------------*/ /* SPI_InitDev() */ /* */ /* This function initializes the SPI registers for an external device */ /* connected to the serial port. */ /* */ /*-----------------------------------------------------------------------*/ void SPI_InitDev(T_SPI_DEV *Device) { unsigned short Param,Gate,Shiftval; unsigned short Mask = 0x7bde; /* Clock enable, mask ITs and pre scale setting */ * (volatile SYS_UWORD16 *) SPI_REG_SET1 = (SPI_CLK_ON | Device->PrescVal | SPI_IT_MASK_0 | SPI_IT_MASK_1); /* Building the parameter for REG_SET2 initialization */ Shiftval = Device->DevId >> 7; Param = (Device->ClkEdge | Device->TspEnLevel | Device->TspEnForm)<<Shiftval ; Gate = Mask<<Shiftval; * (volatile SYS_UWORD16 *) SPI_REG_SET2 = (* (volatile SYS_UWORD16 *) SPI_REG_SET2 & Gate) | Param; /* Configuring CTRL_REG : this writting erases the previous one */ * (volatile SYS_UWORD16 *) SPI_REG_CTRL = (Device->DataTrLength | Device->DevId); /* Stop the SPI clock */ #ifdef SPI_CLK_LOW_POWER SPI_CLK_DISABLE #endif }