打印

求助,请大神帮忙看一下McBSP配置成SPI收发数据的程序

[复制链接]
1412|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
bushi27|  楼主 | 2013-12-11 11:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有关问题在程序后面的注释中,请大神解释详细点哦,本人小白一枚


//############################# SPI_XMIT_BYTE ################################
Uint16 spi_Rmit_byte()

    while (!MCBSP_xrdy(mhMcbsp)) {};

    MCBSP_write16(mhMcbsp,0xFFFF);      //这个写地址该怎么确定????

    while (!MCBSP_rrdy(mhMcbsp)) {}
    /* Read sample from and write back to handset codec */
    return (MCBSP_read16(mhMcbsp)<<8);                        //这个左移和下面的右移作用是什么?????
}

Uint16 spi_xmit_byte(Uint16 byte)
{
    while (!MCBSP_xrdy(mhMcbsp)) {};
    MCBSP_write16(mhMcbsp,byte>>8);
    while (!MCBSP_rrdy(mhMcbsp)) {};
    /* Read sample from and write back to handset codec */
    return (MCBSP_read16(mhMcbsp)<<8);               //为什么在发数据的时候还要读回????      
}







相关帖子

沙发
zhangmangui| | 2013-12-11 13:44 | 只看该作者
你用的是那个系列和型号
好像用CSL库  这个具体要看CSL库的使用手册
查看具体对应的函数   
SPI如果是双工的话   收发是同时进行的

使用特权

评论回复
板凳
bushi27|  楼主 | 2013-12-12 09:41 | 只看该作者
谢谢,,我用的是达芬奇系列的 TMS320DM642
CSL库中只定义了各参数的格式类型,没有更具体的介绍了,函数声明如下

/*----------------------------------------------------------------------------*/
IDEF Uint32 MCBSP_read(MCBSP_Handle hMcbsp) {
  return (*(volatile Uint32 *)(hMcbsp->drrAddr));
}
/*----------------------------------------------------------------------------*/
IDEF void MCBSP_write(MCBSP_Handle hMcbsp, Uint32 val) {
  (*(volatile Uint32 *)(hMcbsp->dxrAddr)) = val;
}
/*----------------------------------------------------------------------------*/
IDEF Uint32 MCBSP_xrdy(MCBSP_Handle hMcbsp) {
  return MCBSP_FGETH(hMcbsp,SPCR,XRDY);
}
/*----------------------------------------------------------------------------*/
IDEF Uint32 MCBSP_rrdy(MCBSP_Handle hMcbsp) {
  return MCBSP_FGETH(hMcbsp,SPCR,RRDY);
}

使用特权

评论回复
地板
wangdezhi| | 2013-12-12 23:26 | 只看该作者
如果是对速度没要求,可以使用模拟口写的。

使用特权

评论回复
5
wangdezhi| | 2013-12-12 23:27 | 只看该作者
这个可以根据例程来修改一下的。

使用特权

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

本版积分规则

1

主题

2

帖子

0

粉丝