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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10113|回复: 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,  y2 R  w) z: ~
input mcasp_ahclkx,
; }, x' ]1 F8 E( x, w  Xinput mcasp_aclkx,+ L) n6 \! }8 g. o0 [: @, Y$ A
input axr0,( B7 D, \& M0 e; e' i
  X+ r. N, A( F; y
output mcasp_afsr,
# \/ J2 Z, q8 j: U: C. O& z. o  W/ toutput mcasp_ahclkr,: X6 \) }& o3 J" I. V  Y8 y$ ]* ]
output mcasp_aclkr,
* ^. j/ S- @0 W7 @# n+ loutput axr1,
$ r: s! v/ S% b9 \
assign mcasp_afsr = mcasp_afsx;
$ R0 V5 O% \' V; X, i8 S+ Passign mcasp_aclkr = mcasp_aclkx;5 x& y! I' f5 T* K6 `
assign mcasp_ahclkr = mcasp_ahclkx;# _0 V3 V8 X. q: q; v
assign axr1 = axr0;
8 T' `/ e# D1 a0 c% b) {
% h! @! F2 t4 A1 |6 I( @6 R
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
( A& k5 n1 ~, Q1 F( Y+ [9 w# l
static void McASPI2SConfigure(void)
5 h1 a! W& F' P" }% R3 b- m6 i{& U( C: a% x8 L: c3 }" h
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
. t+ d, K2 Z+ `# s$ @McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
$ a  i' E; m+ ZMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);2 ]% ^3 A; x$ m2 q: [1 v7 B
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */' K8 d* t; }3 i1 w( m5 y
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,& {) \$ v+ A3 v) y5 @, l
MCASP_RX_MODE_DMA);
7 h- y  u1 V4 U2 |4 `6 ?- {McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
) r  [+ O  b; ^MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
3 a( k3 W5 T5 k7 G, X7 g9 o' |McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
6 M  F1 P$ _! M# h: P) \. Q* QMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
! T6 d2 o% ~( l; U* kMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
+ D& N# O/ [( D" j$ O4 [' T& M8 P8 ZMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
6 x; ]  y2 h5 j, P% [7 ]( j1 ~McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
* e! \, S, X3 @' J* vMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); / b) `6 z" P( a2 r+ Y
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,4 q- Q4 v4 ^# J  V
0x00, 0xFF);
/* configure the clock for transmitter */8 j- Z& E3 @6 W
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);0 H5 d! K. t; g5 E, A
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); 5 l3 V) T) D( f+ G
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,. i: |: K! e7 E) R. [% _8 z$ F
0x00, 0xFF);; z# Z% W$ @. r) @4 H2 J# g
$ W- `4 K, I' Q0 l: ?, m% \0 v
/* Enable synchronization of RX and TX sections */ 9 t* N- G, V4 U7 r0 F8 }
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */; E9 r: B# a. s: \* [- u/ ~* [2 H
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
  _0 d, K4 a; C+ Q! z/ L' j8 S% ]6 ^McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
0 B$ s- }+ i5 u4 `1 q8 D$ B3 Y** Set the serializers, Currently only one serializer is set as
- r: ~5 O* V- Q& {4 E** transmitter and one serializer as receiver.
, g: Q  D8 v# ^2 \5 _6 i. C*/
' i! q- V" C, N7 ?McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);' `% v9 @3 H, Q  |& @' c5 Y0 F; q
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*) k# h) I# E* a3 p4 U, s
** Configure the McASP pins
: j, M  V( `! c** Input - Frame Sync, Clock and Serializer Rx$ W6 {; k0 F5 H! w: t3 P
** Output - Serializer Tx is connected to the input of the codec
" `3 }" [4 w! R  Y, _*/
: d9 ]4 I9 O/ r* |McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
7 x2 r, ~5 y$ s, x( mMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
5 E  g9 [1 m, d6 l6 a3 W8 V0 |McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
, V# d3 V0 s6 W7 h4 F' l9 D; }; F| MCASP_PIN_ACLKX
! b9 E6 W; E& C' P8 [| MCASP_PIN_AHCLKX
. H9 X2 l1 x) y; o0 F- R/ ~4 I4 g. x) Y) h| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
3 d/ E, k7 q. N" W; uMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
# I1 W: o, I; v( F| MCASP_TX_CLKFAIL # u) z& J/ {8 K( x6 j/ ?
| MCASP_TX_SYNCERROR
. ^) [* D8 J$ Y! v# M| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR ' w1 T9 W# e! _
| MCASP_RX_CLKFAIL
" N7 o6 c' n; h0 H| MCASP_RX_SYNCERROR ) \2 K5 |6 N# j+ j
| MCASP_RX_OVERRUN);
" S7 z" r8 ^; f3 t. k}
static void I2SDataTxRxActivate(void)$ |( ~8 D. G9 O
{
  d! ]/ ~. r- U* m4 B2 ?8 U/* Start the clocks */
1 M! [- k2 a+ GMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
. V) {& [8 R3 s3 zMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
3 V. I: h- T' D  c7 |EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
6 b6 t' S' A! w3 h3 t  \/ @EDMA3_TRIG_MODE_EVENT);7 \6 ~: ^/ ~% X
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, ! P8 Q  V/ K: r8 X1 o
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */2 N  [- q; n% k. R, r
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);4 k3 x/ M( F* _8 n7 A4 `
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
& N$ h, i* t+ Ewhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
& w5 g- _0 O' mMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);( X, E7 v% `8 `2 n5 b- s
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);0 N( H1 H% n) T/ Y; n3 p: x  b- R
}

8 j6 U  i" ]- U' f9 b
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
8 i  n# C( N0 l% z! v: Z
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-29 05:15 , Processed in 0.040379 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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