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