📄 spi.c
字号:
/*
*********************************************************************************************************
* Atmega88
* spi functions
*
* File : SPI.C
* Data : March 20, 2007
*********************************************************************************************************
*/
#include "bootloader.h"
/*
*********************************************************************************************************
* INTERRUPT VECTOR FOR "SPI_STC"
*
* Description :
* Note(s)/Warnings :
*********************************************************************************************************
*/
/*
#pragma vector = SPI_STC_vect
__interrupt void SPI_STC_isr(void)
{
}
*/
/*
*********************************************************************************************************
* SPI_PUT SPI_HEAD
*
* Description :
* Arguments :
* Returned Values :
* Note(s)/Warnings :
*********************************************************************************************************
*/
void SpiPut(BYTE data)
{
SPDR = data;
SPI_WAIT();
}
void SpiHead(BYTE data)
{
CLR_CSN;
while (READ_MISO);
SpiPut(data);
}
/*
*********************************************************************************************************
* SpiWriteReg
*
* Description :
* Arguments :
* Returned Values : none
* Note(s)/Warnings :
*********************************************************************************************************
*/
void SpiWriteReg(BYTE addr, BYTE val)
{
SpiHead(addr);
SpiPut(val);
SET_CSN;
}
/*
*********************************************************************************************************
* SpiReadReg
*
* Description :
* Arguments :
* Returned Values : none
* Note(s)/Warnings :
*********************************************************************************************************
*/
BYTE SpiReadReg(BYTE addr)
{
BYTE x;
SpiHead(addr | READ_SINGLE);
SpiPut(0);
x = SPDR;
SET_CSN;
return x;
}
/*
*********************************************************************************************************
* SpiStrobe
*
* Description :
* Arguments :
* Returned Values : none
* Note(s)/Warnings :
*********************************************************************************************************
*/
void SpiStrobe(BYTE strobe)
{
SpiHead(strobe);
SET_CSN;
}
/*
*********************************************************************************************************
* SPI_INIT
*
* Description :
* Arguments :
* Returned Values : none
* Note(s)/Warnings :
*********************************************************************************************************
*/
//SPIE SPE DORD MSTR CPOL CPHA SPR1 SPR0 [SPCR]
// 0 1 0 1 0 0 0 0
//SPIF WCOL – – – – – SPI2X [SPSR]
//MSB - - - - - - LSB [SPDR]
//---CPOL Functionality---
//CPOL (Leading Edge)( Trailing Edge)
// 0 Rising Falling
// 1 Falling Rising
//---CPHA Functionality---
//CPHA (Leading Edge) (Trailing Edge)
// 0 Sample Setup
// 1 Setup Sample
// SPI2X SPR1 SPR0 SCK Frequency
// 0 0 0 fosc/4
// 0 0 1 fosc/16
// 0 1 0 fosc/64
// 0 1 1 fosc/128
// 1 0 0 fosc/2
// 1 0 1 fosc/8
// 1 1 0 fosc/32
// 1 1 1 fosc/64
/*
void SPI_INIT(void){
SPCR = B0101_0001;
SPSR = B0000_0001
}*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -