MCASP自环配置。 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1213

积分

金牌会员

Rank: 6Rank: 6

积分
1213
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,( v2 W% M" c  n1 v- y
input mcasp_ahclkx,* A3 ?: e- L2 m3 Y- K* I  z) J2 y. j* e
input mcasp_aclkx,
- u0 R/ c: m' u: \6 rinput axr0,3 q( E' w5 I* v# m3 d

4 L& y3 Y7 V; B8 noutput mcasp_afsr," b) q; C& u; N, p- M
output mcasp_ahclkr,
, D2 E+ e/ ^0 Ooutput mcasp_aclkr,
# L' g. ~9 r( r0 C% `6 q! Boutput axr1,5 V* J. n' I5 J. Q4 I3 `
assign mcasp_afsr = mcasp_afsx;5 s; [( [7 X0 ^2 A' [
assign mcasp_aclkr = mcasp_aclkx;( W9 q4 ~. C4 N+ P  ^  _
assign mcasp_ahclkr = mcasp_ahclkx;
  t5 Q  X$ s5 G' n$ m# R3 Fassign axr1 = axr0;
8 C- Q0 V5 v+ b$ N- y$ R
. D% ~4 y) y9 g2 W7 T  o
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
4 n/ Z6 r2 C2 @- c1 T
static void McASPI2SConfigure(void)
3 Z% }, \# J9 @8 r! t6 X" R{
0 E$ E& S! W5 A# E6 a+ N4 W4 kMcASPRxReset(SOC_MCASP_0_CTRL_REGS);' L1 B) v/ I+ Y" u1 [: C
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
& |( S4 y, \1 i3 _; tMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
1 B, Y5 G0 c* O% }) JMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */4 _1 L& f( G" e' Q
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,) S8 |; \9 I( f: z% n$ W2 f$ m
MCASP_RX_MODE_DMA);
. `4 p5 s9 {& T3 XMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,# H, z5 A3 m4 D; H8 k1 c
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */! R# U8 e  g, Q6 o4 ]
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, $ I4 I9 s- s' Q' O+ V, ~2 N
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
# m5 N$ p% _( C* I" RMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
+ ^+ c' B2 K4 @% H& s$ T  XMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
; x8 v4 @- t7 w) RMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
. m( `4 G3 e' c' S5 g- K; ~: ^2 J+ ]McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
+ q6 z5 T9 Y2 u/ vMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,6 |/ D& V4 l$ h- L9 v
0x00, 0xFF);
/* configure the clock for transmitter */
5 ~: u# M" s" u* G$ p( N* V0 g" uMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
; i: i& l$ J. v1 xMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
9 H: q* I9 \; D$ y" r+ LMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,1 w: b: `  o; A5 p% L+ K
0x00, 0xFF);
3 x6 j4 l6 b" p1 n. m3 q. e/ {* T! f; @7 c, b9 g3 A# D
/* Enable synchronization of RX and TX sections */ ' ^1 p0 ?, A( l) N' N* ^% a& I
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */; v/ Q. W: V4 _1 y( N; [2 p
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);7 j8 u% [' Y% ^8 c) C& v
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*' ^0 i% [" s1 u+ ~  N- W0 }
** Set the serializers, Currently only one serializer is set as
1 n. V' e' G) i9 H. d+ m( l3 d. m4 v** transmitter and one serializer as receiver.
/ Z6 }+ ~4 d1 Y+ s*/' D' e! b2 W8 i2 o% O2 S6 a& n9 C
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
9 z- ~; Q* o: C8 q9 EMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*1 d/ w" i/ ~- A  n- T% }8 Q8 F
** Configure the McASP pins : c! Z+ Z+ G4 G
** Input - Frame Sync, Clock and Serializer Rx
9 o$ a+ ?+ L3 Z" S) l/ s** Output - Serializer Tx is connected to the input of the codec
- q9 b& k7 Z2 r- g' C*/
2 O& _6 D! K; ?1 y& }: q' |) NMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);$ D& A, U' |5 a% l- F3 L
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));7 V* r3 ]: Z' h: |, s
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX4 p' m+ I/ ]2 A  M. \' d( M
| MCASP_PIN_ACLKX
; y+ v" B" w: s  g3 g6 t| MCASP_PIN_AHCLKX* e% }1 Q5 |: {, z
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */. x0 g7 `0 F0 M6 J9 G) a
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR % d( y7 u) ^5 t! J1 V2 v4 i
| MCASP_TX_CLKFAIL
: V; z+ P' ?& C" V  `) g| MCASP_TX_SYNCERROR- ^6 M9 j* R$ H( T" B
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR : y7 `. o: X9 G$ [- j5 d
| MCASP_RX_CLKFAIL; n( F, ^9 I' ]
| MCASP_RX_SYNCERROR
3 p, Z, X' X* O0 \" p| MCASP_RX_OVERRUN);; W7 K9 A! K8 b1 S7 k- q) q& I( X
}
static void I2SDataTxRxActivate(void)1 A0 q1 w! z. {% p5 U9 r& ?( @+ k
{
# U% l' q/ v4 k" I  J/* Start the clocks */
2 _$ E9 v. y; c- }. Y; p, lMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);2 L/ }8 F8 q7 B  h: ~* \
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
0 W; k2 e( N& m5 m5 O9 MEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
/ I9 q  ?$ O8 Z$ Z! \6 k0 [EDMA3_TRIG_MODE_EVENT);$ [( e+ i5 f% h% p# @* o& h
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 9 S: d* K( b1 z
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
9 O) T; g+ S, A7 N6 X! YMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);. g. r' E2 K- Q2 ^: t8 q
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
9 O- k3 _8 q% `' S0 X1 \. Swhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
" v8 i  k9 P5 ?# u9 T( R) DMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);* Y' D0 L" @, J; I: K  ^
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);& k9 ^( a! o# E: R0 O
}

0 Q0 r7 \: o9 k- P8 V
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

: L% b9 D6 a6 D" h& k
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-31 19:39 , Processed in 0.036425 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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