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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8518|回复: 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,
* N! o7 x0 P1 s# n3 p9 b5 s/ rinput mcasp_ahclkx,1 v6 X! q8 _. ~) Y. Z% O9 H
input mcasp_aclkx,
" g0 s- k; F! j2 e1 Zinput axr0,
3 m' z8 M1 y1 S) `& K* V4 l; J7 g0 e0 \
% i6 n7 t) N" W6 E. Xoutput mcasp_afsr,# Q& O8 b; ~& N8 {. p1 u0 p
output mcasp_ahclkr,' b/ G% V4 M$ |; t& F4 V2 @
output mcasp_aclkr,
, E- ]% B; z* ]+ n- ^  Boutput axr1,
  W  M' Q7 X* C$ y2 e$ p" j( N
assign mcasp_afsr = mcasp_afsx;0 d  c" ~! }3 u( {6 x- D7 d; K* b
assign mcasp_aclkr = mcasp_aclkx;/ E/ _# _' L  K! Y: W( J! \; H8 @. G
assign mcasp_ahclkr = mcasp_ahclkx;* B- z& C/ ~% e3 y2 U
assign axr1 = axr0;
! S9 s7 W1 X/ m6 \5 F

) Q; G) T- D$ i' O. }
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

! i/ j3 t: ?! b( V0 l: Z9 c
static void McASPI2SConfigure(void)5 k; @( y9 N, W1 O6 B0 ^
{
' B- ?0 K6 ]; Z' S4 C4 o: jMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
8 _# P/ X9 W7 G+ f/ pMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
4 H1 e7 @5 ?4 q3 L) yMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
7 e4 t$ N& Z" A/ X% QMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */: K- U' h; V2 ~- \$ V( l( _
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
0 U2 l7 a' A2 b/ KMCASP_RX_MODE_DMA);
+ M; r7 k4 G+ u$ _* ZMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,/ S$ D. T2 z$ Q
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */$ |4 i) S! x. o
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 5 b3 H/ a# s# S, f( `
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);( H- O$ H) L0 H5 J
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
7 i- S  U/ C$ G4 u& _3 MMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */: b5 q! z/ T- O9 U9 g6 ~
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
' T+ `+ p' y& O4 PMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); , H8 A7 b. v$ W. i0 n4 r
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
$ X6 d6 k! T' I' h9 s0x00, 0xFF);
/* configure the clock for transmitter */
; m- x3 p6 O6 ]& zMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);: y. [2 S; K6 E7 [
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
  l9 e; s3 w( D6 i3 mMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
* T( _# X' o! c4 v; f0x00, 0xFF);
0 }  x7 Y1 j" [" z! Y7 m9 [7 k9 v# y1 s8 }. F
/* Enable synchronization of RX and TX sections */ # m$ A3 K/ }! j* w# r" a
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */" @' `! g/ |+ T2 X6 t) O- T8 I/ ]
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
6 D9 r, [* @: O' }! W3 A; u( I1 c' zMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
0 |0 C: n) |; f1 T+ l4 D** Set the serializers, Currently only one serializer is set as
, Z. a6 \' J) j0 R# k** transmitter and one serializer as receiver.. h- F& r2 I1 J8 Y" ?) q- q( k
*/( Y) |( A  {0 d# l5 ~
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
+ {; E1 B3 d# V$ ?McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*' b( Q5 A: I! z0 x
** Configure the McASP pins 6 p) o  N. P" K4 \4 i; c
** Input - Frame Sync, Clock and Serializer Rx  w8 O2 X' J/ U" j
** Output - Serializer Tx is connected to the input of the codec - V  f& T; K7 l' K' H
*/1 d; H# q: `# q
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
8 I5 {9 t# i, [4 T" ]McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));, G9 M. M5 J0 z! y: o
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX1 @! w) [, v6 Y  o* [
| MCASP_PIN_ACLKX3 H4 S; L  x) x# ]# T' r
| MCASP_PIN_AHCLKX: m5 d* Y: j  W; B
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
( b9 q" e1 O* j7 w' G6 cMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
; }' y1 i" x! E9 i| MCASP_TX_CLKFAIL
& r4 G8 j2 D$ q4 L1 \3 d) h( h0 m| MCASP_TX_SYNCERROR
1 V4 n* c: y6 z# z8 V' d| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
1 @# m% P) G' g- [9 X6 {| MCASP_RX_CLKFAIL
% h" s7 s: i: `  p' _6 d| MCASP_RX_SYNCERROR
( a) s: Y" b5 u2 S. b+ H: x% c| MCASP_RX_OVERRUN);
' s- s2 W9 m* W$ F6 L$ H! G}
static void I2SDataTxRxActivate(void)* u9 Y  V* U, f, i7 }
{* Q- ?; D$ p5 x
/* Start the clocks */: }; e* c) S; |! M
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
7 ]* Z* X7 C+ C* z, oMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
- o' m0 B- z3 P8 ?: m* OEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
8 ^- ?/ q# n& gEDMA3_TRIG_MODE_EVENT);3 {. O( h& O) c: ]/ \
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, ' c5 ]: n5 q( s  G4 s5 s- j0 E
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */6 ^! D! d& H, B' p8 V# ?
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
. Y& l, e) _7 D' Y( e. hMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
. t* m6 n3 @5 h" t1 S) L5 |while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */2 d4 V, y( Y4 y, H
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
0 H& u- |" B9 q8 Q! F) s- BMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);0 x: {; ~; [3 f  u  W
}

% D) Y8 @' X) _2 S  B7 U
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

; V( Y5 f" h) `; a3 ?. }: D6 R6 _
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-26 00:32 , Processed in 0.038905 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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