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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12048|回复: 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,6 p+ O. Z. D6 v) J' l' }3 l! {( X
input mcasp_ahclkx,
5 A  [) o6 J' x" v( p; X+ linput mcasp_aclkx,. R. e  P0 E4 E6 Y
input axr0,
  I) {$ h9 ^: K0 {. P& Y8 y0 l3 X( J5 O1 {; x! `' b
output mcasp_afsr,& N$ e" s; w4 b, v0 C
output mcasp_ahclkr,, \8 x1 x' y! Z
output mcasp_aclkr,
: F3 `+ u4 W$ I  noutput axr1,+ P3 L. s7 J" t) H9 x
assign mcasp_afsr = mcasp_afsx;+ q+ _% g  b0 n1 E3 E- `
assign mcasp_aclkr = mcasp_aclkx;
: H5 ^% Q/ \% [7 z# yassign mcasp_ahclkr = mcasp_ahclkx;) n6 L( T( @+ X( L1 e/ i& E& J3 e
assign axr1 = axr0;

; g1 @0 t' T8 d( @5 o0 f: u: _  U
5 R) k9 g: r, t: L2 L
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

- R+ W9 \" q1 [- b& w: m
static void McASPI2SConfigure(void)
6 B6 w7 b5 S" Z  k+ C- W: T/ x{
# V! X6 I7 w& M) E8 q5 MMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
) x3 X/ ~" w) s; n# xMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
) U( g" h/ A% K4 N" ~/ J1 JMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);4 D) A( p$ O* |4 |
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */4 Q# c4 n/ z! z
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
/ a. j$ x- j7 bMCASP_RX_MODE_DMA);; U3 r: }; }; Y" [# j8 W2 {
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
2 c+ h2 Y' D, I0 M/ w# Y0 H- QMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
8 P0 U+ h5 _6 E: _McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
7 s( d: b/ m0 J8 \MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);/ r9 O2 g$ ~% \: L& ?8 [
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 7 I1 \$ C  W" E+ L* Y  F8 v8 ?
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */. {  \. G" S! h5 M) K' g& a
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
! ~3 G( x3 U, G" U" B$ g# }# F1 wMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
' F0 t2 E0 P) l, D: y+ IMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,7 o: p6 x4 e  w5 L0 ?( u( Y5 x$ i1 `
0x00, 0xFF);
/* configure the clock for transmitter */
$ h2 E/ }7 X+ A$ I" n$ V/ ZMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
% f- B! j: w- c. QMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
" l4 v; Q, T0 d0 b1 h8 Q! jMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
5 J5 F" c. b8 Q8 G3 [  E. V$ ]8 u0x00, 0xFF);
9 v6 ~, U; H+ E0 y( o8 u1 ]4 e9 @4 X
/* Enable synchronization of RX and TX sections */
5 @8 o5 p/ Q" |* \, w0 EMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */( c& D# X9 Z" z( b9 b1 z, Q, q8 ~7 l- w
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
% t( x" b( A, X  R3 G# ]McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
' a( M- e) U$ P** Set the serializers, Currently only one serializer is set as
4 s' C9 T% A+ K' I. G/ D4 S** transmitter and one serializer as receiver.
5 F( }$ b' g0 h  d; k  c*/
/ H( y, `: `9 j9 M& nMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);+ E" k* j1 @! ^6 }, o  S6 l9 ]
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*+ d- }2 q- T4 ]* h. X8 F; i: Z
** Configure the McASP pins 9 c3 ^/ N+ Y0 v0 S2 V/ o
** Input - Frame Sync, Clock and Serializer Rx2 Z9 |1 v7 z8 ^: F: A: U! g
** Output - Serializer Tx is connected to the input of the codec
8 _, \* Y/ h& o: N% |*/* b9 O% y6 v  d
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
# H. ^7 z  z- |McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
/ X" n% X& D# |# c5 V. w" V; k* I* Q/ YMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX; G& Z. \$ V% B+ O# G, W
| MCASP_PIN_ACLKX
) o" X$ k- T/ n0 K| MCASP_PIN_AHCLKX8 }; L6 y5 u2 R0 y3 R7 R+ L" s
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */6 E2 Z3 M" ]) W7 S/ w
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR 0 a6 o. j0 R5 X8 K
| MCASP_TX_CLKFAIL $ n9 b, E( _* g) J  B4 W8 n, L
| MCASP_TX_SYNCERROR( x2 f1 H* ]; f; F2 t# V) C
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
1 e- q3 ]1 Y) w. `| MCASP_RX_CLKFAIL. w4 v# |; P) }, Q  n4 g
| MCASP_RX_SYNCERROR
  d+ B2 H* i( ~/ o% {: X| MCASP_RX_OVERRUN);, J7 b% J- D. k  D6 C
}
static void I2SDataTxRxActivate(void)( Z& [- z1 H+ L9 m5 k3 J
{) A) o. X4 q% J/ K7 G+ w0 ~
/* Start the clocks */( l* p! \- ?' C  ~6 U( ~
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);, }: ^2 ?$ y9 X0 l5 a* X% f& _
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */2 z6 N, V! e8 p/ i
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
2 j, L' ~6 \# s/ C4 \EDMA3_TRIG_MODE_EVENT);
( g+ @! }& B7 ^# o1 LEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
6 w* p. r5 b3 c+ M- i) A% mEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
! N, _* Y! i0 z& LMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);! t- T) l8 L/ o! h
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
7 z3 o7 }, M- P) Dwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */4 x7 N- s1 {. [8 c
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
. m6 }8 c. O, B* kMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);1 v$ Z$ Y+ a# E& {) b9 @- Q) y' D+ @
}
8 ^/ ^7 H& b- U" v, W$ T1 W+ F4 Z
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

% h2 w$ N0 m/ b  r5 R/ p
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-25 08:29 , Processed in 0.040250 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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