根据SPI通信规范(具体可以参考“浅谈SPI总线”),与IO口模拟I2C类似,通过普通IO端口模拟也可以实现单片机(主设备)与从设备的SPI通信,其中使能信号CS在开始SPI通信前置低,在通信结束后置高,时钟线SCK通过IO口延时高低电平变化实现,MOSI,MISO根据SCK状态实现发送接收数据等,以下是相关代码
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* @Purpose: SPI Communication driver(By IO)
* @Author: Purple
* @Version: 1.0
* @Date: Create By Purple 2014.08.16
*
*
* Copyright (C) BlueWhale Tech.
* All rights reserved.
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
#ifndef SPIDRV_H
#define SPIDRV_H
/* Include Files */
/* Macros */
//#define SPI_MISO_USE
//#define SPI_CS_USE
#define SPI_MOSI PTT_PTT0 //举例以Freescale PT0端口为MOSI线,PT1端口为MISO线,PT2端口为MOSI线,PT3端口为CS线
#define SPI_MOSI_IO DDRT_DDRT0
#ifdef SPI_MISO_USE
#define SPI_MISO PTT_PTT1
#define SPI_MISO_IO DDRT_DDRT1
#endif
#define SPI_SCK PTT_PTT2
#define SPI_SCK_IO DDRT_DDRT2
#ifdef SPI_CS_USE
#define SPI_CS PTT_PTT3
#defi