首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

TMS320VC5509 Mcbsp SPI 主机模式出错

TMS320VC5509 Mcbsp SPI 主机模式出错

TMS320VC5509 Mcbsp SPI 主机模式出错此问题尚无答案





作者 Sam Hui发表于 2013-12-13 18:21



秀才10分

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位数据,但是有时不稳定,程序跑着跑着就跑飞了,这是为什么?








寄存器, 主机, 断点
返回列表