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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1216

积分

金牌会员

Rank: 6Rank: 6

积分
1216
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,1 G3 V# p9 R; k- m
input mcasp_ahclkx,
- g* \6 B7 j- a; tinput mcasp_aclkx,
* o5 U/ }. j8 T+ q3 C- Sinput axr0,
% n$ q& e2 w& S7 }" V* t
  |; y1 P) Q8 Noutput mcasp_afsr,
8 Y8 k) j7 c8 y. _output mcasp_ahclkr,
# t! A! `* Q, Q! r1 m3 houtput mcasp_aclkr,% |- a9 k- Z1 X$ F$ ~
output axr1,
( h. n: S( l3 N% N& G, \; @- L4 n
assign mcasp_afsr = mcasp_afsx;
8 i2 M$ q$ @' B5 e* uassign mcasp_aclkr = mcasp_aclkx;
  K) w  `( p$ t: m' yassign mcasp_ahclkr = mcasp_ahclkx;
# b& j4 X7 f/ lassign axr1 = axr0;
9 h6 ~1 q- v* x
- K4 S2 L) y! e: Y
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
' W+ k' x& Y7 d0 B# P6 ~
static void McASPI2SConfigure(void)
7 ?; K" }* L; b6 A{3 X4 t6 f8 a) M
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
  K: o3 X! S) JMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */( _! T: G/ Z7 u6 O9 K9 ]
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
+ W  h: M7 C) T# z3 ?McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */( h, Y' Q& g% c
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,. I7 M& `9 T. R( E1 m1 U
MCASP_RX_MODE_DMA);, c; \" Q7 I. D! {
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,8 @: }9 ~3 g' y& s6 Q
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
: p7 D" u/ n  l5 P( d. a: CMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
" F% A: e$ j4 _7 w& qMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);* \# |- B( R# W
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, $ H+ X( Z6 q& c# B! D& c
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */1 s  h. a9 S7 J: p( O; I- r8 V
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
' s" c; |; {7 O/ W' ^; r+ nMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); ! D1 |" z* ?  u9 o4 J
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,- H/ M+ q3 r$ ~
0x00, 0xFF);
/* configure the clock for transmitter */
4 V5 s, O4 `2 L' Z5 n; ^) A6 _$ @1 OMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
' {! t5 r3 s8 m" R- Z0 D7 TMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
/ f2 U7 @! G0 sMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
: B+ ]4 U% c( m0 J: o0x00, 0xFF);
7 L3 [. Z8 X) V, F1 a( s
  L5 m+ r3 u; W+ f7 y, @/ W/* Enable synchronization of RX and TX sections */ ; c0 L1 k% L8 h0 M- a& a2 e
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
: J5 r* A' C- H2 Y3 NMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
9 K0 L) h! t/ u8 ~McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
4 B- p) D, C% q** Set the serializers, Currently only one serializer is set as/ {' j0 y" o/ B+ g/ F8 L
** transmitter and one serializer as receiver.
2 a0 `& q4 Y: _$ c*/2 T7 p! [* {6 `+ e3 k  \3 K. Y% H6 ]3 g
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);: u3 z1 c* v. c! F  ?3 D' v7 f% c
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
" S5 z9 V" a( P1 E: u** Configure the McASP pins % S4 C; x( z. L* e0 R8 \
** Input - Frame Sync, Clock and Serializer Rx
$ F3 @( c% w& l' I% C0 X** Output - Serializer Tx is connected to the input of the codec + L8 X) L9 K% i1 G5 M' k/ t
*/1 V3 j6 `! W. i" O
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
4 ~* j1 z) h. xMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));$ u) l% Y1 Y4 e8 ^( c
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX4 \7 `0 I" V9 k7 S8 w3 {
| MCASP_PIN_ACLKX, I' `/ G5 U8 ]+ B% l4 l
| MCASP_PIN_AHCLKX3 C0 E2 I; e9 Y5 G, w
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */  L+ L' D" i+ R/ r
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
& h3 ?4 c( C: d" x" a' v8 E| MCASP_TX_CLKFAIL
, F( Q' R) ]- r' f! [1 O5 l% Y$ l5 `/ P| MCASP_TX_SYNCERROR/ ~: k$ ?$ t9 f" p: p
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR 2 p/ X/ x) B; r) Q
| MCASP_RX_CLKFAIL
+ {, j+ j$ G' z* W% v2 S9 ^: c8 ^| MCASP_RX_SYNCERROR
  W! p6 K6 {' d  i/ Y& @! A2 e| MCASP_RX_OVERRUN);' `5 c& O  f8 p2 ~& d
}
static void I2SDataTxRxActivate(void)
; A& Q% q6 A! N& T0 r{
0 [% M4 q9 \) _7 ?) P/* Start the clocks */$ j4 z8 ?# s6 j) ?
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
- K0 j. P5 B+ _2 n+ f. YMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
% Y4 B, e0 y7 n+ N/ K' J2 T# S, [/ eEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,; h4 ]2 E5 Q, F3 Q- J. z- j5 S1 l
EDMA3_TRIG_MODE_EVENT);! ~: v6 t2 \5 L/ v
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
$ n* Q" e0 M& E- a+ w3 i- eEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
5 i" J4 B! C& W) i1 m6 \8 I! T! BMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
% d) H7 ~$ T' v6 o& k- R2 NMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
8 ^4 ?6 _0 P0 s. s" p2 f9 nwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */' g& J' ^* {4 q
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
7 M0 q9 x. I3 E; c. ]5 V: N" ?McASPTxEnable(SOC_MCASP_0_CTRL_REGS);1 y3 A6 a9 |3 r% ^
}

6 }9 ?, e, P# a& x- M, L0 R8 I% ?
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

# Y0 A4 b0 f) y0 s0 T0 `. A
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-9-6 02:47 , Processed in 0.048452 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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