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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1216

积分

金牌会员

Rank: 6Rank: 6

积分
1216
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,1 V  P- _6 T' R0 o5 F
input mcasp_ahclkx,% G8 w# O; `- b# Q  _$ Y
input mcasp_aclkx,
, B( e7 A$ q* h$ [, r# E6 Tinput axr0,) A, T6 I" ~: R$ \$ J# F
  b0 E8 j1 r3 G8 y1 e. p
output mcasp_afsr,0 a3 G( c& m7 m( j6 U9 B2 z
output mcasp_ahclkr,
  g9 r: ]/ o% q5 Z. D2 Aoutput mcasp_aclkr,% ?9 i! G* E/ l* ]- w: n; m
output axr1,) N5 v  {3 ]3 d: |& N: H+ y* ]
assign mcasp_afsr = mcasp_afsx;
, Q- A/ ]6 Y4 n" w( fassign mcasp_aclkr = mcasp_aclkx;
$ {/ f. X; s! C: X. Eassign mcasp_ahclkr = mcasp_ahclkx;: `& ]# i% J* y  X7 l
assign axr1 = axr0;
5 S0 Z" E. y% H

) v: b0 V, [/ B* g  w
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
# C* ?/ X) {6 b4 r
static void McASPI2SConfigure(void)
+ F3 U. i0 O5 H{
. F8 j, o+ _/ V, MMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
( F& H' h5 }( d8 u! hMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
5 A) f$ ]& K* E: r8 A2 qMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);' l9 w0 A5 s4 r/ O
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
1 N3 b3 f' K7 s- pMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
5 t$ T, T6 _6 _* `. n7 nMCASP_RX_MODE_DMA);
9 F6 v& |* |; t' I- YMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
6 G5 d4 G1 t" X) I9 jMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
$ f2 }3 U2 T+ \8 z( _& DMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, , R% _; \$ y3 Q; B& w
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);8 _% D5 ~4 f8 i5 c7 ]6 ?/ j
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, . b8 |7 _9 S' H
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */+ S( e% U( P' o
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);5 `  n9 s1 R: P) K: w; u. L0 A; w
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
) R: x6 G' O  k4 @$ g/ p) YMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
- C7 B: l: l7 s/ h( @. F( p/ I/ ?0x00, 0xFF);
/* configure the clock for transmitter */
) w6 `; l8 ~3 A3 C- MMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);' S- P1 @" Y( k/ E2 i' n) o% Z& H
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); , H# K' o# U  ^# B1 R
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
. x  C1 Z% K. B; @' x2 l/ L% p, w0x00, 0xFF);
/ ?# a4 }# z. b9 c6 |; S8 z: b4 s. u$ m* Y, b5 G2 }
/* Enable synchronization of RX and TX sections */
& r+ N. S4 `$ X" P; w5 G( b5 ?' H) {McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */" _* Q3 e8 o, E* N9 D, M
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);' B% L7 k5 }1 B1 Y
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*! Y; C9 S/ W$ |
** Set the serializers, Currently only one serializer is set as5 s% e& l* R6 w8 ^4 l
** transmitter and one serializer as receiver.) T$ U& Z9 @1 K! g$ W( a' u! g; h9 U
*/( W+ I$ w# |0 s/ |( n% _
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
3 O! h8 _( u  T0 D$ i3 U2 \: VMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*, N- k7 t/ M0 P1 |! ~' M4 @
** Configure the McASP pins
+ q: \, D4 R8 s3 R" j** Input - Frame Sync, Clock and Serializer Rx: x* z; g/ v' |  U( S+ `( F
** Output - Serializer Tx is connected to the input of the codec ) r! g. l/ R' p8 m+ b
*/: K2 f0 f# a% b
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);3 u1 {9 ~5 G: l! ~9 v! y* e
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
  B1 w5 y% V" l9 Q  H2 ~& [/ MMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX. L6 `3 y: l6 |/ ?$ u/ v0 s
| MCASP_PIN_ACLKX9 ^- d9 Y4 A* R, W  l4 x7 A4 e; K
| MCASP_PIN_AHCLKX3 Q: g7 k6 O$ {# i4 E. @+ c
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
9 H. {' m* F  W. wMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
( v( I$ C( I& Z. ~0 F6 t4 }| MCASP_TX_CLKFAIL % v3 ~' c5 y8 Q
| MCASP_TX_SYNCERROR
* ?# E% b( v! n0 k| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
+ O& Q% t4 ?4 N6 Y) h# M" x8 J| MCASP_RX_CLKFAIL. R7 o  n5 A: `  w, m
| MCASP_RX_SYNCERROR - n) l0 E* C. m: [# }
| MCASP_RX_OVERRUN);$ {; }1 C' z3 W" w- k. V
}
static void I2SDataTxRxActivate(void)
  w, A7 l! M8 Y3 s! |: v: K{
9 d2 ~2 Q5 o! w" \' n- r. F6 r+ ^/* Start the clocks */+ C+ y4 |! V/ w5 h/ B; X
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
5 f) Y* k- G0 Q9 IMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
$ z9 s9 B8 A! b+ t! G- b5 Q. NEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
. W) ?/ U; \6 c2 hEDMA3_TRIG_MODE_EVENT);
: N, s/ T5 Y0 ~EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 7 l! |4 S7 W- \! c; n# C5 k$ e" V
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
& P, t# Q2 `: z# w8 ]9 hMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);0 U  }  D. g4 C9 o" P+ c1 _
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
& Y+ C" y. Y0 o1 ~- Ewhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
" N! Q9 C* s& t9 l2 D% BMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
* k0 }4 }6 T" y; w5 l% z% c8 lMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);# c% Q$ h& @# i$ ^9 R% [
}
3 ]& ~; x, `& C
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

  `4 K/ ?" {6 ^. @7 E$ L4 u
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-4-25 09:44 , Processed in 0.043160 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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