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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 11127|回复: 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,3 [, M6 A# T+ l. F+ S6 x) N9 H
input mcasp_ahclkx,
% o1 t& x0 E" @4 o. F$ uinput mcasp_aclkx,9 u/ O& P. L4 Z
input axr0,! i/ f  C2 c% r# v
! L1 f% I5 V0 _8 ?
output mcasp_afsr,
+ r1 P  _) q" _1 N" Y1 Voutput mcasp_ahclkr,& @  W- r7 T1 c- {( S2 e. w) x" H
output mcasp_aclkr,/ X  Q9 P' \3 F3 G4 N% f( B9 T. ~
output axr1,) I7 d7 K8 i( |  \% X
assign mcasp_afsr = mcasp_afsx;7 G! m, T; p. u. W5 ]& ]
assign mcasp_aclkr = mcasp_aclkx;' Q5 @1 u% v) {. Z, A
assign mcasp_ahclkr = mcasp_ahclkx;6 E- I$ g6 H1 f7 @2 I
assign axr1 = axr0;
5 n, B2 h6 W; N! g1 X

8 t/ k* x5 ?( U6 I
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

7 A2 ?+ l3 r, ?+ f
static void McASPI2SConfigure(void)6 ^  k! P  Z* M  k$ y
{
8 e( r$ K* n+ T4 I, @McASPRxReset(SOC_MCASP_0_CTRL_REGS);
0 J4 d8 |5 d) w( o! VMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
4 x% b5 y' C0 F, p; O8 z+ GMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);1 ]5 }4 a* Q. j  y
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
9 Y6 i6 |  }# y- G" |4 E( _; Y- }McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
: a8 [5 R  C- p# ?, kMCASP_RX_MODE_DMA);- T8 d: Z: J# ~
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,8 e( ~6 |3 @3 g
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */7 J2 H4 t, x. h( Z8 _3 Z8 b
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
- H& y) R5 y! _3 b( CMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);$ H- \$ o4 v( e' s
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, & y5 N) y6 \: ?- q, {# Z! w; X
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */% w  Y5 a$ Y, j- k9 j" x) P
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);4 x4 c& A8 T6 ~4 f" @5 a
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
3 v" z  W. v. Z: oMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,4 u4 C. N! I7 ]" J4 J# [
0x00, 0xFF);
/* configure the clock for transmitter *// w* `$ {/ R% @
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);4 Y1 O3 }. n% E8 j6 B
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); 5 e1 }+ o. d( K+ r8 Q7 ^
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
# z. ~- n2 O* X8 r' T" [0x00, 0xFF);
7 t! d* E9 e4 N! k0 F
4 S8 l; n; A. C$ k/* Enable synchronization of RX and TX sections */
$ v$ k% t& ^0 r: mMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */' ?5 \7 N0 u9 P" C! h4 y7 i) ]( B
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);8 q& j( R  B* M' L  x+ J
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
5 u$ U5 J: y8 o7 R0 [/ S** Set the serializers, Currently only one serializer is set as
+ s* p: M: I9 N+ ?** transmitter and one serializer as receiver.
& P# @* ?  Y& u9 |. W*/
! `7 b- M& [* @2 X, U" mMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
* c1 v: C) `2 A4 V/ vMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
9 U9 o9 B& ~! T0 c' N/ O/ N/ a** Configure the McASP pins
! o' B* Q& b) e. K+ E** Input - Frame Sync, Clock and Serializer Rx4 z0 R" y+ M5 [! M, B
** Output - Serializer Tx is connected to the input of the codec
) l3 @) _5 j+ v9 t4 v  i- M*/
9 _  i1 ?6 A# [, T) A) [- pMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);' ?& x: }7 M, e; x# R
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));) y$ m$ N+ B2 a' `) B. R
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
; \0 X  P; c! l; ^| MCASP_PIN_ACLKX
( G' ^5 \0 q9 l7 M( y2 G  Z| MCASP_PIN_AHCLKX9 z4 A4 h6 m! H+ l! i
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */9 u6 {$ K" e+ w1 A0 g9 g
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
/ T3 M5 p: _. [& Z6 q| MCASP_TX_CLKFAIL ( D+ n6 a' ?! Q- i; D
| MCASP_TX_SYNCERROR
: [+ L6 M4 U: O) n% i| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR ! k3 I+ z- I% V1 S: J4 H. \) p/ B
| MCASP_RX_CLKFAIL
" G4 a% \  G3 Q# K| MCASP_RX_SYNCERROR - `% Y, h  i& N6 r, p4 p! T' M1 ^: D
| MCASP_RX_OVERRUN);
5 Y4 r4 \3 _7 f0 R: ~( z" _2 Y}
static void I2SDataTxRxActivate(void)
; Y2 q- w" a" D' s% y, \. L% t, C& Q{
) X0 u9 N8 [( E8 Q4 M' U1 q/* Start the clocks */$ S& d$ U! Z: B2 F: `
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);4 ?3 S7 u! x* c$ L: Y4 W% Y4 A/ ^
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */7 E+ s4 P) v. Z3 w; R
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
5 |$ r/ ]# q" U1 J+ z( u; ZEDMA3_TRIG_MODE_EVENT);
! ~/ I& u' B; s* T; |EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, : s2 D. |0 v2 R. z9 `, E
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */  ?- L$ t% Y2 |
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);+ f; B3 i% G8 q. ]" S. g" W
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
; i* ]9 t7 D, S$ L9 L, S4 P6 p1 Kwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */3 X. ^! j, T6 |8 ^6 }" v
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
8 }) a# M3 u6 U2 i6 P3 xMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
* u/ g) E, A' R, f}

& y5 g- N, O: ~9 ?
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
8 Y# c4 L. p! L5 V& y2 I2 i) T
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-25 07:13 , Processed in 0.039187 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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