spi.h
来自「mcp2510的spi驱动」· C头文件 代码 · 共 90 行
H
90 行
#ifndef __ASM_ARCH_SPI_H
#define __ASM_ARCH_SPI_H
#include <asm/arch/hardware.h>
#include <asm/irq.h>
#define GPIO_TC_SPIMISO (GPIO_MODE_ALT0 | GPIO_PULLUP_DIS | GPIO_E11)
#define GPIO_TC_SPIMOSI (GPIO_MODE_ALT0 | GPIO_PULLUP_DIS | GPIO_E12)
#define GPIO_TC_SPICLK (GPIO_MODE_ALT0 | GPIO_PULLUP_DIS | GPIO_E13)
inline static void SPISend ( unsigned char val, int channel )
{
int flags;
local_irq_save(flags);
if ( channel == 0 ){
SPTDAT0 = val;
while (!(SPSTA0 & 1));
}else if ( channel == 1 ){
SPTDAT1 = val;
while (!(SPSTA1 & 1));
}
local_irq_restore(flags);
}
inline static char SPIRecv ( int channel )
{
if (channel == 0){
return SPRDAT0;
}else if (channel == 1) {
return SPRDAT1;
}else
return -1;
}
inline static void Set_SIO_mode(int channel, int nSPCON, int nSPPRE, int SPPIN,
int *poldnSPCON, int *poldnSPPRE, int *poldSPPIN)
{
if(channel==0){
if(poldnSPCON){
*poldnSPCON=SPCON0;
}
SPCON0=nSPCON;
if(poldnSPPRE){
*poldnSPPRE=SPPRE0;
}
SPPRE0=nSPPRE;
if(poldSPPIN){
*poldSPPIN=SPPIN0;
}
SPPIN0=SPPIN;
}else if(channel == 1){
if(poldnSPCON){
*poldnSPCON=SPCON1;
}
SPCON1=nSPCON;
if(poldnSPPRE){
*poldnSPPRE=SPPRE1;
}
SPPRE1=nSPPRE;
if(poldSPPIN){
*poldSPPIN=SPPIN1;
}
SPPIN1=SPPIN;
}else
return;
udelay(1);
}
inline static void SPI_initIO(int channel)
{
if (channel == 0){
set_gpio_ctrl (GPIO_TC_SPIMISO);
set_gpio_ctrl (GPIO_TC_SPIMOSI);
set_gpio_ctrl (GPIO_TC_SPICLK);
}else if (channel == 1) {
}
}
#endif
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?