找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3645|回复: 1
打印 上一主题 下一主题
收起左侧

C8051F SPI接口读写c程序

[复制链接]
跳转到指定楼层
楼主
ID:321028 发表于 2018-5-3 10:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
C8051F SPI接口读写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;
}



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:420628 发表于 2021-9-25 16:48 | 只看该作者
这是通过硬件spi口,不是软件模拟spi,操作的吗
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表