MCASP自环配置。 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1212

积分

金牌会员

Rank: 6Rank: 6

积分
1212
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,
: ?/ O( ^0 Z& a9 i. k* ^" b' winput mcasp_ahclkx,
' U' ^- @1 U' j- P! `4 ]input mcasp_aclkx,
/ z( a  X& h1 b# k. s  |input axr0,
1 Z4 F. I& L. G
9 v; b  G4 y& a$ Doutput mcasp_afsr,
& n" R1 q  `! I6 {) Moutput mcasp_ahclkr,0 S$ k/ {8 X$ M. C; B& H
output mcasp_aclkr,! ~! t& P# o( @) ^) T* z, ~
output axr1,, N& {- v+ B4 L/ H- f) S% B, h# k! s
assign mcasp_afsr = mcasp_afsx;9 u2 M7 w3 I1 l- |: U# y; p* n) T6 q
assign mcasp_aclkr = mcasp_aclkx;) V( U) `! a+ @/ g/ j$ @
assign mcasp_ahclkr = mcasp_ahclkx;
/ `/ {" `' W% U) m4 |assign axr1 = axr0;

( O. W- S: C* H- U( F- J$ X, D7 v9 \/ `
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
9 M* i4 D1 e4 \
static void McASPI2SConfigure(void)
& M3 p& ?: F  ]{
- E3 ~- ?7 r7 r' M! uMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
7 X0 ?" s! B2 G0 k: t$ ^! BMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */4 a9 g) b  A1 n" i+ Q! b
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);& \+ O4 }% U7 o+ {2 Q5 a2 V
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
1 T$ s4 s$ O1 ^% d" lMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
: t+ M( e8 t% d+ h/ QMCASP_RX_MODE_DMA);0 a# G( f" I( {
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,1 h. n. Q/ u" Y8 ~
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
! S& T; I. i# d( f) }/ [" qMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
# q* K3 ]& T4 q7 }8 s0 f' G+ kMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);1 S! B( N9 \  m% B" d
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 4 J0 f6 K+ a0 Y& [/ N3 j
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */5 Y1 c" o3 {: k, w- F0 c6 g
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
# p% g2 S4 o# z: ZMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
) ]( T7 j2 r0 I0 _, y, @McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,' [4 c8 J/ I3 l
0x00, 0xFF);
/* configure the clock for transmitter */! K! n* u6 h8 ]  V3 Y! P$ c
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
0 Z3 v/ X1 E2 F* L, d2 GMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); + J% x* ?6 ~, n7 {1 G- G
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32," X' U1 h! f+ r* D! J
0x00, 0xFF);+ _* {( e' s& N

' O) l8 v+ I" Y/ D1 ]# x9 f) y- j* F/* Enable synchronization of RX and TX sections */ & n$ Z0 m, v9 l9 x
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */5 {" F' A7 u+ R, T" |7 G+ |
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);. ?% j% v5 o) K+ V: V  X$ c9 Q
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*8 O4 W& q# ^: l  h5 e4 e. w
** Set the serializers, Currently only one serializer is set as# x, r6 T% Q* X% w% S! P% S, S
** transmitter and one serializer as receiver.7 V3 C, v1 P4 {+ ?5 e
*/
  b: M/ k; R. B+ s: v4 f3 X! L4 RMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
# n+ s7 D. H2 z1 L+ ^# B9 mMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
: q+ e. S- D! @* a$ e4 s2 e+ G3 Y** Configure the McASP pins
9 j0 Q" j5 i- T' i** Input - Frame Sync, Clock and Serializer Rx
" B" A, ~5 h' ]9 L  U** Output - Serializer Tx is connected to the input of the codec & H/ p' q( P" x$ R% K
*/
! O+ N2 G2 O3 M0 PMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
1 E/ |) H% k& W( q; V9 v0 R! iMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
  F- X  O( S( W; k. _McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX5 ?8 |0 R- n+ A1 w
| MCASP_PIN_ACLKX$ |1 v) Z* w( K6 w$ B5 X
| MCASP_PIN_AHCLKX; B, [3 G0 u6 p8 g
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
/ t! e+ y0 o" u) c8 [McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
' b4 N0 {% Q8 U| MCASP_TX_CLKFAIL
5 E2 x$ a3 [2 N6 A: V| MCASP_TX_SYNCERROR6 \- d' e' E- w' L$ i
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
4 E$ }/ V% O5 b- V, Q9 t+ A| MCASP_RX_CLKFAIL
) \& j: [" N% e| MCASP_RX_SYNCERROR
/ Z" V  B6 I* \9 Z+ [+ }+ `  A| MCASP_RX_OVERRUN);
, ^' S8 k. M8 c) v3 w& g2 B3 A  c3 M) {, \}
static void I2SDataTxRxActivate(void), P# F$ J3 C5 ~5 j: {; `3 ~. y
{
* M1 u7 V: {+ B0 h1 d. ?" K/* Start the clocks */6 F0 C$ z2 C4 l9 l4 n" O# \2 c' N
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);* b2 B0 H& s, U( n3 A4 H  y6 S( s
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
9 e0 l! e. K, a; e) SEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,  {1 y! Y  u5 A
EDMA3_TRIG_MODE_EVENT);
, u" s  ~1 q2 PEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 3 b2 N0 B. H2 _# g* |
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
8 o6 ]3 D  h$ \: _" LMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
  G3 [8 |, y. @( ZMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
% G( M2 l* h9 `7 a2 G1 k% \' hwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */2 ?) ]( W/ C$ C  H
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
7 f+ P' G2 w0 E  L9 R/ Z! J1 QMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);- A( s$ T& o5 {# k$ G# U! p
}
/ C6 a# L+ r& d/ m1 L5 D
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

1 o' D# f' t, e- z4 o: W
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-8 13:06 , Processed in 0.039059 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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