⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 csmispi.cpp

📁 SST FALSH的读写(SPI模拟总线)(长期运行)
💻 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 + -