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

TMS320VC5509 Mcbsp SPI 主机模式出错

TMS320VC5509 Mcbsp SPI 主机模式出错,请大神帮助,谢谢!

SPI的各寄存器已经宏定义,Nopi()为i个Nop;

初始化过程如下:

void SPI_init()
{

SPCR10 = 0x1800;  //CLKSTP=11,时钟停止模式,半时钟周期延时
Nopi(6);
SPCR20 = 0x0200;  //FREE=1,断点处理方式
Nopi(6);
PCR0 = 0x0A0D;   //FSXM=1,发送帧同步由Mcbsp提供;CLKXM=1,输出时钟信号; FSXP=1,FSRP=1,CLKXP=0,CLKRP=1
Nopi(6);
RCR10 = 0x0040; //接收16位数据
Nopi(6);
RCR20 = 0x0001; //FSX一周期延时
Nopi(6);
XCR10 = 0x0040; //接收16位数据
Nopi(6);
XCR20 = 0x0001; //FSX一周期延时
Nopi(6);
SRGR10 = 0x0127;//40分频,分频后CLKX=1Mhz
Nopi(6);
SRGR20 = 0x2000;   //0X300F
Nopi(6);
SPCR20 |= 0x0040; //采样率发生器复位
Nopi(200);
SPCR20 |= 0x0001; //发送器复位
Nopi(200);
SPCR10 |= 0x0001; //接收器复位
Nopi(200);

}

Mcbsp的SPI作为主模式。发送16位数据,接收16位数据。接收到的数据低8位正确,高8位出错,是寄存器的设置不正确吗?

我用的成套的开发板,开发板上的FSR与FSX外接,CLKX与CLKR外接,这会影响SPI通信吗?(我在PCR中设的clkxp=0、clkrp=1)

另外,在上面的基础上我做了部分修改,将SRGR20 = 0x2000改为0X300F,即发送帧同步模式FSGM=1,设置FPER(11~0)=0000 0000 0000 1111;

改完之后可以正确读取16位数据,但是有时不稳定,程序跑着跑着就跑飞了,这是为什么?

Shine:

你好,

发送16位数据正确吗? 还是只是接收的时候不正确?

高8位出错有规律吗? 是数据错位吗? 用示波器抓过时序吗?

SPI模式下, FSGM要设成0.

赞(0)
未经允许不得转载:TI中文支持网 » TMS320VC5509 Mcbsp SPI 主机模式出错
分享到: 更多 (0)