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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10220|回复: 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,
% L* \( [, C! g( }input mcasp_ahclkx,1 @$ p0 i4 `* m5 D: [& n9 @
input mcasp_aclkx,* s1 X1 B/ ?+ N; J0 m% s
input axr0,
/ m/ t' ^4 n/ M, E8 d5 B8 ?6 R4 Z) H9 G$ F8 z
output mcasp_afsr,3 o6 T- y$ p1 X2 Q0 z! U# O) x
output mcasp_ahclkr,
% U( b, n: C2 I- k+ ?$ [output mcasp_aclkr,: Q$ ]5 ]0 |) {: N
output axr1,: b7 I- S# Y4 r8 Z1 S
assign mcasp_afsr = mcasp_afsx;# F( W. |/ H8 ~; b; Q
assign mcasp_aclkr = mcasp_aclkx;
# O. s% |* d3 U5 T; D2 g3 \assign mcasp_ahclkr = mcasp_ahclkx;& E' J# Z0 E1 f! V! o
assign axr1 = axr0;

3 }4 G" G( u1 o
1 |, b8 C( }# j5 E. O
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

) ^" W# g& P# L  U& h" L9 Q2 t
static void McASPI2SConfigure(void)+ H8 Y2 M+ H$ m& A9 ^/ p8 Q, }
{
" Y1 @: G4 q( z* M( m2 X4 K; tMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
; F% |, f( S: w, Q) Q6 I7 TMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */2 C0 ]6 T2 `# W! N, \5 i5 Y
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
  U5 G& v9 n2 p0 K) F1 sMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
8 A4 B' w/ a+ h. UMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,: @* [4 C# ?) ~: }$ o
MCASP_RX_MODE_DMA);3 ^( V* w& S$ O* X( z& h1 E0 ]
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,) c# N2 ?- ~; k
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */5 p' Z& j% v$ S+ G
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, ; w6 b8 U( O5 _1 G" W$ B! Y
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);1 c0 o- U1 t$ T5 f* |) |& K$ |
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
' {+ k1 F2 I* \+ `# ?, sMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
+ L$ E; T) P" N+ M( [  uMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);- D: O7 T' E( p( v# A2 l
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 7 E( r% J$ D9 q- |0 I
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
: h; d3 T! H' m; [8 F/ k5 W. I% v0x00, 0xFF);
/* configure the clock for transmitter */
& S5 i, _9 F& V7 {% ]& WMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);6 }# J. j; v3 u, f9 s* @% I1 W
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); 4 {1 t! o% G' ~8 x5 x3 _0 S* V' F1 A
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
& N* k7 r" G7 ?) l7 G0x00, 0xFF);; K' e; t) |( H+ p8 k  S
2 W- d5 w# t3 Y' K1 a4 X
/* Enable synchronization of RX and TX sections */
6 c* R% H# s3 b& G; DMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
$ k2 v) a. a" u! VMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
% }" {+ u' Y' q4 E" ]McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*8 i8 K1 t& u4 P0 X5 G% ]( T4 q9 s
** Set the serializers, Currently only one serializer is set as
9 Q& Z5 X9 \" I' g4 q. {) p** transmitter and one serializer as receiver.
8 e' [3 j1 k3 \; t' F: _*/
3 \5 t/ f+ s. I% P7 J5 hMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
/ U1 s+ X* _. b  s$ U6 X5 XMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
# H) y0 O+ s) q* h- @** Configure the McASP pins 2 i# o/ f; q# V' E: x* `
** Input - Frame Sync, Clock and Serializer Rx
4 Q0 f8 U0 s5 S' t0 m** Output - Serializer Tx is connected to the input of the codec
6 X2 Q# z9 `' {* M*/
# x. ?" h0 g6 @* R$ K1 @$ DMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);/ K0 |7 v+ E, \7 k$ y/ J! m
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
: H4 \5 P& |0 t8 L: w5 MMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX# ~8 y8 W0 ]4 J) F/ f
| MCASP_PIN_ACLKX7 D1 a: _5 A( [. E+ r
| MCASP_PIN_AHCLKX. n" o0 }, z2 q& F/ ^9 F6 ~
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */7 B) i7 [7 ~1 C5 p; O  w
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
' `* u; J1 I  F. v; i+ y# e| MCASP_TX_CLKFAIL " F5 G' v6 o& `( Z( H+ I$ W
| MCASP_TX_SYNCERROR
$ u- |* [. Q8 p: o| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR ( v5 A* T6 S& U$ m
| MCASP_RX_CLKFAIL
; R1 S# W, ?& V+ R9 O* s| MCASP_RX_SYNCERROR
  Q) P- I* o! ?| MCASP_RX_OVERRUN);/ B( A  D7 S' ^
}
static void I2SDataTxRxActivate(void)
9 \7 j% W; R, X( P1 l# J  q5 R{
! O( Z0 z8 Z' T/* Start the clocks *// o: p9 G/ B2 ^. t& a
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
: r, B% i. R& \* N5 ?5 I3 uMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
- M; ^. x; E  ?5 g7 c& {EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
5 o0 y# O) u, z& Y5 TEDMA3_TRIG_MODE_EVENT);
% v7 ^: ~' C" AEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
7 {5 q8 m9 j- MEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
! l3 z/ B7 _6 d. Z! y, O# r! A( V' YMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
2 ^1 p, F) Z! r- T2 x5 z" \McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */; N( ^& `" `5 S
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
! `7 u3 I6 x8 X2 uMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
4 z; {" I+ i0 Q/ N3 h7 y) k, V+ uMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
. b7 E5 T) A. H}

8 p' h7 w  I* e' \. y; G7 j; U" W
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
  P, e8 s+ d+ @  X+ {( F
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-31 22:33 , Processed in 0.039827 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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