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

C6713 MCBSP 设置成SPI 主模式,读取从机数据的奇怪问题?

大牛们,希望不吝赐教

    我用C6713与一款FLASH芯片通信,设置MCBSP 为SPI主机,8BIT,MSB。

SPI写操作和读操作(读之前先写一个无效的数)都是没问题的。

    但是实际应用中,经常需要对slave的某个寄存器进行操作,例如,一个读

寄存器的指令:写地址,写控制字,然后才是读。就出现问题了!!!

例如 :

SPI_Send_Bytet(Reg_H);   //通过SPI写16位寄存器高8BIT地址

SPI_Send_Byte(Reg_L);    //通过SPI写16位寄存器低8BIT地址

SPI_Send_Byte(FDM2|RWB_READ|(s*0x20+0x08));//通过SPI写控制字节

SPI_Send_Byte(0);            //写无效字节
X_H= SPI_Read_Byte();  //读取16BIT寄存器的高8BIT

SPI_Send_Byte(0); //      写无效字节

X_L = SPI_Read_Byte(); //读取16BIT寄存器的低8BIT///////////////////////////////////////////////////////////////////////////////////////////////////////////////////

在整个指令的操作过程中有5组8BIT的 时钟序列。前3组对应主机写3个字节,后2组对应主机读2个字节

我用示波器观察,mcbsp的数据发送引脚,数据都是正常的。

但是mcbsp的数据接收引脚,在5组时钟内  理论上之后第4 、5组时钟对应的数据 是savle响应读操作产生的,

但是,我读到的数据 是这5组时钟内,mcbsp数据接收引脚上的 随机的 其中某2组。

请问,如果操作,可以保证,在类似这样的“需要先写再读的操作序列中”我可以取到 需要的数据呢?

Tony Tang:

在前面的3次写操作过都加入一个读接收寄存器的操作,确保接收寄存器被清除,这样是否可行?

赞(0)
未经允许不得转载:TI中文支持网 » C6713 MCBSP 设置成SPI 主模式,读取从机数据的奇怪问题?
分享到: 更多 (0)