MCASP自环配置。 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站
点击跳转“创龙科技服务通”

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12029|回复: 0
打印 上一主题 下一主题

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1215

积分

金牌会员

Rank: 6Rank: 6

积分
1215
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,
- q! g. n+ K) }5 G" N2 ginput mcasp_ahclkx,( H7 s5 _+ o; a/ w
input mcasp_aclkx,) O; U" ~' W8 G# N+ Y3 P& \! _
input axr0,
$ \! F; L: Z( g. d+ Y1 U$ x; E$ o8 o; _6 p4 k
output mcasp_afsr,
4 Y% J! r, V' k8 F: c: c$ b0 Z. }output mcasp_ahclkr," a- c6 s+ z: ?/ C0 r
output mcasp_aclkr,4 C' K- g; X% d+ C( }
output axr1,
2 _& j8 K2 R5 A0 X' L0 U
assign mcasp_afsr = mcasp_afsx;
# R/ e( d5 d' A* k6 d% nassign mcasp_aclkr = mcasp_aclkx;% r$ i& S& S$ C  m
assign mcasp_ahclkr = mcasp_ahclkx;
" Z1 [% [" L' v. j- u9 J2 Oassign axr1 = axr0;

0 D6 e+ t% B' P# M. m1 A; m
) r) G% D8 Z/ _4 @4 j! {& m$ X
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

$ k( C% k' I7 o  ]
static void McASPI2SConfigure(void)! T  G: y) T! F$ c- Q: M
{; }0 a& m# o1 B: ]/ }% ]4 H: m
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
5 p* _# ~+ m$ |* Y! q9 C) gMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */  D5 Q' \# s5 D/ V) K3 X1 L
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
9 V& ~5 Y4 `/ s4 l, k( QMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
% q. i- ]9 V' |( \$ `2 {% v, u2 L2 e6 FMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
7 B" e# k0 G) R/ ~* nMCASP_RX_MODE_DMA);+ u# E  @0 q& F! o1 X
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
0 V" v, c* W7 R8 gMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */8 P1 s" W7 Y: O' R# w% M
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, # A: W3 ?/ {6 Z7 [) M% r" h: M
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
; v$ `; b3 ~7 c; [9 M$ }+ ~McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, ; G5 \- s  t; z, v( O9 Q7 `* f
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */0 e' M' G. O5 h# o7 g# l
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
0 g2 f$ p  a5 Q8 mMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 8 d7 Q) I- c4 O8 b+ E- N# M# L6 `
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,% z, O( I6 x1 S" d6 |
0x00, 0xFF);
/* configure the clock for transmitter */$ t. p: {# {7 U9 c
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
- A! s. Q5 s9 @; `. N1 ]McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
5 v& `9 F+ s: f6 b$ _; e& HMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
4 Y. U) E: b7 T& K% ^; c0x00, 0xFF);9 {/ g9 i! {2 w) {# s6 [) u6 o

  j+ {" R2 ]/ l/* Enable synchronization of RX and TX sections */ " @) s( O1 ]4 J9 x/ ?) r8 `
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
, R4 u3 ?6 L0 IMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);9 R! I3 T: z; q) V! X. B( k1 T  H
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*8 E- H2 T% E* V" W0 c( l
** Set the serializers, Currently only one serializer is set as% V) P6 d8 o" D3 v% D. K$ \! U4 @* e4 U
** transmitter and one serializer as receiver.0 P4 i$ l; e9 [; Z; `# T
*/9 x% P0 h7 @* A% r3 N
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);1 X3 V* n' _" }  \! W$ O
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*  r8 s8 L& T: f
** Configure the McASP pins
* R* O( V, m( e** Input - Frame Sync, Clock and Serializer Rx' S- H" ^) o4 I7 i: d
** Output - Serializer Tx is connected to the input of the codec - X+ U: k5 x- O. b8 x
*/
' M; P8 O/ p" sMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);7 l2 A: }9 p/ X: I* ~) F+ w/ q- f  M5 Q
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
# Q0 y; m9 V$ k. F% \McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
; Q. {5 X. z+ |* x5 p, ]7 c| MCASP_PIN_ACLKX% n/ X* ~1 r# j
| MCASP_PIN_AHCLKX/ R. K: e- ~& K9 j
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
+ I. ]/ t$ L. J# D( CMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
2 V! c9 |# X0 y& q- \/ h" ?| MCASP_TX_CLKFAIL
- p- |) J. P- Z1 N7 w4 H( V| MCASP_TX_SYNCERROR% e# p' R- P1 @( R
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR 6 ]& m7 O4 C7 I
| MCASP_RX_CLKFAIL, P5 |$ V3 z- L$ i- \# s7 f
| MCASP_RX_SYNCERROR
. C! P4 M, o+ {: l) Q/ D| MCASP_RX_OVERRUN);1 B* g! w$ B; Z0 e7 M5 m
}
static void I2SDataTxRxActivate(void)7 G; n: Q: s& O% k
{
7 a+ @& ^# k8 Z$ o, m2 l) n5 V4 u/* Start the clocks */
/ T. r# m; A) _. |. i& v% P9 OMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
: t4 Z% z' e9 a& hMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */9 o- Q# v/ }4 W9 o  t8 ^
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
+ J3 x9 Y) A1 iEDMA3_TRIG_MODE_EVENT);! H4 d, d6 I6 _8 x
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
+ m; b. U" |9 C5 ]. OEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */$ R5 W" n  o  E* e8 h) L
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
. _- o  Y5 o/ |1 A& O/ CMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
3 F; x* e; n( I$ C$ cwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines *// C. ]5 m* g  L* b
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);9 @0 _4 Q5 D$ Y# _- g3 v- z
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
& e! k; }% f0 Z" T/ A  j}

% i& c5 F9 M! R1 X0 Z
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
0 O  [9 u6 E6 b5 W1 B0 `
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

点击跳转“创龙科技服务通”

QQ|手机版|小黑屋|嵌入式开发者社区 ( 粤ICP备15055271号

GMT+8, 2026-3-24 11:05 , Processed in 0.040854 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

快速回复 返回顶部 返回列表