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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12987|回复: 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,
3 R  Z6 y8 X' _8 L4 u) G0 xinput mcasp_ahclkx,6 X: c' E' A& B; P
input mcasp_aclkx,
: V" Z2 p6 _2 z! @input axr0,
4 |. V  T" ^" |3 P! m; P- U+ [/ _8 X$ x
9 e8 K- C, V9 a6 |, \3 Y7 Y& Noutput mcasp_afsr,2 Y6 z. i2 G+ {7 v4 G3 ^5 ^  ?1 ]: {
output mcasp_ahclkr,& n, g: ~1 z4 ?! J; O
output mcasp_aclkr,
% r( A* d! P; k% {  houtput axr1,6 Z: P/ m, E& c$ K8 g. O$ N+ W7 d$ S
assign mcasp_afsr = mcasp_afsx;
8 l. g$ D( P8 L6 n1 u" dassign mcasp_aclkr = mcasp_aclkx;5 |  Z7 q% m3 C* q  B) L' a& b
assign mcasp_ahclkr = mcasp_ahclkx;6 C* ]9 D# V- l( P2 D7 Q7 M
assign axr1 = axr0;
+ [5 w* s. C  i' n# i4 a& _
, H1 K; m3 }2 v2 Q! v! d# R
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
' ?7 l. f* `) d4 z1 M$ b
static void McASPI2SConfigure(void)& s; ]" ~* K4 n# l1 `; W
{1 x  F% D( P1 ~* v. r
McASPRxReset(SOC_MCASP_0_CTRL_REGS);8 [( q& E$ Z$ }7 n( x! C( d
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
9 O9 @7 \4 M% F$ h& NMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
  [& e, h2 R. H) s0 E2 FMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
. N4 O+ l# @9 y& z8 d5 s; }( F) OMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
$ e$ i, v$ w8 C  a; L2 y/ FMCASP_RX_MODE_DMA);; P, y- w  y" j# [( U
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,, T* z' a2 x# }
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
" S, j% C! w3 \- m) K! `* x: qMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
' g3 {# m% Y* ~# l+ o5 @& N. z( w1 ^) yMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
) i4 V9 X# f6 B- I( F1 \& ZMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, ; A7 a' N6 t2 F) E
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
2 l7 S# B6 [" \2 W5 r& |. n* bMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
2 n5 L* o; w, s) S) f5 ^* cMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
  c; O9 m8 M: t; FMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,+ A5 Z5 Y3 q9 Y% D8 u" h) U$ A
0x00, 0xFF);
/* configure the clock for transmitter */
1 I. C; z$ ?4 j& hMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
% F8 g1 d1 n) }) R, r  l! l8 ]* oMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); 6 E, X; Y( q. Z
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
2 J* T0 c* ^$ G, y5 x- I0x00, 0xFF);2 G# e% _- F4 m: U2 ^! W

& [. Y8 w- w0 t8 O, W6 E$ R- {# v" n$ p/* Enable synchronization of RX and TX sections */ : W( }- `' P& F" P) R5 z% _1 n  @
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
1 w, G4 ]* ?2 I9 Q5 }( c0 hMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
7 r3 S; i" m1 Z9 yMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*& D; j/ X7 t! i; V. J
** Set the serializers, Currently only one serializer is set as6 C% p  x9 J, ^; [; E& u2 [
** transmitter and one serializer as receiver.
& D0 U) L% E( h0 ]8 W*/# d3 I$ L* E3 l4 h' m4 m+ ~6 c
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
. b( s6 R( W, |9 P5 r' fMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*0 P3 a2 u) I5 x; O! i
** Configure the McASP pins
/ g7 c1 F7 _6 t; I** Input - Frame Sync, Clock and Serializer Rx$ N9 v, I, x0 @( W6 C
** Output - Serializer Tx is connected to the input of the codec 0 y; c  R* o8 j; }3 G
*/
8 i; A, l5 P3 N4 s0 T- e& jMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
1 V5 d5 y8 Y/ w, f( [5 LMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
5 S/ V  i5 a; i' s8 W* ?McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX) f9 z8 n- W8 z. X1 @
| MCASP_PIN_ACLKX7 U: I1 D# z  V. l! I( f6 f
| MCASP_PIN_AHCLKX
1 h7 p3 g, ^' |2 H| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
4 a3 o5 ?/ d1 H2 r2 g5 j; HMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR ' [( r, K3 e7 B$ E9 v: o, C
| MCASP_TX_CLKFAIL 5 q* i( \$ S9 v2 a
| MCASP_TX_SYNCERROR0 \8 @; H2 p. ~7 ]  M' |4 ^4 [" m, v& L
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR & b! r/ F. D- y5 w
| MCASP_RX_CLKFAIL
6 @  S$ _- h* A1 _, |- @| MCASP_RX_SYNCERROR
$ d( ~& Z0 U) J| MCASP_RX_OVERRUN);
# [9 l; {. |5 H. o4 Z7 w}
static void I2SDataTxRxActivate(void)
6 p3 o& n% ^2 }5 k: s{  G+ P  o% U" o3 D+ u
/* Start the clocks */1 K& ], t' w* D; V
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);: \% F: U! m  O1 H' Y7 M
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */& v* c2 M5 A6 K6 v6 _: g# g* h! E* q
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
0 i. {: _5 H/ z8 V* PEDMA3_TRIG_MODE_EVENT);
! M! A. m, m* Y$ |' P/ QEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
3 ]3 ?* ?8 d- ]/ y! NEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
5 G9 B% {9 p7 W+ N) x/ v7 [( L" uMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);, A: D$ U1 u  R( r# Q
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */& y" X8 A1 R' y6 ?
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */+ J, {. d+ O( l1 u2 I) ~" ~7 A
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);4 j2 ~  [% H0 U  y
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);- }9 R0 b; `% P" t
}

# e2 ]! x/ }& w0 H$ Z
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

3 c: T. q$ b' M; D' v$ m; l% ~
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-8-1 13:59 , Processed in 0.044277 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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