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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 11473|回复: 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,
4 b' A3 h$ v2 a9 Ginput mcasp_ahclkx," d% `( `6 ^- r% k* W! J5 o
input mcasp_aclkx,$ |  f& y, M0 s0 E$ ?  A
input axr0,
' E" l8 E& T5 @& n
1 w4 L* M$ z' ~0 [% ^output mcasp_afsr,4 i7 ^' W9 O9 N+ z( j
output mcasp_ahclkr,9 D$ O( [! F: q. [1 ~' |! r
output mcasp_aclkr,3 W& X3 H! {, d* X
output axr1,$ t" m6 ^* u- X
assign mcasp_afsr = mcasp_afsx;' n3 m: E, Q. \9 b
assign mcasp_aclkr = mcasp_aclkx;
4 _6 X- i' _7 h6 Uassign mcasp_ahclkr = mcasp_ahclkx;+ P! E0 h/ a  j+ G; @  @
assign axr1 = axr0;

* r( Q; ^1 J( E/ F" Q
- N: C! D3 g; D% }; `0 E
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
8 K, `2 R7 x+ c
static void McASPI2SConfigure(void)
* O8 `- a2 e4 d  L5 ?{1 l6 I4 e: a) h3 i3 N) }
McASPRxReset(SOC_MCASP_0_CTRL_REGS);, N6 I1 B2 h0 ~, Y: v1 d; j9 r
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
1 k) Y4 R8 Q: k7 s- IMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
2 T3 y, W6 ~0 s' P4 N2 A2 rMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
7 T4 o2 L( F) z& v9 }. ~' X! IMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,4 H0 v: |0 X- ~6 g; P; t0 R
MCASP_RX_MODE_DMA);2 N) _: ~! r4 O( K
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
  e% ^4 p  y4 k( S2 K+ |MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
: M4 y# }, K9 v$ s; @! w* ?McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
' M6 U. }: _' x( `! H$ G+ LMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
# w; T9 [) [" X; M! |7 M3 b+ Y! K( fMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, / M; Q: r; d5 g. S/ R  a7 t
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
! c& }$ e5 K* {1 k% T* @McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);# y* U" Y' H5 B) R6 B, T
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); + ]! Y0 ~$ g9 {  s: p0 b8 \
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,5 k6 C7 w3 i- t8 t( }( ?& U
0x00, 0xFF);
/* configure the clock for transmitter */, }' x! L2 S- K1 L2 b' [' ?
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);8 T) R6 l2 e. {& ~# c! z
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); & i, y4 M1 v! K6 ]9 r5 N# ~) P
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,' [2 T8 l  F6 h, J8 J
0x00, 0xFF);9 E, X1 X+ v  q3 b& g: s
0 }+ E  l$ B$ C- U
/* Enable synchronization of RX and TX sections */
  Q: V$ w4 O& J% P- `" ^McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */& J; l  I6 k) ^$ s
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);- Z& H5 C4 T$ T. O
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*8 I0 Q9 w& H: c. v6 u0 s
** Set the serializers, Currently only one serializer is set as
6 _; A- m8 y6 D) [/ U** transmitter and one serializer as receiver.
& C* f1 `5 A7 v*/! I6 O/ M5 [' N+ p! S1 t
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);9 R9 O% A. L+ @. v) ^
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*7 e0 E* Y; O( x0 s
** Configure the McASP pins
* o8 O. |- L- U# ]2 @# h- }** Input - Frame Sync, Clock and Serializer Rx
9 I* m8 {: @9 m  Y; [** Output - Serializer Tx is connected to the input of the codec
. f3 V/ |3 V% L/ p. X9 G*/
# Z" I; c' W3 |1 a* zMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
$ {$ a' \( ^) B& \! k$ |McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
4 ]7 I0 B! o3 ?. a& X$ ]. NMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX8 o9 r7 Z* A0 p4 Q& M$ e. s8 r6 G
| MCASP_PIN_ACLKX7 a! J) b, |; z2 Y
| MCASP_PIN_AHCLKX
# [$ X6 r) Y$ ~) S! n* M! g/ I& M| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */+ g" O9 ~9 I; j) d: Y* ^
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
! V, N. l5 x4 F# V| MCASP_TX_CLKFAIL $ I" W( C9 w, A2 p/ z
| MCASP_TX_SYNCERROR
) z/ e  s; j# J& r9 @- Y. ^% R| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR : o- O1 B/ P: b& O* s2 n
| MCASP_RX_CLKFAIL
7 I. p* Y, `# @2 [: O4 ~| MCASP_RX_SYNCERROR
3 }# d" Y# r8 z| MCASP_RX_OVERRUN);2 O  P  k2 m$ z* f
}
static void I2SDataTxRxActivate(void)
, V! h1 D# A3 \& C1 X{. g) i: s/ W* h3 N: w( `
/* Start the clocks */" b0 x  a' m+ w; f0 v. P
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
6 g# N4 d: ]! @1 g6 V7 |& G# b7 GMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
$ m0 f* s2 p3 Z. v) IEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
6 }# o' K/ N4 i$ z: R2 hEDMA3_TRIG_MODE_EVENT);
$ W% H( o; X; x3 aEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
) ]/ ~3 v0 C$ o' @1 u( @) jEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */6 j+ {  s# f# t4 ~3 V8 s
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);4 `5 |: ~% T; ?9 k  T$ O+ }/ [9 N
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */* }6 o, _" \* P8 L" x8 q
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
. N' R$ s5 h/ GMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
8 a; u' K* \2 s: t- A3 g" k: zMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
+ e* x, q: _- S) I! Z. H5 c, f0 h- P}

9 N/ A" g) O1 s, N& T: W$ h7 r( u
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

2 ^  d! ^) ]5 D% @  }7 ?3 r0 z8 j' b
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-6 07:42 , Processed in 0.039559 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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