MCASP自环配置。 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1212

积分

金牌会员

Rank: 6Rank: 6

积分
1212
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,. `4 ~+ N0 U* j+ Q+ W
input mcasp_ahclkx,
( J0 \  Q9 e" }9 V" L  K  U) Cinput mcasp_aclkx,
4 L' N  G. H5 T* K' u  d. T  |2 Hinput axr0,: V6 F2 r# z( x
, D4 q- h9 d+ @0 [- |8 c
output mcasp_afsr,
& A  r7 ?; T/ e$ I# M  ?output mcasp_ahclkr,
7 C/ F/ [+ Q7 W% q. m! _* |output mcasp_aclkr,
' Y+ a" e" ?$ ?* Y& W6 foutput axr1,: ]5 @- \  |/ a. [! [* \
assign mcasp_afsr = mcasp_afsx;! n6 `' y0 ^# p# P9 C7 j7 M
assign mcasp_aclkr = mcasp_aclkx;
$ C, O/ b* c3 \: X# xassign mcasp_ahclkr = mcasp_ahclkx;) g: H! O* E1 x- G, j
assign axr1 = axr0;

3 q! }5 ^' g% n+ e8 X/ N1 d" S5 Q! T  I+ w9 C6 w( D! N. p  h
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

$ O) g* r5 \! r) z+ x* j3 b; H! ^
static void McASPI2SConfigure(void)
3 d3 L4 U; U# ?5 `{
3 o' ]) V' ^' C% d; i1 ]0 hMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
2 I6 t' I# ^$ l. ~( m& aMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */+ X! Z) c# t% r) S3 o) X) }
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
7 F1 q) g+ B6 YMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
' T0 {; G* f- m% ^2 X2 Q) @0 tMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,0 o# A2 D; H5 Q$ Z  |2 c
MCASP_RX_MODE_DMA);
  ?4 q# V- F+ u% n7 K: oMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,5 T% E) ~$ y6 @1 a( B
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
4 u4 ]1 O! n/ i, R. PMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
" t2 n: x" ?0 ]( ?' ^/ Q2 ZMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);, M$ }- a- }* c, i6 Z7 X
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
2 j: l% w$ a8 RMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
2 B) L9 A) t: i. HMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
/ I4 [9 T1 y7 t- W( zMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
( J$ U3 i. I( G( ]. G- H- NMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
7 e5 R! ?8 W8 Q" J0x00, 0xFF);
/* configure the clock for transmitter */0 B* F% A* ^# [4 ]3 s' T. j
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);6 o; |; {" |7 o4 Y/ Z
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
3 X1 |3 @9 a# m2 L5 C7 P" X3 E" vMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,0 j( I1 n1 T' N; ~5 b
0x00, 0xFF);! X7 p6 T* s' z+ L% T

3 K. ?& l, N6 d/* Enable synchronization of RX and TX sections */ : P7 a3 l/ d, d1 H& I8 T1 ?6 x
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
) R% m8 A  S& kMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
+ u+ q1 V! a4 q  M$ ~* D1 _McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
0 g  e4 Q! t0 B, [% L. L; e6 X  X** Set the serializers, Currently only one serializer is set as
- d5 j/ _0 T+ i& \** transmitter and one serializer as receiver." z1 \8 Q4 l9 d  n
*/7 @& T9 C) P( e# S" I7 a
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);% k  u- k: i/ D, M2 ^# h' H
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*5 D+ C% [- {7 i- q& n/ ]" ?
** Configure the McASP pins
1 S9 `8 A: b) F8 ~** Input - Frame Sync, Clock and Serializer Rx
# X6 l& d0 B6 t, T* Y3 I! u( B** Output - Serializer Tx is connected to the input of the codec
" q; g' e6 E$ J+ [3 J4 n0 e$ `*/
9 z# I  r  F- |7 ^/ MMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);: }0 c( a/ ?( f# z6 T7 b' y. }/ g
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));  o0 N7 `! y+ u! g1 ]2 y7 `$ y
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
/ Q" n7 _; G  ]- F| MCASP_PIN_ACLKX% Y7 S, B# h) b( r2 V, v
| MCASP_PIN_AHCLKX' Z% W/ V) a* k, f( n
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */- S, V- f) m5 c9 W9 H* }
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
6 K, p: a3 ^! V+ P+ J4 C| MCASP_TX_CLKFAIL 2 o" ?) r4 p4 E- @" ^# b' V
| MCASP_TX_SYNCERROR0 W) b# h4 V& k" k: E" _
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
( ~5 }# ]' e3 z( k, F| MCASP_RX_CLKFAIL+ D3 o/ K* }$ G8 h) K
| MCASP_RX_SYNCERROR 4 g- ]; C8 `- q, `- o/ X
| MCASP_RX_OVERRUN);2 Q& b. \8 Z1 }
}
static void I2SDataTxRxActivate(void)$ K8 H) [( ]* s. R( R0 F6 u, C
{& O2 o0 i, W; Z) S% ^' z& F
/* Start the clocks */8 ]' g1 P0 B8 K% h
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
$ q9 K! C0 ^* f8 J* rMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
  F: e" \5 Q7 L4 I% r+ UEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
3 R1 U1 t# a' V- UEDMA3_TRIG_MODE_EVENT);
3 e" W" d& N& F2 B* p6 P! KEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
( Z( @4 P8 G( m/ m7 z2 [5 s$ iEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
0 h. P8 B  ~6 n2 y5 x% C% n* [9 h1 f9 pMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);+ S% T; {- D3 X
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
5 o, }8 a& @, d% l# H& \8 E: |while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */0 C0 \+ Y9 c/ [" J
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);- ~: q0 s, R$ j% @4 \
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
# Y5 F. S% z3 }}
9 u" k  j; v$ s$ ]- Y/ F$ O
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
, r4 V$ `/ ~. v' Z9 s1 Y* L, J
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-10 05:25 , Processed in 0.037956 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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