logo资料库

C64x DSP 音频接口 McASP 应用编程要点.doc

第1页 / 共5页
第2页 / 共5页
第3页 / 共5页
第4页 / 共5页
第5页 / 共5页
资料共5页,全文预览结束
[zz]C64x DSP 音频接口 McASP 应用编程要点 2007-04-19 17:13 McASP 应用编程总结(C64x DSP) (1)McASP 引脚 串行化引脚:AXR[n]的数据引脚,C6000 最多支持 8 个串行化 引脚,即 n = 0 ~ 7; 发送时钟生成器:① AHCLKX – 高频率发送主时钟;② ACLKX – 发送位时钟; (LRCLK); 发送帧同步产生器:AFSX – 发送帧同步或者左/右时钟 接收时钟生成器:① AHCLKR;② ACLKR; 接收帧同步产生器:AFSR; Mute 输入/输出:① AMUTEIN – 输入,从外部设备;② AMUTE – 输出;③ 数据引脚 AXR[n]; (2)时钟器 McASP 发送和接收时钟可以独立进行编程;时钟有三种驱动方 式:外部驱动,即通过输入到 ACLKR/X 引脚的外部时钟驱动;内部驱动,即对内 部时钟源 AUXCLK 分频后驱动;混合驱动,即外部高频时钟输入到 AHCLKX/R 引脚, 分频后作为 ACLKR/X 的驱动源; ACLKX 可以由外部时钟源进行驱动,也可以由 AHCLKX 分频后的 内部时钟驱动; AHCLKX 可以由外部时钟源驱动,也可以由内部时钟 AUXCLK 的 分频时钟进行驱动; ACLKR 可以由外部时钟源驱动,也可以由 AHCLKR 分频后的内部 时钟驱动; 驱动; AHCLKR 可以由外部时钟源驱动,也可以由 AUXCLK 的分频时钟 不同的驱动方式和传输触发方式由相应寄存器(ACLKXCTL、AHCLKXCTL、ACLKRCTL、 AHCLKRCTL)的不同位段进行配置; (3)帧同步器
帧同步有两种方式:burst 和 TDM。帧同步由 AFSRCTL 和 AFSXCTL 寄存器进行配置,主要可以配置的内容有: ① ② ③ ④ 内部驱动或者外部驱动; 上升沿或者下降沿触发帧同步; 帧同步的数据宽度:位或者字; 位延时:0,1,2 个位时钟; 帧同步引脚 AFSX 和 AFSR 在传输立体声数据时可以配置为左/右时钟(LRCLK)来 用; (4)串行化器 每个串行化器 n 都有一个对应的数据引脚 AXR[n]和一个对应的 控制寄存器 SRCTL[n]。 XRSR:移位寄存器; XRBUF:数据缓冲寄存器;
(5)格式化单元 格式化单元(传输字以及 word 在 slot 中的数据对齐、填充等) 位掩码和填充(掩码数据位,进行符号扩展); 循环右移(数据对齐字边界); 由三部分组成,涉及的寄存器是 R/XMASK 和 R/XFMT: ① 接收:RMASK、RPBIT、RPAD; 发送:XMASK、XPBIT、XPAD; ② 接收:RROT; 发送:XRROT; ③ 接收:RRVRS; 发送:XRVRS; (6)状态机 数据反转 (LSB 和 MSB 反转); ① 接收状态机:由 RFMT 寄存器控制,保存 McASP 状态和错误信息于 RSTAT 寄存器中;
② 发送状态机:由 XFMT 寄存器控制,保存 McASP 状态和错误信息于 XSTAT 寄存器中; (7) TDM 序列器 ① 接收 TDM 序列器:由 RTDM 寄存器控制,保存当前接收 slot 于 RSLOT 寄存器中; ② 发送 TDM 序列器:由 XTDM 寄存器控制,保存当前接收 slot 于 XSLOT 寄存器中; (8) 引脚功能控制 除了 AMUTEIN 引脚,所有的引脚均为双向引脚;双向引脚配置 PDSET:PDOUT 别名,PDSET[n] = 1 -> PDOUT[n] = 1(配置 PDSET[n] PDCLR:PDOUT 别名,PDSET[n] = 0 -> PDOUT[n] = 0 。。。; 如果涉及到外部时钟驱动,则需首先保证外部时钟的正常 设置 GBLCTL = 0,重置 McASP; 按序配置除了 GBLCTL 外的所有 McASP 寄存器: 电源和仿真器管理寄存器:PWRDEMU; PFUNC 寄存器:配置为 McASP 或 GPIO; PDIR 寄存器:配置为输入或输出; PDIN 寄存器:配置为数据输入引脚; PDOUT:当引脚配置为 GPIO 输出时,配置为数据输出引脚;当配 为 McASP 引脚或者 GPIO 引脚,由以下寄存器控制: ① ② ③ ④ 置为 McASP 引脚时,无用; ⑤ = 0 时无作用);只在引脚配置为 GPIO 输出时有效; ⑥ (9)发送/接收部件初始化 Ø 设置和工作; Ø Ø ① ② 接收寄存器:RMASK,RFMT,AFSRCTL,ACLKRCTL,AHCLKRCTL,RTDM,RINTCTL, RCLKCHK;如果 ACLKR、AHCLKR 使用了外部时钟源,则必须首先与 GBLCTL 寄存器 同步; ③ 发送寄存器:。。。; ④ 全局寄存器:PFUNC,PDIR,DITCTL,DLBCTL 和 AMUTE;PDIR 必须在时钟寄 存器和帧同步寄存器配置好之后才能配置; ⑤ DIT 模式寄存器:DITCSRA[n],DITCSRB[n],DITUDRA[n]和 DITUDRB[n]; Ø 略此步: ① 设置 GBLCTL. RHCLKRST 和 GBLCTL. XHCLKRST,重置内部高频时钟分频器; GBLCTL 的所有其它位必须为 0; ② 完成后读回 GBLCTL 相应字段,保证设置成功; Ø ① 设置 GBLCTL. RCLKRST 和 GBLCTL. XCLKRST,重置内部时钟分频器;GBLCTL 的所有其它位必须保持原来的状态; ② 完成后读回 GBLCTL 相应字段,保证设置成功; Ø ① 启动; ② 如果使用 EDMA 方式,则启动,即需要在 McASP 重置后还未运行前 如果使用 CPU 中断方式,则启用 McASP 发送/接收中断功能; 如果 AHCLKX 和 AHCLKR 由内部时钟驱动,则启动;否则忽 启动 ACLKX 和 ACLKR(如果它们由外部时钟驱动,则忽略): 配置数据传输方式:
③ Ø ① ② ③ 如果使用 CPU 轮询方式,则无需进行特别的配置; 激活串行化器 清空发送/接受状态寄存器:写 XSTAT 和 RSTAT FFFFh; 设置 GBLCTL.RSRCLR 和 GBLCTL.XSRCLR,准备启动串行化器; 回读确保成功;
分享到:
收藏