18464|6

4

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

用dsp28335的spi去读写EEPROM(FM25L256),读出的数据全是0xFF.. [复制链接]

在用28335的spi外设去读写EEPROM,无论是模拟SPI的CS还是用现成模块的,读出的数据全是0xFF,调了好几天了,请大虾们帮忙看看。。
#include "DSP2833x_Device.h"     // DSP281x Headerfile Include File
#include "DSP2833x_Examples.h"

//EEPROM的po-code定义
#define  WREN    0x06
#define  WRITE   0x02
#define  READ    0x03
#define  RDSR    0x05
#define          EEPROM_CS         GpioDataRegs.GPADAT.bit.GPIO19

//相关函数的声明
void spi_init(void);
void spi_xmit(int a);

//发送与结束的变量
Uint16 Ret_var1=0;
Uint16 Ret_var2=0;

/*****************************************SPI初始化函数********************************************************/
void spi_init(void)
{
                SpiaRegs.SPICCR.all=0x0007;  //SPI复位,设置时钟为上升沿,8位字符长度
        SpiaRegs.SPICTL.all=0x0006;  // 使能主模式,标准相位
                                     // 使能Talk,SPIINT屏蔽
        SpiaRegs.SPIBRR=0x00024;     //设置波特率
        SpiaRegs.SPICCR.all=0x0087;  //使SPI退出复位状态
                                     //使能自测试模式
        SpiaRegs.SPIPRI.bit.FREE = 1;       
}

/*****************************************EEPROM的写函数*******************************************************/
void EEPROM_WRITE(Uint16 address,int Data)
{
        int addrH,addrL;
        addrH = 0;
        addrL = 0;
        addrH = (address>>8);
        addrL = (address&0x00FF);
       
        EEPROM_CS = 0;
        DELAY_US(1);
        spi_xmit(WREN);     //写使能
       
        EEPROM_CS = 1;
        DELAY_US(1);
        EEPROM_CS = 0;
        DELAY_US(1);
        spi_xmit(WRITE);    //写入WRITE命令
        spi_xmit(addrH);    //写入高字节地址
        spi_xmit(addrL);    //写入低字节地址
        spi_xmit(Data);
       
        DELAY_US(1);
        EEPROM_CS = 1;
        DELAY_US(10);
}

/********************************************发送数据函数*******************************************/
void spi_xmit(int a)
{
        SpiaRegs.SPITXBUF = (a<<8);
        while(SpiaRegs.SPISTS.bit.INT_FLAG == 0);
        Ret_var1 = SpiaRegs.SPIRXBUF<<8;
}

/*******************************************读EEPROM函数*******************************************/
void EEPROM_READ(Uint16 address)
{
        int addrH,addrL;
        addrH = 0;
        addrL = 0;
        addrH = (address>>8);
        addrL = (address&0x00FF);
       
        EEPROM_CS = 0;
        DELAY_US(1);
        spi_xmit(READ);
        spi_xmit(addrH);
        spi_xmit(addrL);
        spi_xmit(0);
        DELAY_US(1);
        EEPROM_CS = 1;
    DELAY_US(100);
}

/**********************************************读取状态寄存器函数*************************************/
void STA_READ()
{
        EEPROM_CS = 0;
        DELAY_US(1);
        spi_xmit(RDSR);
        EEPROM_CS = 1;
        DELAY_US(100);
}
/************************************************主函数********************************************/
void main()
{
   InitSysCtrl();
   DINT;
   InitPieCtrl();
   IER=0x0000;
   IFR=0x0000;
   InitPieVectTable();
   InitSpiaGpio();
   spi_init();
   EEPROM_CS = 1;
   STA_READ();     
   EEPROM_WRITE(0,0xAAAA);
   DELAY_US(100);
   EEPROM_READ(0);
}

最新回复

打扰您一下,请问您dsp与存储器的程序通了么,能不能交流一下,qq1121938004  详情 回复 发表于 2017-8-29 23:12
点赞 关注(2)
 

回复
举报

21

帖子

1

TA的资源

一粒金砂(中级)

沙发
 
很简单。。。可能你读的地方压根就没有写数据。。。。
 
 

回复

221

帖子

2

TA的资源

一粒金砂(高级)

板凳
 
你先指定个地址写个数,然后再读回来,不就知道对不对了吗?
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

4
 
楼主,这个问题解决了没有啊?我也遇到了同样的问题。
 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

5
 
你好 你这个解决了吗 我也是想用这个存储和28335 spi连接 能提供给我你测试没问题的这些程序吗 谢谢 我的邮箱:dashuszhl055@126.com
 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

6
 
貌似读到的数据是右对齐的 所以不用做移动8位吧
 
 
 

回复

3

帖子

1

TA的资源

一粒金砂(初级)

7
 
闂傚倸鍊风粈渚€骞栭銈嗗仏妞ゆ劧绠戠壕鍧楁煕閹邦垼鍤嬮柤鏉挎健閺屾稑鈽夊▎鎰▏闁诲孩鑹鹃ˇ浼村Φ閸曨垰绠抽柛鈩冦仦婢规洜绱撻崒娆戝妽妞ゃ劌妫濋弫鍐閻樺灚娈惧┑掳鍊曢幊搴㈠劔闂備礁鐤囧銊х矆娴h鍙忛柕鍫濐槹閻撶喖鏌e鈧禍璺侯瀶閻戣姤鐓曢柡鍌濇硶缁犵粯銇勯姀锛勬噰妤犵偛顑夐弫鍌炴嚍閵夛妇褰ㄩ梺璇查閸樻粓宕戦幘缁樼厱闁归偊鍘奸崝銈嗙箾閸剚瀚�闂傚倸鍊峰ù鍥儍椤愶箑骞㈤柍杞扮劍椤斿嫮绱撻崒姘偓鍝ョ矙閸曨垰绠柨鐕傛嫹闂傚倸鍊烽懗鍫曞箠閹剧粯鍋ら柕濞炬櫆閸嬪鏌i幇顒佹儓闁绘帒鐏氶妵鍕箳閹搭垱鏁鹃柣搴㈢啲閹凤拷婵犵數濮烽弫鎼佸磻濞戔懞鍥敇閵忕姷顦悗鍏夊亾闁告洦鍋夐崺鐐烘⒑鐠恒劌娅愰柟鍑ゆ嫹
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
【回帖赢京东卡】说说无线技术那些事儿
即日起—2月28日,参与回帖讨论都有机会赢取【30元京东卡】

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表