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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12216|回复: 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,
2 v0 O9 h/ Q3 b4 Dinput mcasp_ahclkx,
" \  Y1 W& d6 Yinput mcasp_aclkx,# ]5 n3 N3 P& D! E+ i: w; U6 f
input axr0,
% q6 D& y) U8 x( U7 |4 X, |$ }% s: M! r- c$ ^+ b' U* \) w7 ]1 s
output mcasp_afsr,8 q7 W1 [7 |& v
output mcasp_ahclkr,
; v7 V/ w# y. Routput mcasp_aclkr,
' t. X, c% l9 i) o. I7 moutput axr1,: E' |- _& O# i) ^
assign mcasp_afsr = mcasp_afsx;. v* U6 J1 ~. S/ J; A7 D2 r
assign mcasp_aclkr = mcasp_aclkx;9 e" Q6 {' N7 F
assign mcasp_ahclkr = mcasp_ahclkx;. Q9 S, X( ~9 Y
assign axr1 = axr0;
7 l. ]% |# q& p6 r5 H

5 ?/ U  P6 k( P: R) Q
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
$ ?3 q0 n4 U, Q% ^' z8 h9 u  P1 d
static void McASPI2SConfigure(void)
+ I% l4 e6 }2 r7 p{7 @) g0 g" b+ H( Y
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
% w2 B6 p$ z: J. |5 b$ dMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */) |* T+ [2 z6 L2 C1 V$ `0 Q
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);: M, \5 v1 v& ?
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
% [. a( M/ n8 u& B4 lMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
5 g; U! d* d, P( wMCASP_RX_MODE_DMA);
3 i8 h) S* v  h! a+ jMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE," W( N' D# [( _( v
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
" Y2 H: g0 @! dMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
: |, o0 p8 @3 Q3 N0 Y, l0 g$ o: mMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);: a9 c$ A( h3 e5 j
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
/ d; I! W( D5 w- eMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */- ^4 L* I% [) c% u- C$ I: n
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
& E" m0 F1 ^4 q8 X) \0 CMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); # J" f5 N3 T# [0 \: X3 n
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
0 j+ H4 ?) L6 r0x00, 0xFF);
/* configure the clock for transmitter */
$ M2 q. e8 Z2 }/ L# s8 sMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
7 J0 N' A9 p! g& oMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); + N; C, M; {  E, E
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,1 i! P- T/ @, m7 N& T
0x00, 0xFF);
4 r# E3 r9 {/ l
* a* m: I* l- x: b" `/* Enable synchronization of RX and TX sections */
( w8 k' Z( }: X' ?" z' }" SMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
" v  W: d* c5 t8 c) @* LMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
: z  w( ~  c: H, z: qMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
; y7 O' ^8 T2 r2 c# m8 E) J; \% `** Set the serializers, Currently only one serializer is set as4 C' b5 w6 i8 H* x6 K# t1 `  ?8 R
** transmitter and one serializer as receiver.0 n" l: a) c; D4 s# y* H
*/
  J# |/ h+ }" Y9 K. V- j! ?McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);4 K" k& ^/ M: g* K: b+ ^7 y3 O
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
( t" i) y6 Z5 F- }) v/ l** Configure the McASP pins
8 M, R( S; c. b5 ]7 O** Input - Frame Sync, Clock and Serializer Rx% D! b: E; p' E' r! W
** Output - Serializer Tx is connected to the input of the codec . K) R- `) M1 G2 @6 x$ f* ?
*/
8 X! I- t9 J7 H* B# LMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
6 A+ R4 h7 m% c/ T, X- }# FMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));! B9 w3 A: x& N! M  z$ o* `0 U8 a
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
) S! f1 @6 K% A7 |$ @' x6 w| MCASP_PIN_ACLKX" z$ ~3 E. L, r. A, \
| MCASP_PIN_AHCLKX
- Y0 w7 Z/ k; C  X' E| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
0 w, z. L" q/ e0 H1 E6 b1 bMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR ; F( M. F- A8 Y8 T) p1 D; Q3 v
| MCASP_TX_CLKFAIL 4 z3 t* |! F3 r6 v/ I
| MCASP_TX_SYNCERROR
/ M, z, _* L6 B, P% @: e| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
0 N( c) L* b; y0 Z| MCASP_RX_CLKFAIL. D4 C9 U5 {  G( L' w5 _2 Z
| MCASP_RX_SYNCERROR
6 Y5 u0 L7 ^2 d5 N5 A& `% r| MCASP_RX_OVERRUN);
+ s5 R. U( k2 C* i; H+ G}
static void I2SDataTxRxActivate(void)% A% H1 y0 ~' s/ w5 W
{, u! d7 `" _9 `4 I4 ~
/* Start the clocks */
# |0 n3 m4 M2 U, m' ?/ `McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
3 y; q+ Q6 K) R9 n; M% H( kMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */, Y" |- |0 B! B' H9 i
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,( E6 A1 d) c3 A1 s5 i  C
EDMA3_TRIG_MODE_EVENT);: F9 i5 b2 z* A) t- @( J
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
, V* w$ J- k0 W  YEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
7 m6 z' ^% E. J3 \3 g+ [0 Z. [+ CMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
" U, x) z1 W  q# w. d* Q- C% VMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */4 H. |. \: d, Y, |1 d
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */( ?; b! a6 `# z# r2 ^
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
+ \( F6 @" p5 L* H. @McASPTxEnable(SOC_MCASP_0_CTRL_REGS);* r- X$ U- ?* U9 L: p  c
}

9 y6 r1 |) g, z& i2 y" _% g' L
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
" H9 o! R; M4 h* }% w+ _
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-4-1 17:52 , Processed in 0.043116 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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