⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 its_spi.c

📁 program show the communication of CC100-MSP430
💻 C
字号:
/******************************************************************************
    Filename: ITS_spi.c

    Copyright 2007 Texas Instruments, Inc.
******************************************************************************/

#include "ITS_types.h"
#include "ITS_defs.h"
#include "ITS_board.h"
#include "ITS_spi.h"
#include "ITS_spi_config.h"



//----------------------------------------------------------------------------------
//   Target specific initialization of SPI interface in ITS_spi_config.c
//----------------------------------------------------------------------------------



//----------------------------------------------------------------------------------
//  void ITSSpiWrite(uint8 addr, const uint8 *buffer, uint16 length)
//
//  DESCRIPTION:
//    Write data to device, starting at internal device address "addr".
//    The device will increment the address internally for every new byte
//    that is written. For single byte write, set length to 1.
//----------------------------------------------------------------------------------
uint8 ITSSpiWrite(uint8 addr, const uint8* data, uint16 length)
{
    uint16 i;
    uint8 rc;

    HAL_SPI_BEGIN;        //P1OUT &= ~BIT4;
#ifdef HAL_SPI_INTERFACE_BITBANG
    rc = ITSSpiBitbangOut(addr);
    for (i = 0; i < length; i++)
    {
        ITSSpiBitbangOut(data[i]);
    }
#else
    HAL_SPI_TXBUF_SET(addr);
    HAL_SPI_WAIT_TXFIN;
    rc = HAL_SPI_RXBUF;
    for (i = 0; i < length; i++)
    {
      HAL_SPI_TXBUF_SET(data[i]);
      HAL_SPI_WAIT_TXBUF;
    }
#ifndef HAL_SPI_INTERFACE_USI
    HAL_SPI_WAIT_TXFIN;
#endif
#endif
    HAL_SPI_END;    //P1OUT |= BIT4;
    return(rc);

}

//----------------------------------------------------------------------------------
//  uint8 ITSSpiRead(uint8 addr, uint8* data, uint16 length)
//
//  DESCRIPTION:
//    Read data from device, starting at internal device address "addr".
//    The device will increment the address internally for every new byte
//    that is read. Note that the master device needs to write a dummy byte
//    (in this case 0) for every new byte in order to generate the clock to
//    clock out the data. For single byte read, set length to 1.
//----------------------------------------------------------------------------------
uint8 ITSSpiRead(uint8 addr, uint8* data, uint16 length)
{
    uint16 i;
    uint8 rc;

    HAL_SPI_BEGIN;        //P1OUT &= ~BIT4;
#ifdef HAL_SPI_INTERFACE_BITBANG
    rc = ITSSpiBitbangOut(addr);
    for (i = 0; i < length; i++)
    {
        data[i] = ITSSpiBitbangIn();
    }
#else
    HAL_SPI_TXBUF_SET(addr);      //  U0TXBUF=addr
    HAL_SPI_WAIT_TXFIN;           //while(!(U0TCTL & TXEPT));
    rc = HAL_SPI_RXBUF;           //rc = U0RXBUF
    for (i = 0; i < length; i++)
    {
        HAL_SPI_TXBUF_SET(0);        // Dummy write to read data byte
        HAL_SPI_WAIT_TXFIN;
        data[i] = HAL_SPI_RXBUF;     // Store data from last data RX
    }
#endif
    HAL_SPI_END;    //P1OUT |= BIT4;
    return(rc);
}


//----------------------------------------------------------------------------------
//  uint8 ITSSpiStrobe(uint8 cmd)
//
//  DESCRIPTION:
//    Special write function, writing only one byte (cmd) to the device.
//----------------------------------------------------------------------------------
uint8 ITSSpiStrobe(uint8 cmd)
{
    uint8 rc;

    HAL_SPI_BEGIN;
#ifdef HAL_SPI_INTERFACE_BITBANG
    rc = ITSSpiBitbangOut(cmd);
#else
    HAL_SPI_TXBUF_SET(cmd);
    HAL_SPI_WAIT_TXFIN;
    rc = HAL_SPI_RXBUF;
#endif
    HAL_SPI_END;
    return(rc);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -