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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12085|回复: 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,
5 J+ ]! F: Y- G5 `  M  Ainput mcasp_ahclkx,
; C9 v; z% v8 v: G5 T; Dinput mcasp_aclkx,6 V, v, j7 `1 h. n( v
input axr0,
: v$ q3 P0 E& ~  z- u& p4 J$ E  h" c5 r
output mcasp_afsr,
  t9 q2 t* B1 s" U, z# goutput mcasp_ahclkr,$ @* V' O4 e, v' R
output mcasp_aclkr,
) l$ L- r4 m' ]' routput axr1,
+ ]' D+ |( M$ g0 x
assign mcasp_afsr = mcasp_afsx;3 u6 P5 Y5 t5 ^6 ]8 E
assign mcasp_aclkr = mcasp_aclkx;5 t3 X' g* H, _+ Q! J5 w
assign mcasp_ahclkr = mcasp_ahclkx;
) c% R! |" T* L0 }assign axr1 = axr0;

  i/ T, A. x# M; j; z+ g" a. N7 \
. M* r6 n0 ?0 `6 m& x
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
& a3 L8 _0 \& q5 x. R' V4 R
static void McASPI2SConfigure(void)
) x$ b8 R- N  `& z{
5 s" K9 M. {8 W; N% nMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
0 N5 y$ }) T7 BMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer *// N: `; e+ l. `7 r
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
; D$ h- v5 q0 X, @" bMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */4 H9 |* w/ U4 @+ e* O
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
2 P, y( x( }% o6 U# rMCASP_RX_MODE_DMA);
- k2 P9 e: l0 R  x0 c  zMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,9 ]+ o2 E+ J/ ~6 c& O% C0 V" g( w
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */" ~6 |; N6 U( L
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 9 J6 C' Q8 \* J3 p  n- O
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);9 X/ L) J( j8 ?: B) V3 _
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
' E# c# k, Q4 nMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */+ H& X$ g, z, ]( o
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
, v7 T6 h1 `! m% }& OMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
5 ]  _/ x. ~1 J2 @5 S3 e# _# fMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
) ~9 I. M5 i6 }1 T" g; ~) r( u0x00, 0xFF);
/* configure the clock for transmitter *// L- A& O% ?! F9 b+ T; D! Y
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);: H5 R) v% `  x$ c
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); & Q% r/ A& \- e% g" c
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
) J, t& _- I  s% @5 j0x00, 0xFF);- ~1 q% R' w1 p% P+ }
' T" A7 Z6 Y6 P& U, Z/ T6 G
/* Enable synchronization of RX and TX sections */ ; c$ U! c7 s" B" Z8 Y
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
# f' u. E" u' y+ p* sMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);! u" F5 j! z/ l+ v
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
6 ]: K! @! r' E+ Q** Set the serializers, Currently only one serializer is set as6 ^$ S" X% f4 [$ S4 E# V% w( k, p
** transmitter and one serializer as receiver.
- j4 P0 Q6 s+ b/ s*/
) ]. H( d! q, Y0 }1 J1 B3 F+ V5 ZMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);- w6 L, N7 t4 L% M! W
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*3 C/ P; |7 L) P6 d& R1 k) D
** Configure the McASP pins + F) \2 O4 _( s- s
** Input - Frame Sync, Clock and Serializer Rx
* `+ o" O4 |: q) l6 v8 g& q- p** Output - Serializer Tx is connected to the input of the codec
' _4 i( J$ f$ P! T1 V*/8 Q7 u9 k# u% A9 v. d' n; M
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);1 x1 j+ E: h9 Z0 u
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
8 K! |* [" v9 V, V$ AMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
7 ?- m% [! K' o6 p! \* C9 d| MCASP_PIN_ACLKX1 Q1 F4 U# y% F8 e
| MCASP_PIN_AHCLKX
: m2 \& D/ N# Z  O/ L4 v| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
$ `2 z' N2 y& D. l) U9 z  [4 tMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
1 V" G/ R' d! E+ ^2 i! t| MCASP_TX_CLKFAIL
! k3 k0 _) @- F& b* k! h| MCASP_TX_SYNCERROR$ R% ^& h9 f- C- }/ T5 X
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
) B; ~9 X+ O% `9 T! C0 J| MCASP_RX_CLKFAIL
3 m, J) C' S5 e5 H# |% u| MCASP_RX_SYNCERROR ) f+ j8 p7 t4 E
| MCASP_RX_OVERRUN);9 m) }2 l) A& |% |
}
static void I2SDataTxRxActivate(void). w& V$ w% |  o, `) z: w" J
{
0 T5 T6 G6 @' m# A0 _0 H. w/* Start the clocks */
7 K4 E: z+ ^% s7 S/ D* NMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);8 t  t& y3 J7 w% w* L' H" o  c) q. y& Y
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */8 {1 c( O  p' @$ l' m9 d
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
+ |) R! e! R8 M, P0 H. q' _EDMA3_TRIG_MODE_EVENT);
* {! x2 |% A: ~0 G5 P( ], ZEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, : n/ S6 V9 s( @% u# |9 n! I
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */2 Y) Z6 H+ p6 v! P- X1 Y6 F) ~
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
* T0 q( h1 ^  H! r4 OMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */8 X6 _$ ^8 D  Q/ P
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
7 Z+ d. F2 _2 t' T4 G( K7 VMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);. M' `9 t+ [  _1 `
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
6 ^  T- S* D( C5 ?}

7 w; _3 o7 r9 a/ E
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
! |/ C' F, T7 g- i0 D
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-27 16:31 , Processed in 0.039056 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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