YGV642_SPI.c 2.54 KB
Newer Older
崔立宝's avatar
崔立宝 committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114
/************************************************ ******************************
文 件 名:YGV642_SPI.c
功能描述:YGV642的模拟SPI通信驱动库文件
作    者:张暄
版    本:V1.0
日    期:2017.4.8
******************************************************************************/
#include "YGV642_SPI.h"

/******************************************************************************
函数名:YGV642_SPI_Byte_Write
功  能:通过模拟SPI总线向YGV642发送1字节数据
参  数:Data:要发送的数据
返回值:无
******************************************************************************/
void YGV642_SPI_Byte_Write(uint8_t Data)
{
  uint8_t i;

  for(i = 0; i < 8; i++)
  {
    YGV642_SPI_SCLK_Low();

    if(Data & 0x01)
      YGV642_SPI_MOSI_High();
    else
      YGV642_SPI_MOSI_Low();

    YGV642_SPI_SCLK_High();

    Data >>= 1;
  }
}

/******************************************************************************
函数名:YGV642_SPI_Byte_Read
功  能:通过模拟SPI总线从YGV642读取1字节数据
参  数:无
返回值:读取到的数据
******************************************************************************/
uint8_t YGV642_SPI_Byte_Read(void)
{
  uint8_t   i;
  uint8_t   Data;

  Data  = 0;

  for(i = 0; i < 8; i++)
  {
    YGV642_SPI_SCLK_Low();

    Data >>= 1;

    if(YGV642_SPI_Read_MISO())
      Data |= 0x80;

    YGV642_SPI_SCLK_High();
  }

  return Data;
}

/******************************************************************************
函数名:YGV642_SPI_Word_Write
功  能:通过模拟SPI总线向YGV642发送1个字(16bit)的数据
参  数:Data:要发送的数据
返回值:无
******************************************************************************/
void YGV642_SPI_Word_Write(uint16_t Data)
{
  uint8_t i;

  for(i = 0; i < 16; i++)
  {
    YGV642_SPI_SCLK_Low();

    if(Data & 0x0001)
      YGV642_SPI_MOSI_High();
    else
      YGV642_SPI_MOSI_Low();

    YGV642_SPI_SCLK_High();

    Data >>= 1;
  }
}

/******************************************************************************
函数名:YGV642_SPI_Word_Read
功  能:通过模拟SPI总线从YGV642读取1个字(16bit)的数据
参  数:无
返回值:读取到的数据
******************************************************************************/
uint16_t YGV642_SPI_Word_Read(void)
{
  uint8_t   i;
  uint16_t  Data;

  Data  = 0;

  for(i = 0; i < 16; i++)
  {
    YGV642_SPI_SCLK_Low();

    Data >>= 1;

    if(YGV642_SPI_Read_MISO())
      Data |= 0x8000;

    YGV642_SPI_SCLK_High();
  }

  return Data;
}