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