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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9951|回复: 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,5 _* P& J# e6 ], F& O4 ]- [
input mcasp_ahclkx,# _$ D: L: c4 `/ _( i' Y8 p% @
input mcasp_aclkx,
& F3 A0 ~  @1 ]3 F7 Ainput axr0,
: M) N+ H$ Y! o6 z+ r8 ^4 y, U: v5 Z( a8 x7 t
output mcasp_afsr,# s6 @+ U: O* R# R' \
output mcasp_ahclkr,
! t4 x- y5 n, g9 f! ooutput mcasp_aclkr,
- a7 p4 t4 s, P0 }$ Q8 C; Doutput axr1,
) i) Z9 r/ Z4 H" v1 e
assign mcasp_afsr = mcasp_afsx;
+ @8 w% h' G  R, o, h" T; Bassign mcasp_aclkr = mcasp_aclkx;
- q+ l0 o5 P' Z& Y. aassign mcasp_ahclkr = mcasp_ahclkx;2 b5 w; d: c8 Q5 `, W7 r
assign axr1 = axr0;
7 ~* a8 n" v3 z8 f1 M; A
- R- a3 L, h6 M
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
/ f2 g, \7 ^, z; ~. x
static void McASPI2SConfigure(void)
$ Y! `; s; N5 g: k' x$ M! G{
" g4 i7 ]6 A- b) x: E; v) Y' cMcASPRxReset(SOC_MCASP_0_CTRL_REGS);7 ?  t: `' i2 Q6 M
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
+ T; t$ s( q: d) tMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);" V3 ^) T/ s# L5 h. r9 i5 b
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */6 B+ T2 ]& C6 g, \. C, I" m6 a
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
; d8 f. W9 V/ y% B! H" aMCASP_RX_MODE_DMA);3 A. U: K$ ~0 H2 _
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,! w: I& ]7 _, n! l8 m7 C
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
( ]6 Q6 o3 ~0 o& C1 K& dMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
2 n* V! W; U& C; t$ QMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
: K% j# j; v8 N8 H$ G3 O$ cMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 8 D% h4 i8 G2 B, J9 z' W
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */5 y( N+ U& ^: {+ L" i# E, J9 \; O
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
  J3 ]3 v( }: NMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
' Y: l/ V  k2 e1 MMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
- o5 M6 B0 e. s1 O8 d% v% m1 z2 U0x00, 0xFF);
/* configure the clock for transmitter */
- u; S; b) t* Z+ P/ OMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
# {2 d- k  h. x7 y1 A! mMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); . u7 r! R" k" m4 |
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,$ P3 |/ p& O: h" W, k0 ^- }. V
0x00, 0xFF);
; v! i8 g& k- \: f# o: e) D# e3 S. w* f* Q
/* Enable synchronization of RX and TX sections */
2 E2 Z* K/ A1 T2 \; K% i( y. H% ?& hMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */& w1 `2 [+ i1 V8 }
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);6 F& ~& R2 |3 X2 e. \
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
* W9 W; g1 d$ W. M3 |1 f3 \# `4 ?** Set the serializers, Currently only one serializer is set as$ p& Q* b0 d4 |( K: s
** transmitter and one serializer as receiver.
) v! R; P, B4 Z$ j( ]! {*// m3 }  k& N4 M& f0 i
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
/ `! H8 K. p7 `1 d, S& G8 D8 ZMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*5 U/ N" o  D( c- v& q2 W
** Configure the McASP pins
3 `, E) n3 X8 a' u' c2 Z** Input - Frame Sync, Clock and Serializer Rx
+ f. ~# \4 X  V# [5 t** Output - Serializer Tx is connected to the input of the codec 7 t$ D3 R8 b& K, ?& F8 T2 W% q" G: l
*/
: o6 {2 j8 ^5 y$ D( t9 mMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);$ Y* ]$ s9 C/ A: t1 S' t
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));2 W! O+ B" k0 a9 \2 n
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX3 S  \6 X* d- k# w, |% [9 h
| MCASP_PIN_ACLKX3 h+ ^+ H& U1 ]7 e5 G; V/ a9 _3 E
| MCASP_PIN_AHCLKX+ i; e9 k7 K7 w2 ]' A
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
7 a$ w8 ]/ P+ I, k8 }& ~McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR # L0 p( J2 e5 ~7 P5 s5 c8 J# ^
| MCASP_TX_CLKFAIL
+ R1 m7 Q9 I/ K' o/ e| MCASP_TX_SYNCERROR# ?" ?- u, f+ \; o6 H( G; J) Z6 H
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
; n6 i, z# U+ d8 O, m5 |) H: b| MCASP_RX_CLKFAIL6 y5 e4 E4 M+ K, {' D
| MCASP_RX_SYNCERROR
7 e/ z) b7 w; R5 L| MCASP_RX_OVERRUN);3 X8 s" d" N& o4 Y3 Z
}
static void I2SDataTxRxActivate(void)4 M+ r1 ~: Q. s) z
{
7 E9 O% ?- A  F# j+ A) W/* Start the clocks */' H7 V0 D* x7 a8 R* ~- h8 G
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);/ h" y  i7 m! C8 R7 R
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */" a" {+ j% t8 e$ H) o
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
7 c, {8 l3 A5 \" ]! G8 Y) ZEDMA3_TRIG_MODE_EVENT);
& Y* f4 {2 }/ F9 yEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, + A& K3 a# e0 E" t1 H1 k+ w
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
; |) d& N& K9 \. i( BMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
$ F) p$ M. Z( P2 _: Z3 ^2 GMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */. o  s. f# w4 N2 r
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */, n  H: d# e& N; g# o2 n' l5 |2 l- a8 t
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
0 L* I1 }$ k3 Z8 ?1 j1 T" ^McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
" ~1 U9 k2 ]. V}
# n* X( x! X; Z( D/ F
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

8 D: U+ }9 ~& D  ?7 l) ^' g( S
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-25 02:53 , Processed in 0.041441 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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