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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12232|回复: 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,! o$ L% M2 F. {8 y, t7 k- B
input mcasp_ahclkx,4 c. R; h- P2 D$ Y7 f4 a, c7 X+ \
input mcasp_aclkx,: V( m" W. v  g! y, J
input axr0,
, `1 @. j' o  `3 e" i# ]) Y4 N5 F& E
output mcasp_afsr,4 R4 Q+ H, @: c( }* Y
output mcasp_ahclkr,8 s; h* q4 R& h. L2 W
output mcasp_aclkr,
5 b$ ^2 F2 C* w  m( P$ A# uoutput axr1,
- }4 J' i5 R2 K; ~$ ]3 J4 m  C. E
assign mcasp_afsr = mcasp_afsx;/ b. a8 ^. G1 [6 E
assign mcasp_aclkr = mcasp_aclkx;- N; H2 m0 l0 v6 }
assign mcasp_ahclkr = mcasp_ahclkx;
5 R8 z0 a% h$ l- c  Cassign axr1 = axr0;

3 n, b9 g0 }! f* M2 R* e
$ _! P9 T( c7 y2 T. M$ q9 e' ]
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

# a% n  ?4 I8 E1 z) j2 ~$ d
static void McASPI2SConfigure(void)# R. Z$ ^" g! O. {2 J: G' _
{7 Q4 Y: t2 Q1 U) c# h
McASPRxReset(SOC_MCASP_0_CTRL_REGS);9 w  e2 j  _" @6 V% o# ^% g) k- l
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
% G0 X( @  @" T1 _+ CMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
+ _% a. l- ?; m0 }3 A0 A5 }3 s4 NMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */- l; D- K( @. {
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
, l1 E/ Z9 |5 F# W3 t' e0 HMCASP_RX_MODE_DMA);
8 v% k2 a- I3 b& S4 x' N1 f6 bMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
& U1 U6 c; A' J8 @0 R0 HMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
3 m2 ~7 H+ E+ u/ r( z% G2 jMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, % Y+ [" i; b& Z  M7 c) g) H+ D) g, a
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);4 n) P* t8 @( `
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, " S$ N5 o) Q7 D) ~* G1 R
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */" \! l! F, v+ f+ A' D7 M
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);2 @! U% i, f: ~8 _" R
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
) Q8 _, H2 Q, U1 U4 _McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,) ~6 l1 a8 n  {6 ^" F( p1 P2 F+ s
0x00, 0xFF);
/* configure the clock for transmitter */
8 L# A4 t. G2 K3 N+ R& HMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);, `3 k) N/ E& R7 z' E1 f! M$ C
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
/ S" X! C' f) r' G/ \9 R4 eMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
2 S- k9 m1 N8 I2 H% K" a3 `* P0x00, 0xFF);1 Y; p8 w! W3 Z+ D# A
$ ]& g9 Q$ i% K# f
/* Enable synchronization of RX and TX sections */
- F+ W& n  B- K9 n/ C6 ?, OMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */' v0 \2 n3 |9 ~! X
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);7 E' B1 @" M7 ~: S6 e7 d
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*) I4 I2 h0 X& X) a5 k. U
** Set the serializers, Currently only one serializer is set as. S; A2 z2 p8 T* a2 j/ R
** transmitter and one serializer as receiver.
8 k- u  {) p3 f! I7 Z/ V*/$ I9 b- G7 K" T0 o6 y9 @
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);# F& }4 O! v8 b7 W: |
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*& H' D3 [4 V8 V
** Configure the McASP pins " U! V9 w" Y2 n' [& P) o
** Input - Frame Sync, Clock and Serializer Rx2 f4 L* o3 p# W- c
** Output - Serializer Tx is connected to the input of the codec
# J+ e1 H. C% J# T; M% v*/
# L$ q  I4 f# D$ YMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);/ ?  H' @+ B! A% Z% k6 C$ E: x
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));2 I9 ~- }( [! {! M
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
& ?( G) \8 i& q$ M: o$ n| MCASP_PIN_ACLKX
( O; a, ^' l2 K. b8 n. s7 @8 X| MCASP_PIN_AHCLKX" h6 B3 v* W; o5 @6 T
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */, V" l! M) e* I* o8 F$ F
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR & @) W" N  B. ^5 e
| MCASP_TX_CLKFAIL / P; c0 l: a  i, |: N* I
| MCASP_TX_SYNCERROR
8 t0 w5 i) ]: i# b0 U, n| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
6 \9 e2 i: \8 u$ ^& E" H; F! d1 R/ n" S| MCASP_RX_CLKFAIL
3 T7 ^0 e8 h6 [| MCASP_RX_SYNCERROR
0 z6 n/ O4 \4 o+ Y| MCASP_RX_OVERRUN);9 U, X  q& O, S5 d+ \9 Q
}
static void I2SDataTxRxActivate(void)
5 t: Z; o3 f5 l+ b* D2 b" q+ e3 R{
; v+ b8 y2 K: m3 C( c) Z/* Start the clocks */; R; b) D$ G6 A5 j# \) g
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
5 B: R" n, V9 {0 c5 X, W: v/ {. iMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */3 s7 {' n- O9 l% [0 S
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,4 K- g8 ?3 P- l$ a* H
EDMA3_TRIG_MODE_EVENT);0 ]1 s9 ?+ P! Q. N$ x
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
; x- l3 i$ I4 e# @9 ~' _EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */! z  J' i. P' |( e6 S
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
$ f- q/ P, U1 V; i1 \- h" S. MMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
6 e2 F# ?5 h- X3 ]0 ^while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */7 Q; s7 }( c7 v+ [2 r% k7 _
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
) y, K- k  J0 i, @) m9 @( ?: gMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
5 m. W% {. T% c5 \- Z+ F: G}
8 r* ]+ y8 k" c4 K$ i6 O
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
, m, j: [2 Z  D5 r
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-4-2 10:33 , Processed in 0.052481 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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