📄 2410_8141.c
字号:
cTemp =rdata>>12;
switch(cTemp&0x03) //判断接收数据来自哪一个子串口
{
case 0:
{
Revbuff1=rdata&0xff;
RevFLAG1=1;
}
break;
case 1:
{
Revbuff2=rdata&0xff;
RevFLAG2=1;
}
break;
case 2:
{
Revbuff3=rdata&0xff;
RevFLAG3=1;
}
break;
case 3:
{
Revbuff4=rdata&0xff;
RevFLAG4=1;
}
break;
default:
break;
}
Flag_R=0;
}
if(Flag_T)
{
cTemp =rdata>>10;
switch(cTemp&0x03) //判断哪一个子串口发送FIFO为空
{
case 0:
Flag1_T=1;
break;
case 1:
Flag2_T=1;
break;
case 2:
Flag3_T=1;
break;
case 3:
Flag4_T=1;
break;
default:
break;
}
Flag_T=0;
}
return 1;
}
void SPI_CLK_S(void)/* CLK=1 */
{
rGPBDAT |= 1<<2;
}
void SPI_CLK_R(void)/* CLK=0 */
{
rGPBDAT &= ~(1<<2);
}
void SPI_CS_S(void)/* CS=1 */
{
rGPADAT |= 1<<18;
}
void SPI_CS_R(void)/* CS=0 */
{
rGPADAT &= ~(1<<18);
}
void SPI_RST_S(void)/* RST=1 */
{
rGPADAT |= 1<<17;
}
void SPI_RST_R(void)/* RST=0 */
{
rGPADAT &= ~(1<<17);
}
void RS485T_nR_S(void)/* RS485T_nR=1 */
{
rGPADAT |= 1<<19;
}
void RS485T_nR_R(void)/* RS485T_nR=0 */
{
rGPADAT &= ~(1<<19);
}
void SPI_DIN_S(void)/* DIN=1 */
{
rGPEDAT |= 1<<13;
}
void SPI_DIN_R(void)/* DIN=0 */
{
rGPEDAT &= ~(1<<13);
}
char SPI_DOUT_READ(void)/* SPI_DOUT */
{
return ((rGPBDAT & (1<<4))>>4);
}
void delay_spi(void)
{
unsigned char i;
for (i=0;i<1;i++)
{
;
}
}
unsigned char SPITransmit(char wSendData)
{
unsigned char i;
unsigned char wReadData;
SPI_CLK_R();
for (i = 8; i > 0; i --)
{
if (wSendData&0x80)/* 送数据SI */
{
SPI_DIN_S();
}else
{
SPI_DIN_R();
}
SPI_CLK_S(); /* 上升沿接收 */
wSendData <<= 1;
wReadData <<=1; //Shift first, then fill the bit
//delay_spi();//Delay(DELAY_TIME);
wReadData|=SPI_DOUT_READ();//wReadData |= DOUT; //Receive the 16-bit data
SPI_CLK_R();//SCLK = LOW;
//delay_spi();//Delay(DELAY_TIME); //Can be comment by acture use
}
return(wReadData);
#if 0
char i;
int wReadData;
wReadData = 0;
for(i = 0; i < 16; i++)
{
if(wSendData & 0x8000)
SPI_DIN_S();//DIN=1;
else
SPI_DIN_R();//DIN = 0;
wReadData <<=1; //Shift first, then fill the bit
SPI_CLK_S();//SCLK = HIGH;
wSendData <<= 1;
wReadData|=SPI_DOUT_READ();//wReadData |= DOUT; //Receive the 16-bit data
delay_spi();//Delay(DELAY_TIME);
SPI_CLK_R();//SCLK = LOW;
delay_spi();//Delay(DELAY_TIME); //Can be comment by acture use
}
return(wReadData);
#endif
}
void ClrCS_8141 (void)
{
SPI_CS_R();
}
void SetCS_8141(void)
{
SPI_CS_S();
}
void SPI_INIT(void)
{
//PORT A GROUP
//SPI_nCS 接核心板B64 处理器GPA18引脚
//SPI_RST 接核心板B63处理器GPA17引脚
//RS485T_nR接核心板B65处理器GPA19引脚
rGPACON &= ~(0x7<<17);
rGPADAT &= ~(0x7<<17);
// PORT B GROUP
//SPI_CLK 接核心板B16 处理器GPB2引脚
//SPI_DOUT 接核心板B17处理器GPB4引脚
rGPBCON &= ~(0x3<<4);//GPB2
rGPBCON |= 0x1<<4;
rGPBCON &= ~(0x3<<8);//GPB4
//新加
rGPBUP &=~(0x1<<4);
//PORT E GROUP
//SPI_DIN 接核心板B36处理器GPE13引脚
rGPECON &= ~(0x3<<26);
rGPECON |= 0x1<<26;
//PORT G GROUP
//SPI_IRQ 接核心板A51处理器GPG2引脚
rGPGCON &= ~(0x3<<4);
// rGPGCON |= 0x2<<4;
}
void testDin(void)
{
Delay_SPI(1000);
SPI_DIN_S(); //DIN=1
Delay_SPI(1000);
SPI_DIN_R(); //DIN=0;
Delay_SPI(1000);
}
void testClk(void)
{
Delay_SPI(1000);
SPI_CLK_S(); //CLK=1
Delay_SPI(1000);
SPI_CLK_R(); //CLK=0;
Delay_SPI(1000);
}
void testRst(void)
{
Delay_SPI(1000);
SPI_RST_S(); //CLK=1
Delay_SPI(1000);
SPI_RST_R(); //CLK=0;
Delay_SPI(1000);
}
//void main() //主函数
void SpiTest(void)
{
//端口调试
// unsigned char i;
// U16 Dout;
//int a[2];
//unsigned char j[10]={0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39};
unsigned char D_F[100];
int index;
unsigned char temp1;
SPI_INIT();//初始化CPU的SPI引脚
SPI_RST_R();
Delay_SPI(5000);
Delay_SPI(5000);
Delay_SPI(5000);
Delay_SPI(5000);
SPI_RST_S();//8141 SPI复位无效
Delay_SPI(5000);
Delay_SPI(5000);
Delay_SPI(5000);
Delay_SPI(5000); //Write814xConfig(0, 0x00, 0x05);//8141寄存器配置
Spi_Config(1,1,0x50,1);
Spi_Config(1,1,0x50,1);
Spi_Config(0,1,0x50,2);
Spi_Config(0,1,0x50,2);
Delay_SPI(5000);//
TEMP=Read814xConfig(1);//读取串口配置返回内容未验证
TEMP++;
temp1=5;
while(1)
{
// for(i=0;i<9;i++)
{
//SendToRS485(j[i]);
//SendToRS232(j[i]);
while(RevToData()==0)
{;}
D_F[index]=Revbuff2;
index++;
if(index>99)
{
// for(i=0;i<90;i++)
index=0;
{
SendToRS232(D_F[0]);
}
}
}
//TEMP=SendTo814X(0,0);//发送0,0返回就是串口回传的数据
/* if(TEMP&0x8000)
{
TEMP++;
}*/
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -