找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 3667|回復(fù): 1
收起左側(cè)

C8051F SPI接口讀寫(xiě)c程序

[復(fù)制鏈接]
ID:321028 發(fā)表于 2018-5-3 10:33 | 顯示全部樓層 |閱讀模式
C8051F SPI接口讀寫(xiě)c程序
#ifndef SPI_H
#define SPI_H
#define  WREN   0x06
#define  READ   0x03
#define  WRITE  0x02
#define  RDID   0x9F
#define  SNR    0xC3

void WriteSPI(uchar dat);
uchar ReadSPI(void);
uchar Read_Byte(ulong add);
void Write_Byte(ulong add,uchar dat);
void Write_String(ulong add,uchar *pStr,uint len);
void Read_String(ulong add,uchar *pStr,uint len);
#endif

//SPI.C程序

#include "C8051F120.h"
#include "main.h"
#include "spi.h"

void WriteSPI(uchar dat)
{
uchar SFR_PAGE_SAVE = SFRPAGE;
SFRPAGE = SPI0_PAGE;
SPIF = 0;
SPI0DAT = dat;
while(!SPIF);
SPIF = 0;
SFRPAGE = SFR_PAGE_SAVE;

}
uchar ReadSPI(void)
{
uchar dat=0;
uchar SFR_PAGE_SAVE = SFRPAGE;
SFRPAGE = SPI0_PAGE;

SPIF = 0;
SPI0DAT = dat;
while(!SPIF);
SPIF = 0;
dat = SPI0DAT;
SFRPAGE = SFR_PAGE_SAVE;
return dat;
}
void WriteEN(void)
{
CS = 0;
WriteSPI(WREN);
CS = 1;
}

uchar Read_Byte(ulong add)
{

  uchar dat = 0;
  uchar add2,add1,add0;
  CS = 0;
  add2 = (uchar)(add>>16);
  add1 = (uchar)(add>>8);
  add0 = (uchar) add;
  SFRPAGE =CONFIG_PAGE;

  WriteSPI(READ);

  WriteSPI(add2);
  WriteSPI(add1);
  WriteSPI(add0);

  dat = ReadSPI();
  SFRPAGE =CONFIG_PAGE;
  CS = 0;
  CS = 1;

  return dat;

}
void Write_Byte(ulong add,uchar dat)
{
  uint i;
  uchar add2,add1,add0;

  for(i=0;i<10;i++);
  add2 = (uchar)(add>>16);
  add1 = (uchar)(add>>8);
  add0 = (uchar) add;

  WriteEN();

  CS = 0;
  WriteSPI(WRITE);

  WriteSPI(add2);

  WriteSPI(add1);

  WriteSPI(add0);

  WriteSPI(dat);

  CS = 0;
  CS = 1;
  //CS = 1;
}



回復(fù)

使用道具 舉報(bào)

ID:420628 發(fā)表于 2021-9-25 16:48 | 顯示全部樓層
這是通過(guò)硬件spi口,不是軟件模擬spi,操作的嗎
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表