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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9430|回复: 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,) n2 G! p! i7 d) m3 ]
input mcasp_ahclkx,
1 l" T4 R. S! I  _9 s! iinput mcasp_aclkx,8 u, a# @/ |3 [$ w$ j7 Y7 o
input axr0,
4 o% M7 Q8 ^+ ~
9 d" a" \5 G; [: n' H2 _2 X) Coutput mcasp_afsr,  d- o; K* b/ U/ h+ J9 ^- p- n) ^
output mcasp_ahclkr,
* @( V) h% x5 y: f) W# Koutput mcasp_aclkr,# j, V4 h4 d- i7 j6 j7 I$ S1 {
output axr1,
+ l  @6 a6 ?3 Z$ l
assign mcasp_afsr = mcasp_afsx;3 e) q& C3 S6 g" U" h
assign mcasp_aclkr = mcasp_aclkx;
5 P  B7 ]+ z* l" s; q8 ]- Xassign mcasp_ahclkr = mcasp_ahclkx;
( t4 |) ^* a# w) a, `/ Xassign axr1 = axr0;
0 E0 N8 N, z3 I& y9 G, G
2 p. C  n" s1 U5 Y( `
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
; {% d, N1 K, z* A2 w2 I" L
static void McASPI2SConfigure(void)
  O: W" k' e( }" m; r{
, U5 z; {" k+ l4 vMcASPRxReset(SOC_MCASP_0_CTRL_REGS);. h# z' O- G" x/ _, G4 c% q
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
3 X+ Y, {- n+ Z0 b- k0 P8 RMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);/ s4 O7 m, Z% F5 P: I' m8 ?3 i
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */* O: v$ j+ u" j. G2 m* [; p- y$ ]% L
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE," ]- v+ j" E+ a/ V" k. l
MCASP_RX_MODE_DMA);
# {7 m" C/ w( g4 w8 o+ RMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,. ?7 `. U! Q% H* e  w/ w
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
/ l% J" W* ?4 IMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, ' p( R0 T' @* x% ]0 z
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);3 c9 w, p! g6 c0 P7 l5 ^3 T
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
/ C7 R; k$ g! d. I3 F: M, E, OMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */1 s& n* a9 S6 \# O5 A  ^
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);/ k$ @6 ^$ j% k! z
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
# m& c7 }" A% |, |  v4 `: A& bMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
; v( |- r5 m! d0 Q0x00, 0xFF);
/* configure the clock for transmitter */6 n* l! z: o4 a0 s" H
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);! b% D9 @8 X- ]% ^: ~
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); 8 ~1 H9 |: r# U1 d5 B5 n
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
: y# V- t, r: n9 |  \( K: O0x00, 0xFF);/ Q4 Z0 M% s4 ?. m$ y6 i' v

9 U  V) S( l  m1 s7 S/* Enable synchronization of RX and TX sections */ ) F/ y, _' Y3 A% {8 d5 M
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
/ X! E3 i9 F1 m' T2 O- h6 d" jMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
3 S& y# f# ]! S8 eMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*3 ?5 F3 O. h2 e" z
** Set the serializers, Currently only one serializer is set as& c8 ^; m# U- u' I' Y: d& }5 U
** transmitter and one serializer as receiver.  y5 p) P+ i0 {' @) U
*/% K/ A' E; v6 X1 o* C5 \2 C$ l
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
- K" I9 ]2 }% d- {; f( Y, {McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*" O9 K7 X4 H: m! k. K
** Configure the McASP pins 6 K& a1 W) t- P( j
** Input - Frame Sync, Clock and Serializer Rx* a4 C2 L5 X2 M
** Output - Serializer Tx is connected to the input of the codec 5 \! v$ M$ f* b* C# o
*/
# k3 ^8 [( p' w0 ?McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);, s- }* {: u  h) V+ r  V. d
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));4 \- L, d( ^; u. p7 b
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX! G! {3 b1 x* M% y: D- Z! O4 q
| MCASP_PIN_ACLKX
" n+ m5 w" d7 j( [1 X1 x% j| MCASP_PIN_AHCLKX% T% P$ H3 R* T
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */0 d* U3 q6 G8 W' \6 s
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR , x% h7 x  _6 q) B, T9 r4 E; H
| MCASP_TX_CLKFAIL
' Q4 u: e  E- E1 _( ^& V| MCASP_TX_SYNCERROR3 E3 N, ?5 A! R3 h6 E
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR % e" U/ S% P$ q2 r( @
| MCASP_RX_CLKFAIL$ g9 f% M8 I3 p6 s- I
| MCASP_RX_SYNCERROR
: k& e# `) \5 Y0 R! ]; g/ f| MCASP_RX_OVERRUN);
( `% l, O" V# _}
static void I2SDataTxRxActivate(void); S% T. a; A' x% v9 g/ X
{
. A+ Q4 ~% W0 m2 a9 M/* Start the clocks */" I1 t& g4 R( o% k
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);# `& S1 C$ Y  v% l, O  x1 k: }
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
; L: j3 M% K" ^# ~! H0 j4 sEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,. ?# P( n$ G& [* x
EDMA3_TRIG_MODE_EVENT);+ o4 S) P* l' q  E$ a* ?
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
& L4 K9 k8 o: X! B3 X0 z% XEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
" B; V" ^) \! S; O, Z# @' zMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
2 y6 b* J* |; s- w% m/ ^8 D0 p" A0 zMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
" u' j" J  E/ m$ \! i. Mwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
0 l7 {; w! |6 D  `5 E5 jMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);3 T8 Y4 F+ ?1 ]0 P
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
! w7 r$ a' ?4 L5 ~9 @}

, L7 O5 I5 |" f2 `
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
8 Z5 Q( T2 e* }0 `3 M; w5 m
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则


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

GMT+8, 2026-1-9 19:26 , Processed in 0.040228 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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