打印
[DSP]

spi读写EEPROM

[复制链接]
635|27
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
llljh|  楼主 | 2020-7-26 12:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

在用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);
}

使用特权

评论回复

相关帖子

沙发
houcs| | 2020-7-26 12:37 | 只看该作者
可能你读的地方压根就没有写数据

使用特权

评论回复
板凳
zyf部长| | 2020-7-26 12:43 | 只看该作者
先指定个地址写个数,然后再读回来,不就知道对不对了吗?

使用特权

评论回复
地板
llia| | 2020-7-26 12:46 | 只看该作者
你这个解决了吗 我也是想用这个存储和28335 spi连接 能提供给我你测试没问题的这些程序吗

使用特权

评论回复
5
chenho| | 2020-7-26 12:49 | 只看该作者
貌似读到的数据是右对齐的 所以不用做移动8位吧

使用特权

评论回复
6
happy_10| | 2020-7-26 12:54 | 只看该作者

说明可能擦除成功了   但是没有写入成功

使用特权

评论回复
7
chenho| | 2020-7-26 12:59 | 只看该作者
或者是擦除都没成功  片子是空的   

使用特权

评论回复
8
stly| | 2020-7-26 13:03 | 只看该作者

读写时序问题吗

使用特权

评论回复
9
zwll| | 2020-7-26 13:07 | 只看该作者
这个有可能是硬件的问题

使用特权

评论回复
10
llljh|  楼主 | 2020-7-26 13:13 | 只看该作者
有什么问题吗?

使用特权

评论回复
11
xxrs| | 2020-7-26 13:16 | 只看该作者
是自带的spi吗

使用特权

评论回复
12
chenho| | 2020-7-26 13:19 | 只看该作者
这个就是没有通

使用特权

评论回复
13
xxmmi| | 2020-7-26 13:22 | 只看该作者
EEPROM不是iic吗

使用特权

评论回复
14
hanwe| | 2020-7-26 13:28 | 只看该作者
推荐使用I2C写入和读取

使用特权

评论回复
15
huwr| | 2020-7-26 13:31 | 只看该作者
数据全是0xFF就是没有读到信号。

使用特权

评论回复
16
zhanglli| | 2020-7-26 13:34 | 只看该作者
你的硬件是怎么设计的

使用特权

评论回复
17
wenfen| | 2020-7-26 13:36 | 只看该作者
怎么不使用iic呢

使用特权

评论回复
18
xxrs| | 2020-7-26 13:42 | 只看该作者
电平信号没有变化的。

使用特权

评论回复
19
dingy| | 2020-7-26 13:46 | 只看该作者
是不是硬件没有调试通了呢

使用特权

评论回复
20
happy_10| | 2020-7-26 13:50 | 只看该作者
网上很多的EEPROM读写程序。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

855

主题

11301

帖子

6

粉丝