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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1215

积分

金牌会员

Rank: 6Rank: 6

积分
1215
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,
1 O6 U4 c: V* }input mcasp_ahclkx,
% k2 P( E) o" I7 t3 einput mcasp_aclkx,
& \; t& m: B# {0 ~0 T, ~' H$ {% qinput axr0,5 l' _3 a0 I- k. e- p1 V4 E

& D& W4 t9 V6 u5 Qoutput mcasp_afsr,
0 D3 c9 N- |" U, Y  I' H/ \output mcasp_ahclkr,0 ]$ H8 f9 A* W- h$ s' O9 S
output mcasp_aclkr,
/ t9 _; i0 A9 }5 \- C8 j, U0 A; K* Koutput axr1,
$ J! y( T- ]% E$ s
assign mcasp_afsr = mcasp_afsx;
; T2 T* k; j3 r5 L& q' bassign mcasp_aclkr = mcasp_aclkx;
0 o1 N9 A' T, ^1 R+ \+ lassign mcasp_ahclkr = mcasp_ahclkx;
0 B. R& }& {# f5 Q* I+ sassign axr1 = axr0;
: k# Z. x( ]' F, g. k

3 k; o3 z" Z# U& v. r9 a
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
% I4 e' j" Q( q% X
static void McASPI2SConfigure(void)
2 j8 J+ t, k+ ]( K{; [" f' q% V+ M7 Z* q, y
McASPRxReset(SOC_MCASP_0_CTRL_REGS);7 E- c! Z3 t& a9 I9 ]( p( ?
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
2 W6 D! l! [: o$ \; w1 U7 E. H1 _McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);' {/ @: Z. d  l& t' l: n  z
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */+ V# q& b2 a6 \5 x6 s$ u  _' d
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,6 u7 x- W6 [: g
MCASP_RX_MODE_DMA);/ n* g# r, m1 }# n# p
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,, p7 y$ a1 N+ R
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */' J; W8 p$ j4 U6 U
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 2 T! l1 E2 Z! ^" o0 a; m* ^0 L
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
  Z+ C' ]; b* mMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
5 M' T# h' t* \MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
; v2 g9 o; r* BMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
/ K& a) R+ t+ a! B( I% LMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 0 }7 c& D  y' v' q! E
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
# b. n& X$ C+ L. S9 W8 y6 T0x00, 0xFF);
/* configure the clock for transmitter */8 F6 l+ R1 l: \7 E. _  K
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
" U6 c# T* ]1 t1 @1 QMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
3 v; c9 p; K1 P" [McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,) L$ X5 ^; ?7 C) C6 z
0x00, 0xFF);
, t* X3 s% G3 I! b% g1 I+ \* N- ?, \4 O; H$ ]
/* Enable synchronization of RX and TX sections */
+ D/ }8 O: h0 x- T% S4 ]% H3 V7 h! S' dMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
8 N- h1 K; ?! Q! ]  j8 qMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
  Y6 k. y; |8 E# A! k7 f7 pMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*. f/ U/ W* U% L
** Set the serializers, Currently only one serializer is set as
& ~9 W3 ]1 J8 N8 R** transmitter and one serializer as receiver.
1 M; J( [# H  {/ y*/; L) D" j5 u  b6 E% y. l8 e
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
- j5 u' T# \- H1 C7 |8 dMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
! X* @5 ~0 S! r0 C- F** Configure the McASP pins , ~3 h" Z3 M" l3 A
** Input - Frame Sync, Clock and Serializer Rx
$ p' y5 b) N& W( H** Output - Serializer Tx is connected to the input of the codec   j2 M9 Z! n2 u$ P; ?% s
*/
: E4 U; T/ B9 ~McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);4 h' c- |2 @; t& K% }
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
2 Z4 s9 M( m: ?! E- x9 mMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX1 S: p9 W! K/ V: q8 O- s3 n# [. ^
| MCASP_PIN_ACLKX! ]' K7 r, A3 A/ k3 M7 q2 k0 n
| MCASP_PIN_AHCLKX! K4 O  q2 p% Y; u. p5 _
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
' u  {' S9 P! {/ q6 Y# |% SMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR & R  ]. Y& d( K" F" L  u: y4 r4 }
| MCASP_TX_CLKFAIL
3 M+ D) G* K+ c& q| MCASP_TX_SYNCERROR# k- W7 U0 k! W  a3 R# E8 A
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
' f" l/ ^; ~7 J7 ^( e5 a6 A9 R| MCASP_RX_CLKFAIL, F# B, J8 b: E2 k# Z
| MCASP_RX_SYNCERROR - Z. Y- |1 d' V) V; P& k  x
| MCASP_RX_OVERRUN);9 m% m0 p) h) V8 h
}
static void I2SDataTxRxActivate(void)' J: y0 H, c! v! ]' U
{
; m  E5 H: z$ }, k6 _, H. Q/* Start the clocks */% c( I5 g& d) V0 M% @) F
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
) v6 K( u" y* vMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
8 c9 n; P9 _0 P/ q+ R" P9 j0 }5 a& XEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
, l/ b1 ^/ N- Y" T9 o! D0 bEDMA3_TRIG_MODE_EVENT);% l/ n5 U4 x2 z& I
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, : `, o4 ^  t9 \: }8 j0 X) D2 K
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
6 S( T) m1 J- f: ?, v/ nMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);" I9 k7 q4 @% f  n) \
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
- H$ y9 ]8 Y9 n2 t- q* d0 Gwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */4 b6 j. T/ k- ~
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);4 G' f& |8 y9 x; w3 g5 x& A6 e- U
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);! }$ r  c  U( o+ O
}

1 f0 p1 N* Y; H: W
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

. ?' H( ], ~/ T
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-9 13:40 , Processed in 0.040393 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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