📄 spidev.c
字号:
#include "includes.h"
#include "spidev.h"
void spi_init(void)
{
//SPI0 LED8
rGPECON &= ~(0x3<<24 | 0x3<<26);
rGPECON |= (0x2<<24 | 0x2<<26);
//SPI1 DAC
//rGPGCON &= ~(0x3<<12 | 0x3<<14);
rGPGCON |= (0x3<<12 | 0x3<<14);
rGPBCON &= ~(0x3<<18);
rGPBCON |= (0x1<<18);
rGPBUP |= 0x1<<9;
//rGPBUP &= ~(0x1<<9);
rGPBDAT |= 0x1<<9;
}
void spiled_write(U8 *buf, int len)
{
rSPPRE0=0x0; //if PCLK=50Mhz,SPICLK=25Mhz
rSPCON0=(0<<5)|(1<<4)|(1<<3)|(1<<2)|(0<<1)|(0<<0);//Polling,en-SCK,master,low,A,normal
rSPPIN0=(0<<2)|(1<<1)|(0<<0);//dis-ENMUL,SBO,release
while(len > 0)
{
if(rSPSTA0&0x1)
{
rSPTDAT0 = (len--, *buf++);
while(!(rSPSTA0&0x1));
}
}
rSPCON0=(0<<5)|(0<<4)|(1<<3)|(1<<2)|(0<<1)|(0<<0);
}
void spidac_write(U8 data)
{
rSPPRE1=0x0; //if PCLK=50Mhz,SPICLK=25Mhz
rSPCON1=(0<<5)|(1<<4)|(1<<3)|(1<<2)|(0<<1)|(0<<0);//Polling,en-SCK,master,low,A,normal
rSPPIN1=(0<<2)|(1<<1)|(0<<0);//dis-ENMUL,SBO,release
while(!(rSPSTA1&0x1));
rSPTDAT1 = data;
while(!(rSPSTA1&0x1));
rSPCON1=(0<<5)|(0<<4)|(1<<3)|(1<<2)|(0<<1)|(0<<0);
rGPBDAT &= ~(0x1<<9);
for(data=0; data<250; data++);
//OSTimeDly(1);
rGPBDAT |= (0x1<<9);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -