📄 csmispi.cpp
字号:
#include "class.h"
//#ifdef _SMISPIENABLE
CFGPIO_OUT SO(Flash_SO,1);
CFGPIO_OUT SCK(Flash_SCK,0);
CFGPIO_IN SI(Flash_SI);
CSMISPI::CSMISPI(INT8U cs):CS(cs,1)
{
//SpiMutex=OSMutexCreate(8,&err);
// SpiMutex=err;
//CIOPORT tempport;
//tempport.CIOPORTSET(00,P01);//si
//tempport.CIOPORTSET(00,P02);//so
//tempport.CIOPORTSET(00,P03);//sck
//tempport.CIOPORTSET(00,P04);//cs
/*INT8U tempi;
tempi=SPI_SI&0x1f;
if(SPI_SI&0x80)
IO1DIR=IO1DIR&(~(1<<tempi));
else
IO0DIR=IO0DIR&(~(1<<tempi));
tempi=SPI_SO&0x1f;
if(SPI_SO&0x80)
IO1DIR=IO1DIR&(~(1<<tempi))|(1<<tempi);
else
IO0DIR=IO0DIR&(~(1<<tempi))|(1<<tempi);
tempi=SPI_SCK&0x1f;
if(SPI_SCK&0x80)
IO1DIR=IO1DIR&(~(1<<tempi))|(1<<tempi);
else
IO0DIR=IO0DIR&(~(1<<tempi))|(1<<tempi);
tempi=SPI_CS&0x1f;
if(SPI_CS&0x80)
IO1DIR=IO1DIR&(~(1<<tempi))|(1<<tempi);
else
IO0DIR=IO0DIR&(~(1<<tempi))|(1<<tempi);*/
}
//void CSMISPI::Delay8us(void)
//{ INT16U i;
// for(i=0;i<1000;i++);
//}
/*void CSMISPI:: Delay100ns(void)
{
INT8U i;
for(i=0;i<100;i++);
}*/
void CSMISPI::SpiOpen()
{
CS.set();
SO.set();
CS.clr();//片选CS
SCK.clr();
Xns(50);
//Delay100ns();
}
void CSMISPI::SpiClose(void)//关闭 片选
{
CS.set();
SCK.clr();
Xns(50);
//SO.set();
//SI.set();
// Delay100ns();
}
void CSMISPI::SpiSendByte(INT8U SpiData)
{
INT8U tempData;
INT8U i;
tempData=SpiData;
for(i=0;i<8;i++)
{
SCK.clr();
if((tempData<<i)&0x80)
{SO.set();}
else {SO.clr();}
SCK.set();
Xns(70);
}
}
INT8U CSMISPI::SpiReadByte(void)
{
INT8U tempdata;
INT8U i;
for(i=0;i<8;i++)
{
SCK.clr();
Xns(50);
//OSTimeDly(OS_TICKS_PER_SEC/2);
if(SI.value()) {tempdata<<=1;tempdata|=0x01;}
else {tempdata<<=1;}
SCK.set();
Xns(70);
// Delay100ns();
//OSTimeDly(OS_TICKS_PER_SEC/2);
// _nop_();
}
return tempdata;
}
INT8U CSMISPI::SpiCheckSI(void)
{
if(SI.value()) return FALSE;
else return TRUE;
}
// #endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -