yangmm11 发表于 2014-10-31 10:07

I2C实验中MCBSP的配置问题

在I2C实验的数字回音实验中,程序中启动MCBSP0的程序为:

/*初始化McBSP0*/
hMcbsp = MCBSP_open(MCBSP_PORT0,MCBSP_OPEN_RESET);
/*设置McBSP0*/
MCBSP_config(hMcbsp,&Mcbsp1Config);
/*启动McBSP0*/
MCBSP_start(hMcbsp,
MCBSP_RCV_START | MCBSP_XMIT_START,
0);

MCBSP_getConfig(hMcbsp,&Mcbsptest);

对于MCBPS_start这个API操作,手册中解释为:

Q1:程序中

#define MCBSP_RCV_START(1u)
#define MCBSP_XMIT_START(2u)

定义的MCBSP_RCV_START与MCBPD_XMIT_START的值,从手册中看出,对应的不应该是寄存器SPCR1中的域RRST=1及SPCR2中的域XRST=2吗?

但是运行MCBSP_start之后,寄存器中域值的变化情况为:

SPCR1中的RRST=1

SPCR2中的XRDY=1   XRST=1

这是为什么?

Q2:MCBSP_RCV_START | MCBSP_XMIT_START,:中或‘|’操作是什么意思?这与Q1中域值变化有何关系?


wangch_sh 发表于 2014-11-1 08:23

1.XRST只有1位,不可能等于2.
2.或操作应该是同时置1的操作。

yangmm11 发表于 2014-11-3 17:47

wangch_sh 发表于 2014-11-1 08:23 static/image/common/back.gif
1.XRST只有1位,不可能等于2.
2.或操作应该是同时置1的操作。

那这样的话,为什么#define MCBSP_XMIT_START(2u)
执行完MCBSP_start之后,SPCR2中的域XRDY与XRST都变成1了呢?

wangch_sh 发表于 2014-11-3 18:17

这个我也不明白。

yangmm11 发表于 2014-11-4 09:40

这是MCBSP_start的源码:
CSLBool MCBSP_start(MCBSP_Handle hMcbsp, Uint16 StartMask, Uint32

SampleRateDelay) {

/* compiler should not optimize delay loop under -o3 switch */

volatile Uint32 count = SampleRateDelay;

MCBSP_ASSERT_HANDLE(hMcbsp,return FALSE);

if (StartMask & MCBSP_SRGR_START) {

MCBSP_FSETH(hMcbsp,SPCR2,GRST,1);

while (count > 0) {

--count;

}

}

if (StartMask & MCBSP_RCV_START) {

MCBSP_FSETH(hMcbsp,SPCR1,RRST,1);

}

if (StartMask & MCBSP_XMIT_START) {

MCBSP_FSETH(hMcbsp,SPCR2,XRST,1);

}

if (StartMask & MCBSP_SRGR_FRAMESYNC) {

MCBSP_FSETH(hMcbsp,SPCR2,FRST,1);

}

return TRUE;

}

#endif /* MCBSP_SUPPORT */

但是我从源码中看出来SPCR1中RRST=1及SPCR2中XRST=1,但是还是看不出SPCR2中XRDY=1,希望哪位高手给解释一下吧。

yangmm11 发表于 2014-11-4 18:03

今天终于找到为什么了,自己分享一下吧。在MCBSP的手册中,提到了:
When the transmitter is taken out of reset (XRST = 1), it is in a transmitterready (XRDY = 1 in SPCR2) and transmitter empty (XEMPTY = 0) state.

zhangmangui 发表于 2014-11-4 22:07

yangmm11 发表于 2014-11-4 18:03 static/image/common/back.gif
今天终于找到为什么了,自己分享一下吧。在MCBSP的手册中,提到了:
When the transmitter is taken out of ...

感谢你的分享
页: [1]
查看完整版本: I2C实验中MCBSP的配置问题