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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12167|回复: 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,6 x) o8 X5 t1 [; \" O. b( O. w
input mcasp_ahclkx,
8 H3 S8 w5 G" U% P' zinput mcasp_aclkx,  c/ a6 q- e0 K; k  ]* r
input axr0,
" b% m% o! K2 Z; V: O/ D
3 ^  q( ?1 ]6 a" G, @: youtput mcasp_afsr,
: H, H, J- r5 N* W7 W0 Qoutput mcasp_ahclkr,
" G! j7 F, B$ p* ^. u6 Eoutput mcasp_aclkr,
# \! U' N& L1 P7 |output axr1,
' }( G' B. n! Z- k: C
assign mcasp_afsr = mcasp_afsx;
. A. |5 `# a4 Xassign mcasp_aclkr = mcasp_aclkx;4 O) D2 a1 |2 W; c
assign mcasp_ahclkr = mcasp_ahclkx;5 ?5 }8 f( T+ V
assign axr1 = axr0;
& Z. Y3 E1 N$ x& w8 x
; x, _7 o  I" ]4 g  B& m/ `
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
2 r: T$ ^! B: f8 ~4 e* c( a
static void McASPI2SConfigure(void)
5 R7 k: f) \8 e3 \  V" B$ Z{/ Z6 S2 k3 G( e0 _' R, o
McASPRxReset(SOC_MCASP_0_CTRL_REGS);! y8 _8 Z' y$ i2 D
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */3 G" s0 _4 z/ E% C7 L/ \
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);8 Q& D& F8 |( R  N9 n
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */* q  s3 S& G) V8 i4 a
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
& @4 |& ^" m8 C$ y; d: j, oMCASP_RX_MODE_DMA);. V. N4 B" |+ I& B, @/ J
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,4 R2 [; l# N" D9 T2 X. \
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */& U! w& E, I4 {1 D; c& s
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
& R0 p$ Y3 T& f9 j0 v5 DMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);4 T8 Y; o8 Y( i$ @1 f: A1 z% G% m5 E
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
  Q6 [* R$ `9 t, ^5 K' nMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */# p  `- i$ i( j( f, H9 P1 N# U8 M
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
/ a8 t7 a1 T4 \2 ~- gMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
8 `3 V( P% p% e) t3 R4 TMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
5 T+ ~2 ?, r2 J. h! I7 B0x00, 0xFF);
/* configure the clock for transmitter */  q  o8 U* g7 y  O
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
6 S4 V8 P! m- ^6 o) ~McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
% \0 `$ w4 ]0 q5 q' e  M/ qMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,+ I9 M! e/ o- ^
0x00, 0xFF);! `$ k% }% a+ O* c( g* R9 G; d0 R
3 \- c# i, g1 s7 j
/* Enable synchronization of RX and TX sections */ 0 J7 @' N: g* h
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
  U+ w9 w. g) Y6 KMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
7 K8 X! o+ L$ V+ U5 x4 \6 Q; m- CMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*( ~' V% g4 H. u8 O0 [7 N
** Set the serializers, Currently only one serializer is set as
0 j8 m8 s) b6 t** transmitter and one serializer as receiver.( E/ n1 X( s7 l' D
*/7 h2 ~  O; F& h& {/ g8 y6 m' C  m* p4 `
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
( l. k+ P& l9 U" F5 _# i2 OMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
7 m' E) a  |# F** Configure the McASP pins
* V4 }8 }) L7 J* d& |/ Y4 \** Input - Frame Sync, Clock and Serializer Rx9 Z0 D& n, R1 |7 O, M6 q
** Output - Serializer Tx is connected to the input of the codec 5 Q( V* B/ A( \4 K- {; C
*/
$ a( g6 P+ q6 ^  D0 e' A1 aMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
' i: O* G2 K" o" Z; U$ F0 ^$ b) v# R7 u: Y2 kMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
1 h; d: L* m7 T" }5 ]1 ZMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
7 x4 M) u5 T. _2 L6 g| MCASP_PIN_ACLKX
$ X: c& [$ E" j8 ?" _1 F; V| MCASP_PIN_AHCLKX
+ L4 G- |, \. u: z0 y| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
+ L9 h4 k$ ]' f$ MMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
8 }& u# t* [$ C; G" M| MCASP_TX_CLKFAIL ) h2 \8 a, t. Q8 h
| MCASP_TX_SYNCERROR3 k0 I8 B, h* x/ M/ _1 M
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR ) f9 O5 r7 {. k% d) F
| MCASP_RX_CLKFAIL: A2 q% ^: w; ]( Y
| MCASP_RX_SYNCERROR * v; A; \9 H2 m' f' c* U
| MCASP_RX_OVERRUN);. {% W# r% [* W: Y: G" i
}
static void I2SDataTxRxActivate(void)  Q& l' [- r& g% {( S$ @5 T% y6 U$ U
{0 _% l1 x. l% |6 n; H; a: W4 W" {& a
/* Start the clocks */
* @+ `' S, z9 O7 }' C: `McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
, b2 ^  N0 p+ g1 V+ w. `# w/ TMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer *// }6 ^* R$ `" r3 E6 a! f
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
4 u+ i% s; M: m6 HEDMA3_TRIG_MODE_EVENT);  M, S# k9 `9 W! e' Y
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
) E  q  Y3 v+ x2 R/ n, _EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
" ~" A7 o; L+ }" q9 SMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);6 A/ q4 p. C$ z
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
: g0 \4 s- O2 Y. Ywhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */' c9 {2 u: B( X7 X3 X  ^
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
0 E" s7 F, x! _1 n; T: yMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);! E# \. W1 N8 q  R
}
6 O) f& ]" B" Z+ o+ m) F: \+ a  \7 M# _
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
: w; G4 e4 q" w3 B) m
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-31 01:05 , Processed in 0.044050 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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