MCASP自环配置。 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1212

积分

金牌会员

Rank: 6Rank: 6

积分
1212
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,& Y# T% c' T4 H  C* \/ P7 ]. o
input mcasp_ahclkx,& G* H0 {) y6 i
input mcasp_aclkx,( ]) P  F5 M, T2 ^- g. {* ^- F
input axr0,: ~) G8 |/ F; v$ n3 @  |) A
2 q9 {% K, ?' D6 H+ e$ t; [4 z7 B1 ?
output mcasp_afsr,9 W' U1 p4 Z6 F) ~! U- M
output mcasp_ahclkr,
) a& d5 J7 K1 w! B) N6 v6 V. N9 E5 a1 e5 Eoutput mcasp_aclkr,
; F% T  z0 i- I# \4 Q4 foutput axr1,
2 x4 O, h# Y* F  H% {( Z
assign mcasp_afsr = mcasp_afsx;
( h/ U7 f6 @* _9 Z8 c( [assign mcasp_aclkr = mcasp_aclkx;
1 o& c7 L( Y" U. w; `assign mcasp_ahclkr = mcasp_ahclkx;' Z, {  M9 v5 N: S
assign axr1 = axr0;
  X) Z+ N* R4 ]0 C4 J5 Z4 U
; |0 D- `2 p$ _; X
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
6 Y4 N* D) ~$ a+ |! B, p
static void McASPI2SConfigure(void)  x- Q5 ~5 e) W2 k2 Q" v4 p
{
+ L4 W% J" }% Z) qMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
' u7 Z' H! v' w7 O: d3 ]: J; l! yMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
  V- D7 M) V( ]3 |) KMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
# I- ~& N  D0 D3 TMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */+ f- u+ h& L: U' ?' z) z2 n( K$ O
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
. V( `- r* G; N8 [MCASP_RX_MODE_DMA);
; |/ Y1 ^5 m: K6 S7 B* PMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
. n/ h, `7 `; ?MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */8 i/ N- G+ S' M, [9 F" j
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 5 _/ k, S4 T/ g
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);9 ~0 o- j7 f0 H, o: e, J
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
  K& e* b* W8 v+ L. g& g; u8 ]" TMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
8 g" H" o& b! @/ J- }: R  lMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);3 m+ V! z7 z1 F
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
( J4 x$ C* _9 s9 n7 p  K& H# AMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
$ {" ~1 ?% q7 l2 _( ^0x00, 0xFF);
/* configure the clock for transmitter */
: Z/ N" O1 ?7 K$ pMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
$ \* e& `+ E5 F% p, y* X$ t; ]" GMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
8 c8 H! r, Y/ S3 }2 N( WMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
; L, [7 J3 h1 ^- p! r/ g! k0x00, 0xFF);
; }4 f6 t) O: }0 K0 R. e: K. d5 _1 N8 V( M3 O" `
/* Enable synchronization of RX and TX sections */
: K! S! s" A& }9 p& m8 P7 I3 M$ |McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */! r1 u7 ~7 P: y6 N0 f: P/ }
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
$ Q7 ?" {' j# X. n& n5 \& ?" RMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
9 C4 A$ T# ?9 m7 |$ N" ^** Set the serializers, Currently only one serializer is set as
5 R" ]9 G) E9 L$ [7 H** transmitter and one serializer as receiver.
. `% I% s% v; x( n/ C( ]*/1 ]  ?, o$ x/ L6 f; b+ v5 K; ]
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);$ F% C- F+ x; p4 c$ e: x
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*1 ^4 Y1 P$ ]9 H6 H& B. ]0 e
** Configure the McASP pins
9 }" |* s% q$ F9 g** Input - Frame Sync, Clock and Serializer Rx
2 }$ ?( r6 ]* X: X** Output - Serializer Tx is connected to the input of the codec ( ~7 ]8 e/ U9 J& A7 d0 v  U6 P) i; r
*/
" h3 \4 h) i6 m. sMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
: G. q$ ?! O7 Q! Y/ @1 mMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));" @2 ~5 f# A9 G# Q9 j8 e
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX6 A3 Z2 K5 q. Z6 X# k2 I
| MCASP_PIN_ACLKX
( y6 A9 @8 b3 ?6 S$ m2 X9 F* d| MCASP_PIN_AHCLKX; u( g! v; o  Z$ U% k
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */$ d  M0 e. ~& H/ E
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR 8 E+ P2 d" H" n
| MCASP_TX_CLKFAIL 6 P% F: Z  F4 T- F3 ^: P* w
| MCASP_TX_SYNCERROR
7 ^9 k# ~# c" ~) R| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR ' T/ f  w$ Y! J: K# s4 M
| MCASP_RX_CLKFAIL' c# M* Y% Q5 R+ ~4 `% [
| MCASP_RX_SYNCERROR
3 I6 _/ D+ T( || MCASP_RX_OVERRUN);
& i9 [3 B+ g- C  Q! q  K4 p  k# ]2 l}
static void I2SDataTxRxActivate(void)
3 o/ {. F/ ^& Q  }- G* V4 M{0 y% V# g+ r$ g$ |! H! s
/* Start the clocks */
  [  l+ ?) ]2 |9 S5 p1 z. U! pMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
# T- e6 }7 Y( }: \  vMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
) ~+ n! m1 |# }% BEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
6 w# X0 a' e0 w% _2 FEDMA3_TRIG_MODE_EVENT);
$ p0 k( y' l" T" z8 h, \. f0 lEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
& y3 h& q  t( G+ v# gEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
9 l1 Z9 V  z. NMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
1 {2 Q0 x. U2 n; g9 l* iMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */9 V5 ?* m2 V0 t4 y/ D! W
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
: e2 v3 Z4 }3 ^0 D3 g5 Z! SMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);/ Q5 J/ j: g& m, ]/ |4 _" O
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
3 ]9 w+ r" W3 ?; C2 N: A1 W}
2 y: l: g3 I" v) c0 K
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
. k/ i7 e, V6 m, N+ T4 W1 z
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-19 08:27 , Processed in 0.037688 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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