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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10532|回复: 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,1 z+ I2 l) x: s: a. i
input mcasp_ahclkx,
" P4 W' y& ]3 S2 k9 E5 Linput mcasp_aclkx,
: R9 e' Q1 A6 M* ?3 n- y: ]input axr0,2 e5 A# c& m  `- B' K5 W
# z  X) J$ \0 Y0 h5 G6 ]0 ^
output mcasp_afsr,, X3 \, C" z# i
output mcasp_ahclkr,- E' e% K, `( e3 K
output mcasp_aclkr,
$ E9 U) D. W8 Z  h! Doutput axr1,8 D- j3 ]- {* `! T" y# q4 n
assign mcasp_afsr = mcasp_afsx;! N8 g* O" |6 i* ]
assign mcasp_aclkr = mcasp_aclkx;
7 [9 r: R& ~2 d* U9 L: x' vassign mcasp_ahclkr = mcasp_ahclkx;" [# O( M/ N  @: c1 h5 J
assign axr1 = axr0;

- f: A9 X8 n. F1 s
) |. m$ c" R8 U+ B7 a
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
  p# J3 P& ?/ l& V1 x  J- j  t
static void McASPI2SConfigure(void)( U3 R0 o  ?& O9 [' G
{2 A, d' a* H  u
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
) D: k# v, V3 L- hMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
( _& V6 t; [9 j8 rMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
0 X9 G, p) s, [+ o; q! m: cMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */4 ?! Y$ U9 p  L3 D
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
) e& g3 ?5 l6 t% HMCASP_RX_MODE_DMA);7 O; M  s+ r: @2 ]! G: x, X( z+ g8 o# H
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,  J: I( H: T( g6 N9 u% |5 f
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */1 l1 Q0 d& n) J7 F7 y3 ^* x; O- U/ \
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
. Q1 E, Z7 F; r: X  C2 M! i3 YMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);4 O) ?. U  K) A0 q) v4 `
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 9 W( A( }: ~6 Q. J* s8 O
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
; N+ M+ \7 d# I* FMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
7 F& d& _- X% q6 z5 e8 oMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); + f3 }  V# u8 q1 _- _3 f9 \% x
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
& x& Y+ Q# B2 k0 d/ Y7 D$ K- o0x00, 0xFF);
/* configure the clock for transmitter */+ {" u, j. m$ I) R4 H! L! L  D5 h3 R
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
1 J6 u' j# R& o' u3 IMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); $ c7 W  V5 M& l; @7 [
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,8 B! A3 S% Y& x, d. I/ D" r
0x00, 0xFF);
7 R( A4 q4 F9 }$ Q
- I9 V, X0 y; n6 X5 n3 M/* Enable synchronization of RX and TX sections */ - c! C4 I* v& e
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */" \0 `# O) w9 v; C4 l* }
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
& D& o0 W9 r7 @! T! f5 DMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
( P+ [+ ^( O+ t9 F2 u9 [$ }** Set the serializers, Currently only one serializer is set as
* t6 {" }' T: @8 C1 m3 Z** transmitter and one serializer as receiver.# K0 `+ K0 P: P1 [; l6 h3 J
*/
) W9 F) y9 f+ y' E7 K' ]) W3 @! \& WMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);2 U3 d8 Y0 x7 ~4 Y: Y
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
) ^3 Q5 j. o% _3 R% ^8 _** Configure the McASP pins 9 P0 R4 v, ?; ~- k
** Input - Frame Sync, Clock and Serializer Rx
' V; t. g( `3 P& P0 i** Output - Serializer Tx is connected to the input of the codec
; G* w: S" ]* n  Y0 d*/
7 E+ O  i: y$ l% [: C+ fMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);' {5 Z  Q& z* V( K& k
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
% Y+ M2 A& j1 P. hMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
5 W3 A" _  _9 K| MCASP_PIN_ACLKX
9 O, D# l. c3 W) E8 _- c& B| MCASP_PIN_AHCLKX
9 j: V2 h: q4 z& G! ?! L| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
# t$ m2 @6 c0 j2 r( HMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR % @! ~5 e6 {, p* [4 J" P: d( q
| MCASP_TX_CLKFAIL 4 W6 o, Y# T8 X; z/ `+ a( X8 A
| MCASP_TX_SYNCERROR( v/ W! m; e7 A6 `
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
9 F# l+ q3 n9 || MCASP_RX_CLKFAIL
9 n5 x+ M6 U3 ]" G+ S/ ~: M) w| MCASP_RX_SYNCERROR   t& [6 Q+ E- z* B; C: N
| MCASP_RX_OVERRUN);
$ x3 g  t* I1 n7 x7 Y  Y: S. L}
static void I2SDataTxRxActivate(void)$ k7 m5 I) d, I5 F) {: o
{: y6 @% ^% Y- C
/* Start the clocks */
; j$ o5 Z, v( \, x/ ^; YMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
) ^& V# j) J3 d( tMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
/ f0 W3 U$ c7 b2 `& P# h* MEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,, |: z5 i& q' a  S
EDMA3_TRIG_MODE_EVENT);
; X8 R3 U( a0 r6 ^  LEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
5 U( p8 T' {; G: s: I0 YEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
, b- g- G% w1 a  OMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);2 \- o4 W! x( t+ I7 z
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
1 @, X2 ~* u+ N: ^6 S: Y& kwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
  L. S, P5 G+ x# i# `2 L5 a7 gMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
  w0 }( d: k- C) A( Y+ {7 [9 \McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
+ T3 e3 X7 R/ O& D7 H7 X; l}

* n: H% K6 Y, F1 {3 ?6 c: G
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

8 S, X' S8 Q  P1 x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-9 05:20 , Processed in 0.040221 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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