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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • phpstrom 2021激活码 3月最新注册码

    phpstrom 2021激活码 3月最新注册码,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月14日
    38
  • eclipse集成Scala,运行Spark项目和<console>:1: error: ‘;’ expected but ‘.’ found. 报错「建议收藏」

    eclipse集成Scala,运行Spark项目和<console>:1: error: ‘;’ expected but ‘.’ found. 报错「建议收藏」eclipse集成Scala,运行Spark项目和<console>:1: error: ‘;’ expected but ‘.’ found. 报错

    2022年4月23日
    60
  • springboot的自动配置原理/步骤

    springboot的自动配置原理/步骤1、SpringBoot启动的时候加载主配置类(@SpringBootApplication),开启了自动配置功能@EnableAutoConfiguration。 2、@EnableAutoConfiguration作用:     利用AutoConfigurationImportSelector给容器中导入一些组件;可以查看selectImports()方法的内容; …

    2022年6月19日
    27
  • 利用 SSDP 协议生成 100 Gbps DDoS 流量的真相探秘「建议收藏」

    利用 SSDP 协议生成 100 Gbps DDoS 流量的真相探秘「建议收藏」原文地址https://www.4hou.com/technology/5979.html上个月我们分享过一些反射型DDoS攻击数据,SSDP攻击的平均大小是12Gbps,我们记录的最大的反射式DDoS攻击是:1.30Mpps(每秒数百万个数据包)2.80Gbps(每秒数十亿位)3.使用940k反射器的IP几天前,我们注意到了一个不寻常的SSDP超级放大情况的发生…

    2022年10月10日
    3
  • Android特效开发(仿zaker用手向上推动的效果(推动门效果))

    本文由manymore13原创,转载请标明出处 http://blog.csdn.net/manymore13/article/details/12219687     最近在商店下载了zaker ,闲暇时拿来看看新闻!发现每次打开软件进入主界面时有个界面,需要你把它往上滑到一定距离才能进入到主界面。每次进入软件时它的背景可能不一样,在往上拨的时候你会看见主界面,好似向上推的门一样!

    2022年3月10日
    32
  • Dubbo负载均衡策略之最小活跃策略

    Dubbo负载均衡策略之最小活跃策略今天我来学习一下Dubbo负载均衡之一的最小活跃策略-LeastActiveLoadBalance首先,让我们对负载均衡做一个简单的介绍。所谓集负载均衡,其含义就是指将负载(工作任务)进行平衡、分摊到多个操作单元上进行运行。负载均衡、集群容错、服务降级这三个概念在微服务中非常重要。从调用顺序来看,一次完整的RPC调用首先是负载均衡、其次是集群容错、最后是服务降级:负载均衡解决了选哪一个的问题、集群容错解决了换哪一个的问题、而服务降级则是解决了全错了怎么办的问题今天我们要学习的策略是最小活跃策略-Le

    2022年7月11日
    19

发表回复

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

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