TI中文支持网
TI专业的中文技术问题搜集分享网站

28335的spi使用问题

Ti工程师您好:

我需要使用spi对AT45db321进行操作,首先我想读取芯片ID,根据手册需要向芯片发送功能码9F,之后读取四字节的芯片信息,不过RXBUF中的值都是我发送的值。而且DSP的MISO引脚一直是高电平,我不明白DSP是怎么收到的这些数据。

SPI配置:

***=0x87;

***=0X06;

SPIBRR=0X7F;

SPIPRI.bit.FREE=1;

SPIFFTX=0XE040;

SPIFFRX=0X204F;

SPIFFCT=0;

程序大致是这样

send_byte(0x9f); // 发送功能码

temp1=get_byte(0xa5);

temp2=get_byte(0xa5);

temp3=get_byte(0xa5);

temp3=get_byte(0xa5);//我感觉应该是随便发数据,进而得到外设的ID信息

但是我收到的都是temp1temp2temp3temp4都是A5FF,而且dsp的MISO引脚一直是高电平,其他引脚像CLK引脚、MOSI引脚的脉冲都是对的,但是就是不呢个得到芯片ID信息,请大神们指点指点。

user4129436:上面的***配置是这样的
***=0X87;
***=0X06;
请大家不吝赐教,多谢

Ti工程师您好:

我需要使用spi对AT45db321进行操作,首先我想读取芯片ID,根据手册需要向芯片发送功能码9F,之后读取四字节的芯片信息,不过RXBUF中的值都是我发送的值。而且DSP的MISO引脚一直是高电平,我不明白DSP是怎么收到的这些数据。

SPI配置:

***=0x87;

***=0X06;

SPIBRR=0X7F;

SPIPRI.bit.FREE=1;

SPIFFTX=0XE040;

SPIFFRX=0X204F;

SPIFFCT=0;

程序大致是这样

send_byte(0x9f); // 发送功能码

temp1=get_byte(0xa5);

temp2=get_byte(0xa5);

temp3=get_byte(0xa5);

temp3=get_byte(0xa5);//我感觉应该是随便发数据,进而得到外设的ID信息

但是我收到的都是temp1temp2temp3temp4都是A5FF,而且dsp的MISO引脚一直是高电平,其他引脚像CLK引脚、MOSI引脚的脉冲都是对的,但是就是不呢个得到芯片ID信息,请大神们指点指点。

mangui zhang:是不是你设置为半双工了 啊也就是同时只能发送或接收
发送的数据在接收的buf中也存在了MISO应该是受AT45db321驱动的一直高电平说明芯片没有输出
确认一下SPI的最高时钟MCU的速率比较高

Ti工程师您好:

我需要使用spi对AT45db321进行操作,首先我想读取芯片ID,根据手册需要向芯片发送功能码9F,之后读取四字节的芯片信息,不过RXBUF中的值都是我发送的值。而且DSP的MISO引脚一直是高电平,我不明白DSP是怎么收到的这些数据。

SPI配置:

***=0x87;

***=0X06;

SPIBRR=0X7F;

SPIPRI.bit.FREE=1;

SPIFFTX=0XE040;

SPIFFRX=0X204F;

SPIFFCT=0;

程序大致是这样

send_byte(0x9f); // 发送功能码

temp1=get_byte(0xa5);

temp2=get_byte(0xa5);

temp3=get_byte(0xa5);

temp3=get_byte(0xa5);//我感觉应该是随便发数据,进而得到外设的ID信息

但是我收到的都是temp1temp2temp3temp4都是A5FF,而且dsp的MISO引脚一直是高电平,其他引脚像CLK引脚、MOSI引脚的脉冲都是对的,但是就是不呢个得到芯片ID信息,请大神们指点指点。

user4129436:

回复 mangui zhang:

您好,感谢您的回复,SPI不是串行移位吗?这个还分全双工和半双工?如果区分怎么设置为全双工?我在寄存器中没有找到配置成全双工的寄存器。期待您的回复,谢谢

赞(0)
未经允许不得转载:TI中文支持网 » 28335的spi使用问题
分享到: 更多 (0)