打印
[DSP编程]

I2C实验中MCBSP的配置问题

[复制链接]
1019|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yangmm11|  楼主 | 2014-10-31 10:07 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
在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的操作。

使用特权

评论回复
评分
参与人数 1威望 +2 收起 理由
yangmm11 + 2 赞一个!
板凳
yangmm11|  楼主 | 2014-11-3 17:47 | 只看该作者
wangch_sh 发表于 2014-11-1 08:23
1.XRST只有1位,不可能等于2.
2.或操作应该是同时置1的操作。

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

使用特权

评论回复
地板
wangch_sh| | 2014-11-3 18:17 | 只看该作者
这个我也不明白。

使用特权

评论回复
5
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,希望哪位高手给解释一下吧。

使用特权

评论回复
6
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.

使用特权

评论回复
评分
参与人数 1威望 +4 收起 理由
zhangmangui + 4 很给力!
7
zhangmangui| | 2014-11-4 22:07 | 只看该作者
yangmm11 发表于 2014-11-4 18:03
今天终于找到为什么了,自己分享一下吧。在MCBSP的手册中,提到了:
When the transmitter is taken out of ...

感谢你的分享

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

67

帖子

0

粉丝