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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 11257|回复: 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,( k8 H! X  ^) p1 p/ e
input mcasp_ahclkx,
  i) T0 E3 U* N' ]* Pinput mcasp_aclkx,  |3 A& ]( m# H  e+ T+ F2 ]# j% \: S8 i
input axr0,
$ k  C7 b/ S) g
8 Y. e6 }% e: o, ?# P" J3 N9 Boutput mcasp_afsr,/ y  Y" W3 Q& I. [
output mcasp_ahclkr,
0 v1 \+ a/ C# Y4 ?1 F/ Uoutput mcasp_aclkr,, S2 u, [$ c  a/ s' @" m3 ^, I
output axr1,+ Q2 z) a6 y9 ?* k
assign mcasp_afsr = mcasp_afsx;
; ^8 V) B7 U+ Fassign mcasp_aclkr = mcasp_aclkx;* a! B# M& m5 Q& @% x5 O4 T
assign mcasp_ahclkr = mcasp_ahclkx;
5 L& G7 \& T7 Fassign axr1 = axr0;
+ l0 b1 o4 I  Q' H, s6 H9 a5 I

4 V9 W/ |( f1 @) l
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
9 U8 \$ S  O) E* l! X4 u8 `' S
static void McASPI2SConfigure(void)7 W( |7 ~, x+ \2 F: o- ^# D# b
{# B4 P  l! C- |6 q2 a' S
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
6 Z$ c! `  Y$ Y* Q9 U5 G( v9 j9 AMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */, L! v) ~' c0 ~3 V/ @" q6 |
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
+ U" \4 |- t: ^1 Q" L0 @1 YMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */) ?$ a/ P. e8 j% r. X
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,& B& q6 F: b6 C# Q4 G( v
MCASP_RX_MODE_DMA);
; O1 F) U; \3 q6 }McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,) K$ C7 t9 ^+ d4 P& R; y& t% x/ {8 T+ m
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */* Z8 `$ C( P4 a
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 8 ^7 Y& h$ Y* D  y% i8 K
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
! i% R5 m5 ~2 P. d6 I2 gMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
$ b# V) m, t3 H2 b' x7 \MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */- S! `. L( M5 R4 f/ V$ u- B8 z
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);, o4 m+ W; u% w
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); ( A# O4 E7 a/ i4 G$ s6 I
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
/ W+ E. M, _7 O. }6 k  f0 ?# |, P, B9 \0x00, 0xFF);
/* configure the clock for transmitter */
) a# H6 R9 T. VMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);' n' Y: g9 _/ h( \, I5 }: j
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); $ X9 r) |8 b; g5 @9 l
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,9 Q' B8 ?5 }5 N- s1 E# e/ L' ~
0x00, 0xFF);
! C: {5 `. M8 b) Q4 J0 w3 _2 j0 V
/* Enable synchronization of RX and TX sections */
, _" J/ r- x* E. w6 EMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */3 F: r3 N3 x2 q5 K
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);$ q1 G6 a- |% U/ A" ?5 ~
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*7 L* s* y% w! e# r" a
** Set the serializers, Currently only one serializer is set as
* A( W* w, X) V; I; n' ]3 b4 s+ N** transmitter and one serializer as receiver.
, Q4 M% i) Y8 U: T  I*/9 h9 X- l8 W: S6 l
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);: o+ V0 ]! p( ^/ }3 J7 I7 G
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
' }. {( y, w( C** Configure the McASP pins
/ ^$ f* `. m# G* l2 Y% l** Input - Frame Sync, Clock and Serializer Rx8 _( A2 V' Q+ K7 I4 ?' x
** Output - Serializer Tx is connected to the input of the codec
* i! m3 d: o* T$ u0 S9 G*/
5 q$ M0 S0 A7 I; U' j2 dMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
; F7 t& b- @! dMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));6 v2 x5 s; U1 B) d
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
! s: G& E) K, N8 u& ]| MCASP_PIN_ACLKX& t( [. {9 b; w9 n! s
| MCASP_PIN_AHCLKX
8 G3 B: b  C6 n) J0 I4 V1 N| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
7 g" T0 e9 V1 bMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
. t  g! B' T, X8 r& V| MCASP_TX_CLKFAIL
# [+ j, H, J: l| MCASP_TX_SYNCERROR
" F: K& y: T/ e3 X. x$ e| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
# J& F% Y/ r& \8 o| MCASP_RX_CLKFAIL
# c' u2 j3 D1 |$ W| MCASP_RX_SYNCERROR
, j5 s. r: Q1 U; h: H' k1 V0 @| MCASP_RX_OVERRUN);/ B3 M. U! v4 S+ @) u
}
static void I2SDataTxRxActivate(void)
" X6 f- {" U5 d{
4 ]$ D6 ]3 E2 A$ ^2 H- y/* Start the clocks */
1 o4 J# l2 y' n4 H6 o! ]1 w" JMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);' I0 \/ X5 G8 i: r
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
3 m- t! d4 G6 t: c* v) lEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,7 j9 x1 R) J; K  t2 Y$ S. h* W2 D
EDMA3_TRIG_MODE_EVENT);
; B. ~+ t% N3 j. ZEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, " v; ?& Q$ `6 {8 \8 t
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
; d8 S7 \* l. a: v$ hMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);" {/ Q2 P, ?5 r+ W' k- R" b& ~1 S
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
! e8 r" P1 L7 p. ~5 t, fwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */7 B* r: F$ _/ M3 L
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
) F  Y4 z" T- M( s' L  E' rMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);7 i7 w& m+ I' L$ d
}

  ]! |: K/ ~; {# w: c' b5 i1 s( ]+ l; @
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
$ y% y1 p" x& X7 m3 J5 s( k
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-28 11:36 , Processed in 0.039616 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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