专栏中心

EEPW首页 > 专栏 > dsp写X25043--DSP的SPI对EEPROM接口

dsp写X25043--DSP的SPI对EEPROM接口

发布人:sdjntl 时间:2009-07-13 来源:工程师 发布文章
dsp写X25043--DSP的SPI对EEPROM接口
/*串行EEPROMMAX25045写使能命令*/
void WREN_X5045(void)   /*写使能*/
{
 SPIBUF=RSDR_X5045();
 while ((SPIBUF & 0x01) != 0){SPIBUF=RSDR_X5045();}/*等待内部写结束*/
 PFDATDIR=PFDATDIR | 0x08; /*取消写保护*/
 TIME(1);
 PFDATDIR=PFDATDIR & 0xFFFB; /*选择X5045*/
 SPICCR = 0x07;   /*复位上升沿,8位字符长度*/
 SPICTL = 0x0e;   /*有延时,主方式,禁止SPI中断*/
 SPIBRR = 0x13;   /*波特率为1.5MHz*/
 SPIPRI = 0x40;   /*低中断优先级*/
 SPICCR = 0x87;   /*进入工作状态*/
 SPITXBUF = 0X0600;  /*发送写使能命令*/
 while (SPISTS == 0){}
 SPIBUF=SPIRXBUF;
 SPISTS=0xFF;   /*清除标志位*/
 PFDATDIR=PFDATDIR | 0x0004; /*清除选择X5045*/
 TIME(1);   /*延时1US*/
}
void WRSR_X5045(unsigned int COM) /*写状态*/
{
 WREN_X5045();   /*写使能*/
 PFDATDIR=PFDATDIR & 0xFFFB; /*选择X5045*/
 SPICCR = 0x0F;   /*复位上升沿,15位字符长度*/
 SPICTL = 0x0e;   /*有延时,主方式,禁止SPI中断*/
 SPIBRR = 0x13;   /*波特率为1.5MHz0d*/
 SPIPRI = 0x40;   /*低中断优先级*/
 SPICCR = 0x8f;   /*进入工作状态*/
 SPITXBUF = COM | 0x0100; /*发送写状态命令*/
 while (SPISTS == 0){}
 SPIBUF=SPIRXBUF;
 SPISTS=0xFF;   /*清除标志位*/
 PFDATDIR=PFDATDIR | 0x0004; /*清除选择X5045*/
 PFDATDIR=PFDATDIR & 0xFFF7; /*写保护*/
}
 /*写EEPROM*//*RA_ADDR为RAM数据首地址,EEP_ADDR为EEP地址,N<4个数8位,H为8选择高地址*/
void WRITE_X5045(unsigned int * RA_ADDR,unsigned int EEP_ADDR,unsigned int N,unsigned int H)
{
 unsigned int I;
 SPIBUF=RSDR_X5045();
 while ((SPIBUF & 0x01) != 0){SPIBUF=RSDR_X5045();}/*等待内部写结束*/
 WREN_X5045();   /*写使能*/
 PFDATDIR=PFDATDIR & 0xFFFB; /*选择X5045*/
 SPICCR = 0x07;   /*复位上升沿,8位字符长度*/
 SPICTL = 0x0e;   /*有延时,主方式,禁止SPI中断*/
 SPIBRR = 0x13;   /*波特率为1.5MHz*/
 SPIPRI = 0x40;   /*低中断优先级*/
 SPICCR = 0x87;   /*进入工作状态*/
 SPIBUF=((H | 0x02) << 8);
 SPITXBUF = SPIBUF; /*发送写命令*/
 while (SPISTS == 0){}
 SPIBUF=SPIRXBUF;
 SPISTS=0xFF;   /*清除标志位*/
 SPITXBUF = (EEP_ADDR << 8); /*发送地址*/
 while (SPISTS == 0){}
 SPIBUF=SPIRXBUF;
 SPISTS=0xFF;   /*清除标志位*/
 for (I=0;I<N;I++)
 {
  SPITXBUF =( * (RA_ADDR+I) << 8); /*发送数据*/
  while (SPISTS == 0){}
  SPIBUF=SPIRXBUF;
  SPISTS=0xFF;   /*清除标志位*/
 }
 PFDATDIR=PFDATDIR | 0x0004; /*清除选择X5045*/
 PFDATDIR=PFDATDIR & 0xFFF7; /*写保护*/
}
 /*读EEPROM*//*RA_ADDR为RAM数据首地址,EEP_ADDR为EEP地址,N为字符个数8位,H为8选择高地址*/
void READ_X5045(unsigned int * RA_ADDR,unsigned int EEP_ADDR,unsigned int N,unsigned int H)
{
 unsigned int I;
 SPIBUF=RSDR_X5045();
 while ((SPIBUF & 0x01) != 0){SPIBUF=RSDR_X5045();}/*等待内部写结束*/
 PFDATDIR=PFDATDIR & 0xFFFB; /*选择X5045*/
 SPICCR = 0x07;   /*复位上升沿,8位字符长度*/
 SPICTL = 0x0e;   /*有延时,主方式,禁止SPI中断*/
 SPIBRR = 0x13;   /*波特率为1.0MHz*/
 SPIPRI = 0x40;   /*低中断优先级*/
 SPICCR = 0x87;   /*进入工作状态*/
 SPITXBUF = (H | 0x03) << 8; /*发送读命令*/
 while (SPISTS == 0){}
 SPIBUF=SPIRXBUF;
 SPISTS=0xFF;   /*清除标志位*/
 SPITXBUF = EEP_ADDR << 8; /*发送地址*/
 while (SPISTS == 0){}
 SPIBUF=SPIRXBUF;
 SPISTS=0xFF;   /*清除标志位*/
 for (I=0;I<N;I++)
 {
  SPITXBUF = 0;  /*发送伪数据*/
  while (SPISTS == 0){}
  *(RA_ADDR+I) = SPIRXBUF & 0xff;
  SPISTS=0xFF;  /*清除标志位*/
 }
 PFDATDIR=PFDATDIR | 0x0004; /*清除选择X5045*/
}
 /*读状态寄存器*/
unsigned int RSDR_X5045(void)
{
 TIME(1);
 PFDATDIR=PFDATDIR & 0xFFFB; /*选择X5045*/
 SPICCR = 0x07;   /*复位上升沿,8位字符长度*/
 SPICTL = 0x0e;   /*有延时,主方式,禁止SPI中断*/
 SPIBRR = 0x13;   /*波特率为1.0MHz*/
 SPIPRI = 0x40;   /*低中断优先级*/
 SPICCR = 0x87;   /*进入工作状态*/
 SPITXBUF =0x0500;  /*发送读命令*/
 while (SPISTS == 0){}
 SPIBUF=SPIRXBUF;
 SPISTS=0xFF;   /*清除标志位*/
 SPITXBUF = 0;   /*发送伪数据*/
 while (SPISTS == 0){}
 SPIBUF=SPIRXBUF;
 SPISTS=0xFF;   /*清除标志位*/
 PFDATDIR=PFDATDIR | 0x0004; /*清除选择X5045*/
 return SPIBUF;
}

专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们

关键词:

相关推荐

Lynx公司工具产品介绍

一季度非发达国家/地区智能手机市场速递

LPC2000系列ARM-CAN控制器驱动程序的使用指南

Logiscope介绍

资源下载 2007-02-28

多相电机的奇妙世界(1):从三相到多相的跨越

LPC2104芯片手册

基础教程:差分放大器以及相关设计软件的基础知识

视频 2012-06-18

CoolSiC™ MOSFET G2如何正确选型

码住这份指南:Edge AI与机器学习常用硬件类型与开发板全解析

智能计算 2025-06-26

M27128A数据手册

基础教程:运算放大器和专用放大器的应用和常识

视频 2012-06-18

基础教程:电压基准源产品

视频 2012-06-18

AI 时代,如何为消费电子设备的安全性保驾护航?

最新中国电子电路行业营收TOP 100

2025-06-26

基础教程:模拟开关和多路复用器基础知识

视频 2012-06-18

基础教程: 理解数据采样系统

视频 2012-06-18

选对运用软件的方法,使 AI 创新如虎添翼

智能计算 2025-06-26

三星接近与高通达成2纳米代工协议,随着晶圆代工业务复苏势头增强

EDA/PCB 2025-06-26

10 亿营收+千人团队!宇树科技在机器人赛道杀疯了

Arm 驱动下一代机器人创新浪潮

机器人 2025-06-26
更多 培训课堂
更多 焦点
更多 视频

技术专区