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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10270|回复: 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,
$ V; M/ V; M$ j$ U3 K7 l+ X/ {# c1 ^# Vinput mcasp_ahclkx,4 _6 ], R. S2 {8 n5 y
input mcasp_aclkx,/ s# r! @7 ?. `) Q
input axr0,) E. L" e8 T1 y! t( `: i  q; z
6 c( [; h; B5 u3 y! V2 Q: d6 E1 ^
output mcasp_afsr,. B3 m- e- q5 G) a/ q) R
output mcasp_ahclkr,
7 \: j% C" E1 R9 R* f% L( Woutput mcasp_aclkr,1 b0 @1 S0 }% {: A& K& G
output axr1,
2 Z# }- U- B& }1 U  A$ W
assign mcasp_afsr = mcasp_afsx;# n" i4 y0 P3 a) }' o- z9 v! }  L( P
assign mcasp_aclkr = mcasp_aclkx;
- z% M! |8 q9 Qassign mcasp_ahclkr = mcasp_ahclkx;
5 j1 N# o' G. ^7 Q' A2 F9 z  Wassign axr1 = axr0;
1 U$ M1 U; d1 ]+ ?; O7 w& |

9 ?9 q, w. x7 N  j
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

8 p# f: ^0 J# W
static void McASPI2SConfigure(void)$ O/ g% ?- \: o! X# k: _
{  C& i+ l% d9 @: p/ V3 o3 k
McASPRxReset(SOC_MCASP_0_CTRL_REGS);( ]- c! C- W6 A: a9 J
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */& I+ h7 I% Y9 U  P) Z6 y
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);; D; X- F7 \, f6 ^$ h
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */9 Y3 R) w8 M' l, C0 E
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
1 m' _9 T+ t( L3 s; Z. VMCASP_RX_MODE_DMA);
. v) X! S2 V+ zMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,7 M$ [- }9 S, F/ y
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
  }, B* S- k; j+ W6 ?/ g" R/ gMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 3 r/ A7 j7 a! z* l% L
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);) s+ M, u5 ~5 n9 J2 J& r; z! D, B
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
& k* Z4 u/ I) rMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
) q2 i4 m4 Y" FMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);8 N6 \# W; C$ b
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
. b0 e0 m' R/ T& @' W+ QMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
; ^5 o5 o4 S, ~; O& q0x00, 0xFF);
/* configure the clock for transmitter */3 D" a; O" K- v% M8 i) l
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);" N3 y9 _0 [( y% a
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); 2 c2 w& i! _; I# L0 `: w1 J
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
: j# f9 R8 v/ w5 H) U$ L0x00, 0xFF);
2 G: O4 f8 l. N, c& Q) Y: @) z9 E+ \
; A6 N+ ?2 v% i- ]/* Enable synchronization of RX and TX sections */ / P. l% Y7 ?6 r( b' D6 g$ }
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
1 p, v% ]5 M! U% {' X+ [McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);5 Z% ~! J) V! r+ @; {% D
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*5 ^/ L9 E( [5 U* L* K
** Set the serializers, Currently only one serializer is set as1 z3 E7 I# p% z; v
** transmitter and one serializer as receiver.
- y/ I& |, [/ c: l; K- N; u9 Q  j*/
, X+ }' T5 G8 GMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
/ R0 Q5 L% @: O. o# h. ^3 J7 o# tMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
! ?8 }" x! D8 Y$ ~3 ?( I& G0 [) k** Configure the McASP pins * s* g6 v" y! e% ^; @) ?! D, {
** Input - Frame Sync, Clock and Serializer Rx* U, b& Y, M; S" n8 V+ C
** Output - Serializer Tx is connected to the input of the codec
  M, V$ n7 A0 O8 M! \; s7 R* Z*/; k  U. z* {% v7 _3 m+ F1 r
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
) k0 t9 }5 j4 o2 l6 B! f7 QMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
$ I% y6 u* [- }6 u' CMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
, [7 E/ ~6 S9 U: u, u  }6 |" o' P7 P| MCASP_PIN_ACLKX- A1 q" Z0 S. L; m0 {
| MCASP_PIN_AHCLKX
5 o# Q  \/ |2 }- j+ `+ h5 C+ M' f4 E| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */+ ?# P7 }: o( |, X" }0 d
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR - H. f: b& \9 d) W
| MCASP_TX_CLKFAIL , U  u" t9 @- y8 K1 R
| MCASP_TX_SYNCERROR! q/ ~% [2 B' _3 u' X
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR # t; X% u+ n  r* F2 f+ P$ t; B
| MCASP_RX_CLKFAIL! R6 \" w& Q; c7 R1 ?* i, f/ R5 [) T
| MCASP_RX_SYNCERROR
, ~  j# M1 V8 C- A6 U& ]| MCASP_RX_OVERRUN);+ ?# Y0 L$ Z. {$ m  c9 u' a
}
static void I2SDataTxRxActivate(void)
# @& k- V' g$ a" ~  \* P$ S& T+ e{
. l0 i& p* p& }( s# x/* Start the clocks */& C- `/ W' k- T) o
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
0 d. E( l6 c' r+ X- z; \# H& m! D8 ]McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */* b' [7 s- n, Z1 E, o* e
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
% {7 K4 b; R9 @7 Y4 F0 M2 c* qEDMA3_TRIG_MODE_EVENT);' h/ b4 q5 R( C- Y6 `. U
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, $ f' u" Y3 I4 c7 I& k7 R5 B
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */- m7 E5 n0 g' S9 R) e" h
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);" {6 [  d8 f4 D( }# M
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */' O: _; s8 s! W9 ~
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
4 d0 ]0 c; x2 P7 w9 v$ a- pMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);9 S& K' K4 ~6 b. e6 n1 H$ f
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
3 `# W$ v3 g9 d4 L# m2 w0 ^}
0 I3 N; [! l% n, ~
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

% k0 u: @4 m) D2 q8 N9 p, c& ]2 K
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-2 10:11 , Processed in 0.039879 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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