📄 spi.c
字号:
#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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -