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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10889|回复: 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,
7 A' l& D5 Y6 o0 O) Y0 V* Iinput mcasp_ahclkx,
% p' O. l6 q; S# r5 D" g& W: qinput mcasp_aclkx,
- K5 p2 O! M3 [* h; l0 c2 Tinput axr0,. v/ d4 n- _9 q- ~& N0 Y. x# M

4 l% N! y- \1 k+ moutput mcasp_afsr,
$ }0 H5 F& u6 a8 _output mcasp_ahclkr,8 g# H: c  M7 Q8 E4 S
output mcasp_aclkr,
3 \/ v+ N9 Z$ Toutput axr1,8 o$ P0 c* G7 C7 w+ H% g: k
assign mcasp_afsr = mcasp_afsx;; l/ T8 u( F3 M6 e2 f% f5 j( w% W
assign mcasp_aclkr = mcasp_aclkx;3 j) _6 t3 s  m6 W
assign mcasp_ahclkr = mcasp_ahclkx;
6 H. H& U" V) y" H! g( }8 Zassign axr1 = axr0;

! V1 E0 L  w$ V7 y" T3 o, S
7 A+ v0 A- h; K. K
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

9 F8 x1 c9 o" l& S
static void McASPI2SConfigure(void)
- I$ H  p" D* ]% `# t{
6 Y+ a. |" M- t. c3 L9 `McASPRxReset(SOC_MCASP_0_CTRL_REGS);: o. L) W5 I# q" A* @- b) ~7 y$ ^  j3 o
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
7 t/ F% p% k; K% WMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);  u0 i* |/ V+ Z/ L/ G" g
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */9 n1 Z5 f1 T3 a7 n$ x$ R, o
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,1 d; e" {7 l; C) C. R# c+ \( o7 a
MCASP_RX_MODE_DMA);
. e$ w* G1 d) D1 `2 _' AMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
/ ^. o2 s$ D0 r( O/ c3 b6 m4 j4 D1 eMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */5 P. v0 k1 {, j& b7 w
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 0 E9 V. J4 E) G4 }6 r. `
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
0 L! s( @  F6 ]/ g, R* m1 X0 [7 @McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, + R3 Y, Q% s& k: e: F+ @
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
$ J( k2 ?6 L( f& aMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
4 N$ ^  B/ V! h6 cMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 8 F; F3 k# D+ p2 n' |6 S- Q+ s
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
7 Z' [$ `  J( T1 F7 W0 o2 P0x00, 0xFF);
/* configure the clock for transmitter */
2 o! G3 J/ T8 dMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);7 {7 }% {! U0 v' L5 C! [3 a
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
* `# ]6 T( W( L0 u; s" y; BMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,* @2 v6 i0 x' C  P- ?" t1 b/ G$ s
0x00, 0xFF);% }( j; q6 s# N
  ^( |( ^7 l7 F8 ~% o' \7 V
/* Enable synchronization of RX and TX sections */ & L+ D% Q/ y6 j6 k& b- `) ]9 s6 z
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */; x# `  R0 a1 l3 F( r. c
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
5 y5 \+ s' \9 t. [0 IMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
& N0 h& f* j2 Y** Set the serializers, Currently only one serializer is set as
9 z7 z( H( x; Q0 g$ o** transmitter and one serializer as receiver.
/ v) P' z1 A: K4 p/ p*/
/ e6 ~* v; ?. F; {1 Y8 FMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);( N" p7 a: j/ S6 b. ]
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*; I- ]$ v$ p) B& Z2 S" z
** Configure the McASP pins . X9 m/ o' ~, A$ w4 b8 D
** Input - Frame Sync, Clock and Serializer Rx3 L* F  v1 u- r' L
** Output - Serializer Tx is connected to the input of the codec ; n4 x7 a' W! q- f/ p* q, A
*/6 o# }" q2 H2 e' |. [, [
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
: w3 d/ E9 o6 P. mMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
7 b, g+ h6 w! s2 KMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
( w6 Z8 ]. W" ^| MCASP_PIN_ACLKX
8 G0 k. V- J/ t0 k, ], x% X| MCASP_PIN_AHCLKX
" b) z' D% a0 @0 d1 U# z: m/ W| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */+ Y  v4 T- w* a' c
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR 7 Q  M4 J) O4 n( q% \% l8 I
| MCASP_TX_CLKFAIL 7 L. p6 N0 A" |. ~6 p
| MCASP_TX_SYNCERROR. Q5 ~2 [$ w! ]# L+ ^2 ]
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
  {) A9 }3 T9 [% ~* r5 t7 S& \- s| MCASP_RX_CLKFAIL
5 ?- Z4 ?' {# ]& T/ u| MCASP_RX_SYNCERROR
5 G+ r, i+ V; ]" A0 E' R; c| MCASP_RX_OVERRUN);
+ y) L5 m6 i* `* w}
static void I2SDataTxRxActivate(void)
  T) i0 h/ @, b0 ]0 l{5 B6 H# O) m, z9 ^+ K/ i; y
/* Start the clocks */" w5 A$ ?& F- `1 o" C* I0 q. P0 p
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);% c0 E3 `4 S3 M/ y: I0 V5 G
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
6 n+ |; i6 ]( y9 HEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
& Y  Y7 ^- Z  ZEDMA3_TRIG_MODE_EVENT);( A# r5 g& H  u: B7 ~
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, ; Y$ G4 V2 H/ F- ^, N% V
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */7 F* X- }3 i, Y* n" F/ I
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
* @) I- ?7 @, {4 Y4 p2 LMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
. o5 h5 M/ C1 E' _2 _while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
% X( o9 l2 d" V9 G7 D  IMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);5 Q8 E" j( Y) E, F$ n' J
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);* L! M2 i. L8 U; ]4 G7 h
}

' o  f! X8 k$ S
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

- Z' G! C) w! c. g7 L
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-18 11:04 , Processed in 0.044917 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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