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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1213

积分

金牌会员

Rank: 6Rank: 6

积分
1213
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,
3 Z, ?8 N8 Y0 T2 dinput mcasp_ahclkx,
( f& k. S4 ?. L3 s- Winput mcasp_aclkx,3 S& Y" E, B, R4 Q
input axr0,, w1 e  ~! ~$ n* O6 ~, f) Q
3 ^, K- T, V) m! e3 m
output mcasp_afsr,6 G7 Z- ~% N# n0 u/ h7 n  c$ j2 W
output mcasp_ahclkr,
7 z' `' k0 X0 z8 Q3 @2 \( j6 b! @1 F3 Zoutput mcasp_aclkr,
, g# Y! e4 y5 [/ Noutput axr1,
  Y, q' ]- Z  s& B* c" a
assign mcasp_afsr = mcasp_afsx;
: Y/ P% j& F8 _% v/ g8 n3 F  E7 t' F# qassign mcasp_aclkr = mcasp_aclkx;. r3 _  Y$ t: B) n
assign mcasp_ahclkr = mcasp_ahclkx;7 H, z( S7 x* t8 C! H# R) z2 v& W
assign axr1 = axr0;
4 u0 G2 {% c* z  q/ |4 c' u$ O

- c% Z; ]5 o) w. L' b/ d
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
  x6 i; R, O8 X6 x
static void McASPI2SConfigure(void)" d- r' q! }* Y% G+ T3 X4 U
{1 Q6 {3 b$ t" I/ C, V& h6 F
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
1 ?2 T; _2 _. U* Z) e# iMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */3 z) R0 f6 s1 Z
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);4 H  B! c; ]5 L: \* c
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */1 P+ w4 d) ^3 M
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,8 r; y, P/ N9 \5 A2 X1 g0 v$ {& N/ Q
MCASP_RX_MODE_DMA);
" c0 K% C2 K- h/ l# }9 hMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
( M3 V, F7 |' m! x! Y" X! V+ a2 T2 IMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */+ ^% T+ Q4 U6 u6 n/ n% r
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, / ^" @5 Z$ F2 x9 g! P  E$ \
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);6 T: r0 r2 K- ~  o- \" D2 `. v
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
( x' S% u1 M, l6 b8 pMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
; c. x! I; [! x$ I; RMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);7 z. A9 A7 h; `3 a0 c, {2 \- s' ]
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); * K/ N) j% ?* h1 n/ q
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,& v; L1 N- ~( |+ M7 N, E0 O
0x00, 0xFF);
/* configure the clock for transmitter */
/ h' v0 U- {2 jMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
7 G4 ?' E4 F! K% ?  M4 FMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
) S- U" R6 s9 x) YMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
# Q8 t/ V# S2 Y0x00, 0xFF);8 q: q* E- j8 s8 @! ~' D

0 K( K. q9 T0 N/* Enable synchronization of RX and TX sections */ ; ~/ \' m. u; M' D5 R( [  D
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */! b: n/ j9 c$ A& t! R3 w
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);! z# N) U+ f/ H, `  _2 \
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
. L7 A7 g. X+ x/ Q** Set the serializers, Currently only one serializer is set as/ c2 g, g# |( z$ D
** transmitter and one serializer as receiver.
6 s5 h) N) N9 Q3 c" J# C*/
( E4 C, f& K* @! LMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);* M/ T, u3 y1 O. y, e% ^& [
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*8 K: T  G! I5 M
** Configure the McASP pins
# s; n8 N! u( }. E** Input - Frame Sync, Clock and Serializer Rx
$ X9 E- @' ]. ?** Output - Serializer Tx is connected to the input of the codec 0 I& E/ E" R1 L. @: T5 k: X2 S
*/
+ m9 B# i% r9 Y) w) YMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);6 c8 V: `7 T+ U6 }' H8 o3 t5 t
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));. Y2 t8 h( d, Z6 [6 Z' V
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
8 O, W/ L- b% [+ Z; y| MCASP_PIN_ACLKX
; }9 W9 o0 y$ G3 O* R7 J2 f| MCASP_PIN_AHCLKX
6 m7 v3 E, v1 f, ?- k& `7 t& t6 K| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
  _+ c/ w. M( dMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR 8 X6 C, G9 e* g( W/ Y
| MCASP_TX_CLKFAIL + n  O6 I* T4 F. f
| MCASP_TX_SYNCERROR
7 j- b* h  y2 @/ t/ |( ?, Y8 W| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
7 B: B  A3 `. c9 _/ C| MCASP_RX_CLKFAIL: A2 X. {6 M& d: r6 [
| MCASP_RX_SYNCERROR
+ e$ K  o7 j4 s| MCASP_RX_OVERRUN);
' f  G! c9 i. y" m3 P}
static void I2SDataTxRxActivate(void)8 ~3 i  ]0 X' w4 K5 s3 m* m
{6 O. `: `, d- A- P+ j% U
/* Start the clocks */$ W* S) a( X$ [' D  @
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);+ z6 N) B. S1 s& q$ l- w
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
! H" ~7 i  o" aEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,# z  \; p: b1 X! d) t3 l4 \9 s, H
EDMA3_TRIG_MODE_EVENT);: p" B1 m* G+ u* P9 f- r
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, , ]! v7 H+ |2 C
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers *// c* k& u% @3 O6 J. o* a6 D# l
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
9 k$ X* y& q, B! @8 D$ N+ S' gMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */; \% q9 J4 H9 X  u6 |
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */. q1 g" [0 F1 a9 r# c$ e- J& {
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);/ Y" t( ?8 ]2 g4 j" S4 a4 E5 B
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);% a# ^8 O% I# l( Y6 I
}
- O& ~4 A. W) @( g
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
) x! b6 c( j! X. d
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-7 15:28 , Processed in 0.036265 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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