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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10154|回复: 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,0 R+ M8 s) U, u6 a
input mcasp_ahclkx,& o8 Y( A4 X4 P  b
input mcasp_aclkx,
8 O4 |' B* ^' D; W6 r. Vinput axr0,
6 n- L- B( F5 F# \7 K7 h
. g. X7 k1 q$ \. R/ j, ^/ h2 R2 g* joutput mcasp_afsr,
$ D: j/ R/ U$ A  b' a/ ~* woutput mcasp_ahclkr,$ h, g1 O6 W% D4 j
output mcasp_aclkr,
, @8 ~; k" a' j7 @6 eoutput axr1,
' x3 y* k7 E  n
assign mcasp_afsr = mcasp_afsx;$ U9 A! s# q: }; q
assign mcasp_aclkr = mcasp_aclkx;. Y9 z: j6 k3 r# B& D; Y- H1 i
assign mcasp_ahclkr = mcasp_ahclkx;
% c/ d! L% f. O+ Iassign axr1 = axr0;
: x" M+ e' b+ J# k

, E5 t8 V7 a, n3 E( n
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

5 G* L1 _+ _$ O8 t
static void McASPI2SConfigure(void)/ ]; w4 P3 e1 h- p: y' I5 s  q# l' z
{
9 S; S2 W; O' e2 Z8 s& z8 DMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
5 {& b! a: E5 p1 {" R6 ~7 c+ aMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
9 O! |  [4 \9 ^6 e* M: y( e1 ~4 dMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);" T. D+ q+ b' K
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */5 H; {3 z" g+ R. V
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
1 v) ^' S  i" `; a! y$ iMCASP_RX_MODE_DMA);" u# H3 D% B: U: t2 a" z
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,6 h* U' `% H1 C7 G
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
" n1 y5 K% ^' J$ BMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
" C2 a$ ^" e) K& v, @7 y" ]: {- LMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
% h+ k8 [. |5 }( M5 z% e+ ?$ IMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, " G$ J$ a% r2 G  w  D( Z1 q* g
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
: e5 ~; E) ~6 ~: n& B  f0 g1 nMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
9 e0 t- I- U+ f; I) Y) ]0 y1 s6 \+ ]McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); . C3 F, k7 i% s6 m: f" E4 C
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
! p2 H/ q1 A9 B0x00, 0xFF);
/* configure the clock for transmitter */$ \2 Z  k& K) k. ]& @8 ]7 s/ O
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);4 G! ^; [& f. o: s2 N3 j1 u/ S* @
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
: B0 B6 K* E' J# H5 c/ MMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
+ Y6 r4 @4 d" u0x00, 0xFF);' J; ?/ X: Y3 a! w
0 E% c& x# C1 v% y6 I5 _( N& p
/* Enable synchronization of RX and TX sections */ + \# B$ K6 H! e; t
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
& k* p" ?( J1 Y$ LMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);1 ~' q* K' t7 Z: L: w
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
4 h& T5 V% u' _% J8 z3 m2 J* E1 S** Set the serializers, Currently only one serializer is set as& @9 O6 J( [; }- I1 N7 a
** transmitter and one serializer as receiver.
( ^9 @& x5 h" B- q9 H( W# d3 A*/
# n, ^6 x: n5 CMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
4 t( j# u7 I: e9 Q, A) MMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
5 Q  g! E! G* O1 H+ Z4 ]** Configure the McASP pins
/ ~; |! n0 i  D% R4 c. ~2 x, [9 T** Input - Frame Sync, Clock and Serializer Rx, H7 S5 }! w1 C9 x
** Output - Serializer Tx is connected to the input of the codec # J: X1 C$ u* t" [% g, G2 y  _
*/2 f/ ~. |5 ?- x
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);, g$ ^" ~3 Q( b7 I% ^
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
  c- x1 Y2 o+ d  ~9 pMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX9 u: C4 ]7 W+ q" V+ ?6 J, z
| MCASP_PIN_ACLKX
; b! z# |. Z' C- \| MCASP_PIN_AHCLKX$ r3 |! J9 `+ p
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
8 A- _+ x! A2 x9 a/ hMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR / H) f8 x4 i# r% |( z
| MCASP_TX_CLKFAIL
0 H8 u& C2 D9 {% [" i3 M6 K| MCASP_TX_SYNCERROR! u2 j' W/ R; L& A# R
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
  |- {- Z: m( r8 T| MCASP_RX_CLKFAIL
! w$ G' ~6 g, z7 e' ^| MCASP_RX_SYNCERROR + K. P3 j3 A$ p; a, p( Y
| MCASP_RX_OVERRUN);
: D3 Z% g0 I" d9 ]1 f- U2 [( g}
static void I2SDataTxRxActivate(void)
3 \, }( d+ q" h! M- g, L; x{
6 o2 w. }0 w3 n6 g/* Start the clocks */
- W0 q+ f! I! l( W4 c. P6 CMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);* S% y" w) y( ]8 I" C7 C6 ~
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */# v  v& J3 n2 f- F
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
& j0 Z4 _2 a# p) [; C* }EDMA3_TRIG_MODE_EVENT);  ?% e, S' ^4 [" N; D
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, / Z6 @$ W7 J& f. X; m
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
( ~1 {8 ?. ^1 s  Q) JMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);* Z9 q. R/ L9 n5 Q3 \% \9 c; k# k
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */8 `' }1 d+ @, t& ]
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
% w; F$ j; e: c" T& m6 ^6 mMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
1 B% \' I. S1 Z% k0 [+ e8 {& WMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);* X2 \' ~/ }$ h6 n& S  W
}
; \/ g$ a( ~. I- f
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
1 d+ E- W4 }; @' s0 F
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-30 09:57 , Processed in 0.044077 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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