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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12237|回复: 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,0 l6 H) P+ B! e9 D3 {2 {: O
input mcasp_ahclkx,5 W4 w, g+ ]* @% X+ ~) @2 y
input mcasp_aclkx,/ C, R6 M6 b# n5 `) A
input axr0,
9 z* F8 c' W% J3 q% W- r( n. e
1 A0 K3 K6 H; Uoutput mcasp_afsr,4 C3 O% R) I; E6 X) _' m- e. ]; U
output mcasp_ahclkr,
" `7 _* r. b, z' I! G# }! coutput mcasp_aclkr," u: `/ o. f' \8 S: d+ o4 z
output axr1,
: O' B* S0 I) \5 c! ?
assign mcasp_afsr = mcasp_afsx;
1 ^: S: A9 i2 s( x8 Hassign mcasp_aclkr = mcasp_aclkx;
! c( F, y( E0 R9 B% Kassign mcasp_ahclkr = mcasp_ahclkx;
; T* _  V) V# a9 p' Massign axr1 = axr0;

. Z6 p( H5 R. [1 k+ r& n% F& G% `" R0 N6 T# ^4 j
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
+ o/ R8 |- B9 N. {7 K# C+ n3 R  N3 j
static void McASPI2SConfigure(void)
0 k* x, S) z$ M! q$ d3 Y% m{& V* W( t/ f9 _
McASPRxReset(SOC_MCASP_0_CTRL_REGS);- c  ]( l7 R0 @1 s: C! W
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */5 c& O  c: x' q
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
, L* X2 Z0 B  o0 N* sMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
7 j5 F) b: K0 l6 TMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
5 ^- G' Q. P+ c1 c0 r2 FMCASP_RX_MODE_DMA);; r+ M0 E; k5 z/ T
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
3 L5 A8 \0 E/ H6 O$ o+ kMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */# Z1 h. k7 S/ m% S7 v
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 7 e6 O$ D' g1 D7 N' ^7 N
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
/ w' v) V& S# ?* BMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 1 `. P1 q- j2 N7 S8 I, A# y
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */0 l& m. G/ F. x) i: e+ A
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);1 F5 R# M# e" ~2 p/ Y
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 9 J9 O- k+ K7 Z
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
6 g* G9 ]6 d$ H( H; P0x00, 0xFF);
/* configure the clock for transmitter */
% V, M1 j- g& m8 I- ~5 o0 vMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
- |' [3 p$ h; _0 v; |& BMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
( j  d& _2 o. j. i% h& r% I* n+ \McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,1 S$ Y8 C& n. h( G6 d+ M
0x00, 0xFF);) j0 r$ |# b9 X) r. k# j3 T) X+ e
8 r8 T: d! X, t8 d6 T* M/ y0 P
/* Enable synchronization of RX and TX sections */
) k) q/ f& n3 }, l& |8 EMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */5 [& w4 Y, ?' a$ J- w
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
' f  |/ j5 q' o+ R% YMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*. J6 f8 g* K% j: b. e
** Set the serializers, Currently only one serializer is set as2 K' r, W' c! p: Y+ Z3 |3 q
** transmitter and one serializer as receiver.
$ Y" [# X! I5 _! p6 j*/
8 H- ?$ f' y' [% P/ p: |McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);0 ~  M/ V8 U- T4 A1 C" J
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
6 o) P9 m9 t: C% F, H! N: Z# \, R** Configure the McASP pins ) }: U7 |$ M- N/ G* N& S2 _5 F
** Input - Frame Sync, Clock and Serializer Rx
" r8 ?- J" H) q% J** Output - Serializer Tx is connected to the input of the codec
  J+ T/ Q' b) F" z. K*/
! s! F. }% y4 q1 |+ Q- C7 ~4 V2 vMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);( c" C0 V; \5 y2 w9 A4 {+ Y( V" y
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));8 H4 b$ v6 g% x2 ]5 B
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
& ]& g3 R3 Y2 V" d| MCASP_PIN_ACLKX
1 u8 K* A3 {( b/ `% E1 _* L| MCASP_PIN_AHCLKX
. s) {: ~/ C6 Q6 y# B) M% @. K| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */* P7 D; `0 l+ h! Q
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR 0 n" u  Z7 Z3 k8 N8 S. z3 h
| MCASP_TX_CLKFAIL * X) j, c8 {+ f5 b. O
| MCASP_TX_SYNCERROR
$ X* A3 Q" h1 D+ w| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
  }, H* t* ^5 `' n6 K! [| MCASP_RX_CLKFAIL/ C3 j) R" E, u7 y
| MCASP_RX_SYNCERROR - e. a9 T+ Z$ w  ^8 t
| MCASP_RX_OVERRUN);" i: X# J7 c+ }$ k/ n  o  ]
}
static void I2SDataTxRxActivate(void)
) q( A# \9 {5 ^2 H{
$ K% X8 ], {% A- y+ e' r/* Start the clocks */, g3 }; N- ~$ F* |
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
' t; N. ?+ H0 m. ]3 V3 NMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */7 g) \& Q& g( X' [& G
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,- g/ D+ k9 Q: M7 t6 w
EDMA3_TRIG_MODE_EVENT);
' m! A) u! @  ^) X- KEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
: |' U7 K3 t& JEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */: j6 s# B3 g" c2 m& v$ i
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);7 z7 J* ]& C& e- L! p9 s) V
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */8 D; n4 J( l! r
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
* T1 s/ w8 ^: X$ A/ ], eMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
# u5 |+ E1 r) v( Y) AMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);" c; b) @- n4 k. |& j9 B8 x
}

( K  Z# s0 J+ w. ~8 k6 M( L  L* T
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

/ K) v( o1 U7 r, S
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-4-2 13:29 , Processed in 0.063489 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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