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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 11773|回复: 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,
" z' q2 q& [' f$ Y/ x  Winput mcasp_ahclkx,
4 G' V, m# Q* c% h6 B: x, x' ~7 rinput mcasp_aclkx,) b1 S; ~2 w# C4 Q( W) X
input axr0,7 h0 u8 N" c; v

' y* i( d# i) k: N. s) @" M% Ooutput mcasp_afsr,
/ @+ a* n+ T( L  |output mcasp_ahclkr," Z" S, {/ u3 G6 P
output mcasp_aclkr,7 k/ `2 f; ^% o# w3 h
output axr1,
7 F6 R# [6 I1 H$ }) ?8 M6 k
assign mcasp_afsr = mcasp_afsx;
& B& n. G$ D/ P8 h8 |" g4 E1 M- massign mcasp_aclkr = mcasp_aclkx;
. s9 t3 v6 _6 B" a. I/ ~& gassign mcasp_ahclkr = mcasp_ahclkx;  C' Y$ v1 D/ i) F
assign axr1 = axr0;

; |; O& Q8 l( V  |* T) t. M$ A' y$ u9 z. y
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

. {' {4 W$ Q0 f
static void McASPI2SConfigure(void)
+ i* G& R1 p. u$ f" f, \3 y3 ~  [2 M{
: h( v8 G; }' ?* a  U. aMcASPRxReset(SOC_MCASP_0_CTRL_REGS);! V( F+ v; Y( q2 O3 x3 E& ]
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */) F8 F# k. [5 i3 e
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);; B' ^7 Q) w( @1 I: a+ A6 ]
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
- E; ?$ r( r1 uMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
6 y0 j( v4 m4 j2 dMCASP_RX_MODE_DMA);8 X0 I. a; C9 ~, Y; r$ n: j+ m% e
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
: p& v, _4 L3 JMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
. |7 }* W: F( y$ e- MMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, ; Q- j  h; Y7 q, X+ m4 B
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);/ y: O9 @! D3 U" C8 V
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
" }% }' s8 D8 EMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
" h$ m/ T/ }4 Z* w# x0 j) ?McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
2 S: j, q1 i2 z+ c2 E/ W( bMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 2 w" @" W! v* r2 @9 d# H+ d
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,$ u% R$ e( J" F# E$ h
0x00, 0xFF);
/* configure the clock for transmitter */
+ Z" F, f" r+ I+ S" L. ~McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);' Q* }, K4 f( |1 V+ y# a' W* o, ]
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
! P2 g1 ]0 U( g+ Q$ t. HMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
4 r6 o. u& a$ s1 C7 z3 A# q! |. Q0x00, 0xFF);
9 F4 P$ Y5 j7 E/ R1 S  J" l
4 V- }" p" b! u" v; o+ [: W- B; W% M/* Enable synchronization of RX and TX sections */ , e7 f+ N# W8 f+ q
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
' ^" N8 k, U6 u& c$ b4 xMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);' n$ `  d* b& B( k6 x4 Y
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*7 U& j  M) O1 k" E: _: u" C4 L
** Set the serializers, Currently only one serializer is set as% C9 V! V, C- }" Y
** transmitter and one serializer as receiver.
) L: a$ l' ]2 V# q) i0 E*/! _9 }4 \/ t2 {" l0 Q
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
; c3 A/ b7 H8 ^2 @( E+ x, pMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
2 H, n' s$ [- t4 k" e$ v! T** Configure the McASP pins
5 S' S) V% s7 E7 T" a- T$ ^5 p** Input - Frame Sync, Clock and Serializer Rx
/ I: B: C6 _# Q+ f" L) k3 ^- q** Output - Serializer Tx is connected to the input of the codec
3 B3 ]* j# k4 {+ X*/
/ ]# U  m6 I9 GMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
# o* O' x; E& q. S8 aMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));/ J- f9 x& f9 L4 G7 E
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
* C0 d! l9 n% [$ M1 I  F; @| MCASP_PIN_ACLKX
; Q9 v4 U; |& I1 D2 T8 h  A| MCASP_PIN_AHCLKX
% E3 v" \: |1 `1 s* Z| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */0 B' c( Y4 t5 f8 K4 u
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
4 k3 E& H) L- L$ e% x4 b| MCASP_TX_CLKFAIL   ^. D3 `  [9 y' w0 u$ `* `1 W
| MCASP_TX_SYNCERROR
% b% z' o3 C- q9 u. Z+ z% e) M6 f| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR 2 V0 o) q% {6 L5 l0 ?& ?, A
| MCASP_RX_CLKFAIL9 J9 h' u1 p7 v; P+ X' ~
| MCASP_RX_SYNCERROR
0 q, F* G9 w/ ^0 V5 o8 e: d( f| MCASP_RX_OVERRUN);
/ v( ?& ?/ Y; {8 g}
static void I2SDataTxRxActivate(void)
2 [5 V1 a: M7 v/ v( {% {) v{  W& G" O9 C/ G, d8 i! b  M
/* Start the clocks */
* n, k( V- ^1 W3 f  b4 X1 HMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
8 G7 k2 o- H* z' PMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
7 i' V* a% m& M" T: L$ P; DEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,6 _) a% Y& A& `7 I6 A7 i
EDMA3_TRIG_MODE_EVENT);
: ^6 K' W* {% b" wEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, . b( V# x5 d& E! E
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */+ p) \+ I1 f7 h6 m
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
/ x' W7 L% ?, f& CMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
" H$ s3 \& {) x3 t( h& p( {2 a/ Wwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */; v' H: p# l; G- u1 b
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);7 K+ D$ y0 o# K2 r9 R  F7 O0 b
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);* L6 w8 |$ y" X' F
}

  X, H8 i5 g  |8 @5 v9 W
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

  v. _( O  q. B* e9 F
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-13 19:58 , Processed in 0.039244 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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