积分规则 网站地图 帮助中心    
嵌入式软件 单 片 机 DSP 存储器 传感控制 光电显示
嵌入式硬件 CPLD/FPGA SOPC AD/DA 接口电路 模拟设计
I C设计 通信产品 汽车电子 电源产品 消费电子 数控系统
工业控制 军工/航天 安防产品 医疗电子 计算机外设 测试测量
供应 I C
求购 公司库

  IC 求购 销售 公司 论文 DATASHEET 参考设计 论坛
当前位置: 电子技术 >> DSP >> DSP代码示例
  相关分类: 应用论文 | TI DSP | 新产品 | 算法 | 下载 | DSP代码示例 | ADI DSP | freescale DSP |
DSP的SPI对eeprom的接口函数
 
作者:未知   来源:互联网    点击数:1054   更新时间:2007-2-7
您可以添加到网摘 让更多人关注此文章:

     /*串行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;
}

相关文章
· 科技奥运与计算机技术的应用[425]
· Electromedical[2693]
· 患者监控[2742]
· 基于TMS320LF2407A DSP的心电监护系统研究[3187]
· 用S3C2410实现三导联远程心电监护系统[3096]
热门评论排行
·VHDL设计中电路简化问题的
·ARM嵌入式系统基础教程(N
·江苏嵌入式Linux教育培训
·ARM处理器应用开发4步骤
·锐极LINUX驱动培训班定于

文章评论
    没有任何评论
*只显示最新10条评论。评论内容只代表网友观点,与本站立场无关。更多评论
发表评论
  * 请先[登陆]再进行评论,谢谢。
评分: 1分 2分 3分 4分 5分
内容: *
发帖须知:
一.所发文章必须遵守《互联网电子公告服务管理规定》;
二.严禁发布供求代理信息,公司介绍,产品信息等广告宣传信息;
三.严禁恶意重复发帖;
四.严禁对个人,实体,民族,国家等进行漫骂,污蔑,诽谤。
 
热点新闻 [更多]
 
严冬期如何发展半导体业 扩
2008年中国集成电路市场回顾与展望
分析师:亚洲芯片厂商库存远超预期
2008年基础电子业十大事件点评
Aptina并购智多微手机软件平台设
凌力尔特公司推出用于多核处理器的&n
安森美半导体任命麦满权为韩国及南亚区
Broadcom:半导体产业依然机会
飞思卡尔推i.MX51芯 
日立芯片守卫新年倒数计时晚会
 
热门下载 [更多]
 
[ PCB设计] Protel99教程下载
[ ] 手把手学单片机20个例
[ ] 单片机做的智能台灯
[ ] 单片机入门书
[ ] linux系统移植开发文档
[ ] IC卡的读写程序
[ ] 8051单片机C语言彻底应用
[ 常用软件] 555定时器电路设计软件V1.2
[ 常用软件] 51定时器计算软件
[ ] ARM处理器应用开发4步骤
 
论坛新帖 [更多]
 
低价专业PCB打样 双面板20...
深圳市天漠科技超低价供应atm...
深圳市天漠科技超低价供应ARM...
[推荐]2.5米精度,高灵敏度...
830实验箱+电脑没有并口...
[原创]平望科技助力自服终端国...
低价专业PCB打样 双面板20...
[原创]低价专业PCB打样 双...
Bootloader for ...
【有奖调查】08-09嵌入式开...

 
赞助商 [更多]
 

ICP许可证号:[粤 05056597]
联系电话:010-82517432 82517615 传真: 010-82517615

版权所有 Copyright © 2006 嵌入式技术网