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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1214

积分

金牌会员

Rank: 6Rank: 6

积分
1214
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,6 l0 Y$ l) T, Z) H) r+ H
input mcasp_ahclkx,
, D, o4 m! G& C" j. f- _input mcasp_aclkx,1 ]. V: A  V8 c) ^% H0 D2 ~) M
input axr0,- T& Y) ~" e6 z# Z5 E0 |6 x

+ `5 s8 v7 [  r1 i9 E) Doutput mcasp_afsr,
( n& b, m  a2 H3 o3 _" A4 boutput mcasp_ahclkr,* r8 c2 S' C. ]
output mcasp_aclkr,
8 R5 P9 j9 T, E0 s( L9 ~output axr1,
6 M) p5 ^* V) ?
assign mcasp_afsr = mcasp_afsx;
  s+ r9 T7 Z8 }- T: oassign mcasp_aclkr = mcasp_aclkx;
! f  E3 l7 P6 |* A% j0 X6 oassign mcasp_ahclkr = mcasp_ahclkx;
( C* Q. ~& R. C$ L' ~2 Zassign axr1 = axr0;
+ Z1 I0 L$ P1 O
4 k" O: r3 v8 ^5 q7 @
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

; K3 O4 b5 r: y* _$ S, u
static void McASPI2SConfigure(void)
! V) u3 p& b' \$ E1 W' ~{
' S9 ^: f$ k5 m* H6 WMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
6 n- w2 P& m7 Z9 t7 _! @4 gMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
7 H. a! q* h- H; r* o5 x' S8 w1 ]McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/ `9 T* t- w- y# hMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
5 t* n5 T, W5 v& T7 IMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
6 M6 W! u* P, }- r+ R9 VMCASP_RX_MODE_DMA);+ B6 h& @! d- z: l7 K/ \
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
* B: o- y" T/ U6 a* q# z, FMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */: |+ ?: t2 q; {% g
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, ! h' N2 y8 v' [3 C% u
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);+ _, ^2 ?7 u# G; [- _: [/ ~2 |
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
2 o- U" n) f) f/ YMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */4 W( c9 ]& a0 D! \
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
: F4 k# w* b9 B# N5 L3 ]3 H6 WMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 4 I" |5 L2 i1 h
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,/ d8 j; c! P+ ~
0x00, 0xFF);
/* configure the clock for transmitter */
) b4 T6 C6 X' p) m; J+ h3 c  \McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);8 Q( E$ M0 P  C+ O( |
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); ) j$ s3 v2 O% A7 o, P5 _" C
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,/ i, K5 p6 j( D  b: Q' v- B
0x00, 0xFF);' U' C% |6 j! ?, \+ R+ D

% B! h& \) C- _# z. f+ z" c$ Y/* Enable synchronization of RX and TX sections */ ; ^" e, u! a& F0 j- h+ C% F' T
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */: j" r( k; D* f& `
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);' D& E0 u8 z4 K* K
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*9 Q5 f$ U- P- q
** Set the serializers, Currently only one serializer is set as% R: l- S! r" Q8 C7 C
** transmitter and one serializer as receiver.- k6 t2 p4 U- T$ X. ]( U4 F4 H/ U/ j
*/3 L" e5 `+ [9 u  ?. e3 b! r
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
" p1 r, P7 }7 N, q: TMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
0 @: N# r- _5 V** Configure the McASP pins   ?- T# \; Z9 j, J
** Input - Frame Sync, Clock and Serializer Rx2 Q* c3 ^2 a5 ?- e! M
** Output - Serializer Tx is connected to the input of the codec
: _) U- z7 |6 `( O. V$ _+ \/ X*/1 u0 N5 Q2 r/ C/ u2 t! o: V5 z0 h
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
, t$ r+ A/ g# \& y# j- Q) ^* P3 [McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
7 b& x1 l7 z& ~' G: ?+ B! ?5 P( D; `McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
1 {& [/ u; P7 _- b) i7 R| MCASP_PIN_ACLKX
/ X1 W" c4 N/ w| MCASP_PIN_AHCLKX
- u& N; J! Z! @$ M5 g% e| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
4 N& q* I, z- E8 B! I9 qMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR # J/ Y* ^" i5 J6 q1 @  n0 G
| MCASP_TX_CLKFAIL
# D0 u+ R/ z5 y7 V' || MCASP_TX_SYNCERROR
3 n8 r% R4 [- S! c" ]1 W5 R+ V| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
$ ^% x( ~, k0 l| MCASP_RX_CLKFAIL
% K0 ^6 G9 Y% V5 N8 F8 V0 p+ f| MCASP_RX_SYNCERROR + V: s/ @: J, w
| MCASP_RX_OVERRUN);
4 f, o" Q/ @2 l/ P6 q}
static void I2SDataTxRxActivate(void)+ b  P# Y/ _: e+ g8 i" P
{7 _8 w3 U+ N+ X! v
/* Start the clocks */
% a/ j* e1 X0 Q$ }" dMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
" }) X6 K6 o8 [7 f" yMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
2 J/ @8 u5 g; i6 R* Q5 KEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
5 E" p9 }' o& b$ T) g9 r1 }EDMA3_TRIG_MODE_EVENT);
/ Q* E0 ^% Y9 PEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
' W1 X4 _' @: t1 @" y  x& uEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
1 \8 n( f( [  Q- }7 XMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
6 Q/ k) x4 O- J* M1 l, ?McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */" D6 M! M: g- G) A( y+ Y
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
/ N2 k2 h5 r+ CMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
  g; P5 w( K7 K& R" D' ]McASPTxEnable(SOC_MCASP_0_CTRL_REGS);9 o7 S8 v3 X6 b2 b' H) K3 D
}

! |. C% R  R% q5 x
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

. U) k/ R' d) C
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-10 18:41 , Processed in 0.041184 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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