dsp McBSP模块「建议收藏」

dsp McBSP模块「建议收藏」McBSP,是多通道缓冲串行接口。在DSP嵌入式系统中,常常用来连接音频编码解码芯片,串行AD/DA器件等。具有如下特性:全双工;两个数据缓冲寄存器;独立的发送和接收帧和时钟;多达129通道的发送和接收等等。McBSP结构图如下:首先对引脚进行介绍:CLKR:接收时钟CLKX:发送时钟CLKS:外部时钟源DR“:串行数据接收DX:串行数据发送

大家好,又见面了,我是你们的朋友全栈君。

McBSP,是多通道缓冲串行接口。在DSP嵌入式系统中,常常用来连接音频编码解码芯片,串行AD/DA器件等。具有如下特性:

全双工;

两个数据缓冲寄存器;

独立的发送和接收帧和时钟;

多达129通道的发送和接收等等。

McBSP结构图如下:

dsp McBSP模块「建议收藏」

首先对引脚进行介绍:

CLKR:接收时钟

CLKX:发送时钟

CLKS:外部时钟源

DR“:串行数据接收

DX:串行数据发送

FSR:接收同步帧

FSX:发送同步帧

注意到接收部分是三重缓冲,发送部分是两重缓冲。


接下来介绍它的相关寄存器:

DRR:数据接收寄存器,存放接收到的数据。

DXR:数据发送寄存器,存放将要发送的数据。

SPCR:串行接口控制寄存器,配置串行接口,包括状态控制字位,可得知工作状态,分为SPCR1和SPCR2,分别是收和发。

RCR:接收控制寄存器,设置接收操作的参数。

XCR:发送控制寄存器,设置发送操作的参数。

SRGR:设置波特率相关。

MCR:多通道控制寄存器,设置多通道选择模式。也是分收、发两个。

RCER:接收通道使能寄存器,分A/B区,使能奇偶组的16个通道可选。

XCER:发送通道使能寄存器,同上。

PCR:引脚控制寄存器,配置串口作用,和SPCR配合。


这里有必要弄懂什么是多通道?当初是纠结了很久。

这个多通道不是AD采样器那个多通道,而是类似于时分复用的数据流,强调时隙的概念。128个发送通道和128个接收通道,一帧数据最多128个通道,也即128个数据单元,一个通道可以移近或移出一个串行字。那么这一帧里面还分八个子帧,每个子帧16个通道,这样总共就是128个通道。这八个子帧还分两区,偶数为A区,奇数为B区。通过使能寄存器确定每个区16个通道哪些要使用。


关于编程架构:

1、首先创建结构体,配置:

MCBSP_Config myMCBSP = {

MCBSP_SPCR1_RMK(

),

MCBSP_SPCR2_RMK(

),

}

2、创建句柄并配置:

hMcbsp = MCBSP_open(MCBSP_PORT1,MCBSP_OPEN_RESET);

MCBSP_config(hMcbsp,&myMCBSP);

delay(); //注意寄存器配置完成后需要延时,以便内同步

注意它和EDMA一样,配置需要句柄。

3、各种使能:

MCBSP_enableSrgr(hMcbsp);

delay(); //内同步

MCBSP_enableRcv(hMcbsp);

MCBSP_enableXmt(hMcbsp);

..

有些资料是用另外一个函数搞定:

MCBSP_start(hMcbsp,MCBSP_RCV_START | MCBSP_XMIT_START,0);

4、收发的实现

MCBSP_read16(hMcbsp);

MCBSP_write16(hMcbsp,buff);

里面具体的代码就是对DRR或者DXR进行赋值和返回。

实际的收发有两种实现方法,一种是查询SPCR状态位,一种是中断,中断实时性高,建议使用。有对应的中断ID。

rcvEventID = MCBSP_getRcvEventId(hMcbsp);

再来个plug函数就能绑定中断程序。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/143589.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 遇到“word在试图打开文件时遇到错误”怎么办?

    遇到“word在试图打开文件时遇到错误”怎么办?1.打开文件遇到的错误提示“word在试图打开文件时遇到错误”2.关闭这个提示窗口,打开左上角的文件按钮。3.点击最下面的选项按钮,进入选项对话框,4.点击左侧的信任中心,然后选择右侧的信任中心设置。5.进入信任中心点击左侧的受保护试图选项卡,默认是三个选项都被选中。6.取消勾选第一个选项“为来自internet的文件启用受保护的试图”,点击确认后退出,然后重新打开文件,看看是不是有效果…

    2022年6月11日
    44
  • 访问远程MySQL数据库的方法

    访问远程MySQL数据库的方法

    2021年9月19日
    48
  • 使用批处理命令向win server AD域中批量添加用户实现

    使用批处理命令向win server AD域中批量添加用户实现因为要用个批处理命令在WindowsServer里面批量添加域用户,所以需要使用批处理命令。我这篇是纯新手教程,在百度上搜了一些批处理命令感觉属于进阶教程,研究了两天才完成我要完成的目标。下面从头说一下:批处理bat文档建立。直接新建一个TXT文档然后把后缀名改成.bat就可以了,就是一个bat文档,双击可以运行。注意:bat文件在哪,他的运行路径就在哪。添加成功的用户

    2022年5月13日
    48
  • 概率论机器学习的先验知识(上)

    概率论机器学习的先验知识(上)

    2022年1月2日
    56
  • Spring AOP入门使用详解

    Spring AOP入门使用详解AOP入门详解

    2022年6月17日
    30
  • cap理论P(分区容错)的理解

    cap理论P(分区容错)的理解一个分布式系统里面,节点组成的网络本来应该是连通的。然而可能因为一些故障,使得有些节点之间不连通了,整个网络就分成了几块区域。数据就散布在了这些不连通的区域中。这就叫分区。当你一个数据项只在一个节点中保存,那么分区出现后,和这个节点不连通的部分就访问不到这个数据了。这时分区就是无法容忍的。提高分区容忍性的办法就是一个数据项复制到多个节点上,那么出现分区之后,这一数据项就可能分布到各个区里。容忍性就提高了。然而,要把数据复制到多个节点,就会带来一致性的问题,就是多个节点上面的数据可能是不一致的。要保证一

    2022年7月25日
    11

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号