x5045_spi.c

来自「最近一个项目要用到C8051F340与x5045通信」· C语言 代码 · 共 96 行

C
96
字号
void Port_IO_Init()
{

    P0MDOUT   = 0x10;
    P1MDOUT   = 0x90;//0x8F;
    P2MDOUT   = 0x28;
    P3MDOUT   = 0x0F;

    P0SKIP    = 0xCF;
    P1SKIP    = 0xB8;//0xBF;
    P2SKIP    = 0x07;
    P3SKIP    = 0x0F;

    XBR0      = 0x03; 
    XBR1      = 0xC1;
    XBR2      = 0x01;

void SPI_Init()
{
   SPI0CFG   = 0x60; // Master Mode/ SCK is low in Idle/ Data on 2rd Edge of SCK
   SPI0CN    = 0x01; // Enable SPIO/3Wire
   SPI0CKR   = 0x6d;// 45k // 0x6D; // SPI CLOCK: 100KHz
}

void SPI_SendByte(uint8 dat)
{
   SPIF = 0;
   SPI0DAT = dat;
   while(SPIF == 0);
}

uint8 SPI_GetByte(void)
{
   SPIF=0;
   SPI0DAT=0x00;  //  随便发送一个数据以产生读时钟
   while(!SPIF);    
   return SPI0DAT ;
}

 

uint8 X5045_Read_Reg()
{ 
 uint8 idata u8_Data; 

 X5045_CS = 0; 
 nop();


 SPI_SendByte(RDSR);     // 发送读寄存器指令
 u8_Data = SPI_GetByte(); 
 
 X5045_CS = 1;
 nop();
  
 return  u8_Data; 
}

unsigned char X5045_WaitFree()
{
 unsigned char idata i;
 
 for(i=0;i<255;i++)
 {
  CLEAR_WD;
  if((X5045_Read_Reg()&0x01)==0)
   return 1;
 }
 
 return 0; 
}

uint8 X5045_Write_Reg(uint8 u8_RegData)
{
 

 X5045_WaitFree(); //  等待写完毕
 X5045_WREN();//写使能
 
 X5045_CS = 0;
 nop();

 SPI_SendByte(WRSR);     // 发送写寄存器指令
 SPI_SendByte(u8_RegData);   // 发送寄存器的设置值
 X5045_CS = 1;
 nop();

 
 X5045_WaitFree(); ://等待写完成

 X5045_WRDI();// 关闭写使能
  
    return 1;

}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?