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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10601|回复: 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 N; H; g' b4 b! W6 c
input mcasp_ahclkx,1 ]- G9 Z( T6 _: e; y$ \% \4 L0 s
input mcasp_aclkx,
- W% @, v, Q# `; |, q) D1 m5 i) Xinput axr0,
* b9 h4 v8 B% V! J& z/ m5 v$ l, U' U  `4 o: U2 n
output mcasp_afsr,( M! G7 _3 X! p6 U, y* Q! u
output mcasp_ahclkr,
/ a+ ~; N# T' ^* doutput mcasp_aclkr,
% w2 X0 e2 h! Y; C, ~7 Qoutput axr1,3 L7 }" X2 y: b; T, V
assign mcasp_afsr = mcasp_afsx;
( \( u) B$ s, A0 f& W" ^assign mcasp_aclkr = mcasp_aclkx;
/ L  P5 R* u3 N( s5 R4 Aassign mcasp_ahclkr = mcasp_ahclkx;% n: \+ ^$ f# X$ A+ m1 P. E
assign axr1 = axr0;
- T) ~& p  P0 J( a0 u- A" k
6 v1 g" a, `3 @/ g9 b; e# P2 \
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

! F% r' D  j' T+ a3 d  u
static void McASPI2SConfigure(void)
5 h5 R5 z( i. Z1 `/ d{( n8 y2 ]; J& R: g$ K
McASPRxReset(SOC_MCASP_0_CTRL_REGS);1 Y3 o3 z# D* s! R3 \
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */2 v, X2 S9 ]+ a6 O6 }+ }1 x
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
9 r; B+ @0 _* r+ c& aMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
3 d0 o: I. |7 ]6 X4 I) I1 XMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
$ }; j* [% O1 E& `4 \3 ZMCASP_RX_MODE_DMA);; t* E: f( `6 t# `
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
0 c; a2 x5 J, c! Z, kMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */( K2 d+ Y8 Q% t: w1 Z) e% V" {
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
; b6 D4 D! g+ f4 T( kMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);! z0 o# X8 Y# N6 g2 w
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 7 H! F& Z, D2 s% U; T
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
# z/ b9 s- a4 S" K3 y0 YMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
0 M! r7 x! g- _! VMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
$ E4 \) g+ B& `! u' r. xMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32," R) K9 N0 t# q  @* w
0x00, 0xFF);
/* configure the clock for transmitter */
) W4 O% O% ^6 M; uMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
3 v' p) Y; h. D. d) q- I4 mMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
3 O4 |$ d( W/ B2 v) P6 LMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
, [9 S! |7 E- K8 H" i0x00, 0xFF);, E3 j  |" n. I
" }. P1 _4 F( Y: c/ }# p% c
/* Enable synchronization of RX and TX sections */ 3 h# B& b' q' c/ _% D
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
7 W9 i) C/ d0 Q) h8 `McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
! d2 ~* ]4 ~3 U5 J9 l' u8 {' k% WMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*! g$ n2 _5 T% _$ F! ~* a; {
** Set the serializers, Currently only one serializer is set as
  J2 p  t6 v, J4 z9 H/ B7 k** transmitter and one serializer as receiver.
3 u1 Q9 G2 K; _*/3 M+ O6 [( H3 Z4 P7 L; y3 H5 ]7 _
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
& @9 e* }: ^. U% O8 R. MMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*: m8 e) U: s/ i9 j" P% [9 |
** Configure the McASP pins
1 W0 A7 Q2 S$ v' q. A# L  [** Input - Frame Sync, Clock and Serializer Rx/ x7 i0 [0 M4 L2 X! W
** Output - Serializer Tx is connected to the input of the codec + u9 K1 }( o3 h
*/1 ~: m6 N! M; u: L( ?
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);: n6 q" e0 ^6 d  v8 N" m- l8 U' ~
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));, N% d/ c+ y' j7 }: d! @
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX0 y, B6 s. R! a; I! t4 Q
| MCASP_PIN_ACLKX0 u( ?- Q0 G6 ?4 x! V
| MCASP_PIN_AHCLKX7 b3 x1 M( H& s4 I. \
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */5 Q/ x% q' g3 c( J) u2 C( [
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR # f1 K; A# A3 Y) {  i7 P6 ]" _! ~
| MCASP_TX_CLKFAIL 3 d' r( m  f+ R8 V
| MCASP_TX_SYNCERROR
) \/ [( s9 }+ f% }' L# P# O0 m8 N| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR , P# r; t& q$ q- b9 I1 ]2 C1 Q( L7 g
| MCASP_RX_CLKFAIL
# i- a: j* z8 U% A| MCASP_RX_SYNCERROR
: T; d- T- W5 V| MCASP_RX_OVERRUN);
& Q& C, X5 J* P' l: S- S! h}
static void I2SDataTxRxActivate(void)
# Z" O) |* k9 p$ v2 F7 K# r' x/ X{. x, n, W2 ?3 R4 d2 O6 K
/* Start the clocks */1 U9 P6 L$ i' o7 S9 t7 `
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);: R( F1 {; p- p
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */0 x- o9 U% ~' T* D/ O3 p
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
- z5 L( [* d/ u2 s7 Z" ], J# wEDMA3_TRIG_MODE_EVENT);
1 h& K, A) n' s3 ^EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
. H2 U0 f. k: M8 P* qEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */8 W) q2 X8 p) F! w, \& _& p
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);: U" z( E. Y0 ^; Z& s, y
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
6 l; D, q' N, J/ w0 b6 i) wwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
. a9 c' K* j0 [3 o' EMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);9 |* M- I. [% e7 t, ?
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
9 X% r, S# z% H. D9 F) ~6 N}

5 ~& l; n( k* p
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
+ x+ C6 |$ l1 N' ^; s% u
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-10 20:49 , Processed in 0.040837 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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