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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 13626|回复: 0
打印 上一主题 下一主题

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1216

积分

金牌会员

Rank: 6Rank: 6

积分
1216
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,/ R7 R5 o+ q, L( `% X8 s) I
input mcasp_ahclkx,2 n. g0 T' B$ s
input mcasp_aclkx,
" N5 b; \( F2 M6 i; i9 `input axr0,
+ \- J" ?- l) Z: `2 `/ E$ M0 |7 {0 M* k( P" U7 L
output mcasp_afsr,' {! Z3 ^6 o' j- V( S& N; I
output mcasp_ahclkr,
& u. B, q, k% v9 ooutput mcasp_aclkr,$ ~% F9 N/ U7 Y) F+ z
output axr1,# |# J% D% n5 p% D. t) x" O* L
assign mcasp_afsr = mcasp_afsx;
- u! C6 [" [7 [6 n5 z# {3 r8 B; \' [, u8 Rassign mcasp_aclkr = mcasp_aclkx;
, U; E$ ]% Z7 L+ K0 \assign mcasp_ahclkr = mcasp_ahclkx;
" k- R' C8 e1 d; k! x3 p; Zassign axr1 = axr0;
* M8 q; e$ c8 i" V  _; k

. @6 ]' }; {/ P9 y7 m& p3 M
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
- o6 s  a6 G6 C
static void McASPI2SConfigure(void)
1 t* t0 B5 A# }6 C+ j" O' g0 I( i/ d{- K: N4 y* H1 J
McASPRxReset(SOC_MCASP_0_CTRL_REGS);; s  C5 _/ y1 N5 [& S" c7 T
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
: t) c* i' E; P5 v1 p0 M+ A5 QMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
0 ?7 T; i1 q" y1 [2 G% cMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
% Z7 p0 j6 z6 M$ s; t3 `McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,: Q1 ~  B! L- g) C
MCASP_RX_MODE_DMA);
/ @6 q' c7 v3 `) cMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,/ _( g, H7 }3 t; ], m, b
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */9 e  r' Y+ P6 V- d. Z/ y& U2 F
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
( I: }7 w* D8 ^' jMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
* K3 H- k* S+ }. A1 u3 A. QMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, ' y2 W6 e4 f1 T% z
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */, `7 P! i4 f: y( \/ V
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);! v0 C" r- N  \, ^
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
: e) A! X9 t, w0 B; AMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,0 Y* s: P6 I$ b3 D: j7 [/ X
0x00, 0xFF);
/* configure the clock for transmitter */+ r; t, G0 K; ?: o- l9 W4 f$ d; Q
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);% ?& u9 {3 Y3 U- s+ e
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
) s2 M. x+ C$ s, N1 ~2 |McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
, H# n; Q& x' a" h0x00, 0xFF);7 j8 H% h8 [# C% ]/ `, Z
) K' U5 Q7 S. A
/* Enable synchronization of RX and TX sections */ ' o1 I& Y# B# W3 ]. d) Z
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
# g7 {1 S9 u  ?7 c6 qMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);) j# N2 q3 z1 f! D
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
& |4 T: S* k  o7 M/ \** Set the serializers, Currently only one serializer is set as
! `, H& o& |5 `! ]' H; Y** transmitter and one serializer as receiver.! X& f# T$ l) ^4 N3 J9 C
*/( s  ?8 T, @3 N8 I
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);2 ?) |: Q8 F, n- D7 u3 `
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
0 B  f) _2 O# V; A) H" d* A4 `** Configure the McASP pins
/ E4 p$ B# Z  e** Input - Frame Sync, Clock and Serializer Rx
' r% |; B% C6 B$ \  R** Output - Serializer Tx is connected to the input of the codec
0 m9 n; N( c$ P& A. l*/6 f0 w/ N* B* Q
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
8 a* O% K  d1 y: B* @# v- NMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));) u* S; w1 }" I& G5 q
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX3 Z+ `0 V( l$ b
| MCASP_PIN_ACLKX7 c! X8 I+ W4 K2 l9 W  L
| MCASP_PIN_AHCLKX
" N! S! n+ a4 Z( Q| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
& B- d6 o: n2 E% T- cMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
+ ?7 {9 {- ~: H3 w2 @+ M| MCASP_TX_CLKFAIL
) e; r. @& `/ \| MCASP_TX_SYNCERROR
  i0 y" ]( d" O8 W+ M8 G| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
/ G8 Q& {- ~- Q( {' i+ V| MCASP_RX_CLKFAIL  [; ^/ {, ~2 y# r" F: r4 o$ y' c
| MCASP_RX_SYNCERROR 6 o; k, {2 [% u) P1 G# t7 m+ f
| MCASP_RX_OVERRUN);& l& F' @, R: C7 g& `! k# k6 |
}
static void I2SDataTxRxActivate(void)( r2 s# z( T# f* y2 ]
{
4 F& ]( U. h2 d  c8 X1 q6 \/* Start the clocks */
4 [% u) z( F3 H1 r4 w5 A, V* P% }McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
0 f/ q( o, h) p  M% Z+ ]McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
% R( B& s- E# ?EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
( ^% F6 G: W1 w. C2 \% R8 |EDMA3_TRIG_MODE_EVENT);" {8 T% Z8 J- L; a/ r
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
5 n, ]# C, w6 s) l0 A2 V7 ~EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
! W) X/ D+ T. lMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);* ^) s8 l) k$ M" n
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
3 b3 I+ V% s# b% U* I1 ?, \, kwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */9 E; s3 o. V  q
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
' U# N3 M, V+ Q4 V$ i2 zMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);8 ?8 y" a# r1 g5 h7 e7 q
}

% O7 c* g% t" i4 ?' \
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

" s  t! @0 ~) g$ I& j% P" a- _
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-11-15 02:19 , Processed in 0.040863 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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