首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 维修教程知识 > 单片机栏
DSP的SPI口和串行EEPROM在变频器中的应用
来源:本站整理  作者:佚名  2009-05-07 14:36:14



  对EEPROM的读写是设计的重点,以下分别介绍:

  一、读操作

  a).从EEPROM存储器阵列中读数据时,/CS 首先被拉低以选择器件,向器件传送8位读READ指令(00000011B),接着是16位地址(高位在前)。在读操作码和地址送出后,存储位于在所选地址的存储器中的数据在SO线上被移出,继续提供时钟脉冲可接着读出存储在位于下一个地址的存储器中的数据。每移出一个字节地址自动增加至下一个更高的地址,在达到最高地址时,地址计数器返回到地址$0000,允许读周期无限期地继续。将/CS拉高可终止读操作。参见读EEPROM阵列时序图2。

图2 读EEPROM阵列时序图

  以下是读X5168子程序,其中RA_ADDR为存储读出数据的数组的首地址,EEP_ADDR为要读取数据在EEPROM阵列中的地址,N为要读取数据的个数

  void READ_X5168(unsigned int * RA_ADDR, unsigned int EEP_ADDR, unsigned int N)

  { unsigned int I,readspibuf1,readspibuf2;

  *SPIPC1&=0xBF; /*置低SPISTE引脚,从而选通X5168*/

  *SPIDAT=READ; /*发送X5168的写状态寄存器命令字*/

  while((*SPISTS&0x40)!=0x40){} /*等待SPI写结束*/

  readspibuf=*SPIBUF; /*读SPIBUF寄存器,清除SPI INT FLAG 位*/

  *SPIDAT=EEP_ADDR>>8; /*发送地址高八位*/

  while((*SPISTS&0x40)!=0x40){} /*等待SPI写结束*/

  readspibuf=*SPIBUF; /*读SPIBUF寄存器,清除SPI INT FLAG 位*/

  *SPIDAT=EEP_ADDR; /*发送地址低八位*/

  while((*SPISTS&0x40)!=0x40){} /*等待SPI写结束*/

  readspibuf=*SPIBUF; /*读SPIBUF寄存器,清除SPI INT FLAG 位*/

  for (I=0;I

  { *SPIDAT=0; /*发送伪数据*/

  while((*SPISTS&0x40)!=0x40){} /*等待SPI读/写结束*/

  readspibuf1=*SPIBUF; /*读取高位字节*/

  readspibuf1=readspibuf1<<8;

  *SPIDAT=0; /*发送伪数据*/

  while((*SPISTS&0x40)!=0x40){} /*等待SPI读/写结束*/

  readspibuf2=*SPIBUF; /*读取低位字节*/

  *(RA_ADDR+I)=readspibuf1+readspibuf2;

  }

  *SPIPC1|=0x40; /*置高SPISTE引脚,从而禁止X5168*/

  }

  b).读状态寄存器时,首先要拉低/CS 线,以选中器件,接着发送8位的RDSR指令(00000101B),在RDSR操作码发出以后,状态寄存器的内容在SO线上被移出。参见读状态寄存器时序图3。

上一页  [1] [2] [3] [4] [5]  下一页

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)

推荐阅读

图文阅读

热门阅读

Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:32,085.94000 毫秒