spi.c
来自「TFT-LCD Atmega128 Source Code」· C语言 代码 · 共 52 行
C
52 行
#include "config.h"
#define SPI_SPEED_FOSC_DIV_4 0
#define SPI_SPEED_FOSC_DIV_16 1
#define SPI_SPEED_FOSC_DIV_64 2
#define SPI_SPEED_FOSC_DIV_128 3
#define SPI_2X_DISABLE 0
#define SPI_2X_ENABLE 1
#define SPI_MODE0_CPOL0CPHA0 0x00
#define SPI_MODE1_CPOL0CPHA1 0x04
#define SPI_MODE2_CPOL1CPHA0 0x08
#define SPI_MODE3_CPOL1CPHA1 0x0C
void SPI_set_speed(unsigned char speed, unsigned option)
{
SPCR = (SPCR & 0xFC) | speed;
SPSR = (SPSR & 0xFE) | option;
}
void SPI_set_mode(unsigned mode)
{
SPCR = (SPCR & 0xF3) | mode;
}
void SPI_init()
{
// Setup SPI bus with the Lowest Speed & SPI MODE0
SPI_set_speed(SPI_SPEED_FOSC_DIV_128, SPI_2X_DISABLE);
SPI_set_mode(SPI_MODE0_CPOL0CPHA0);
SPCR |= _BV(SPE) | _BV(MSTR);
}
unsigned char SPI_send_byte(unsigned char data)
{
SPDR = data;
while(!(SPSR & _BV(SPIF)));
return SPDR;
}
unsigned char SPI_recv_byte()
{
return SPI_send_byte(0xFF); // Send dummy byte for recv operation
}
void SPI_stop()
{
SPCR = 0;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?