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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1216

积分

金牌会员

Rank: 6Rank: 6

积分
1216
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,
) X; u& c/ I( M" m; b1 q8 V, v- {. ^4 Rinput mcasp_ahclkx,
+ X& j- d* F; ]  i' Binput mcasp_aclkx,
7 e* X% w+ |0 Y- k3 finput axr0,
3 X5 N, t) c/ O1 e1 d: ]: D: {& p) M
output mcasp_afsr,
& h0 V. v6 P+ |& A& m& H7 x8 ^output mcasp_ahclkr,
0 ]4 A% R7 }% ]4 {: m/ zoutput mcasp_aclkr,
9 R6 y9 f' ^* n& uoutput axr1,
/ S. m8 |' R6 z
assign mcasp_afsr = mcasp_afsx;
5 d6 W$ B0 @8 Y- W# }5 ?; Aassign mcasp_aclkr = mcasp_aclkx;
. I. a9 k5 h  Q0 tassign mcasp_ahclkr = mcasp_ahclkx;6 V$ Q% ^& S1 Y# V/ ]2 N6 S5 l8 T
assign axr1 = axr0;
9 f1 C, V4 z' W: A: w; K9 [% g
# O9 m1 w$ w0 Q. ]( i$ q; X! b
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
+ B" o' |/ G2 i4 i/ S
static void McASPI2SConfigure(void)
) v) L  N9 z: {) @9 Y# {{
0 @9 h0 I/ i! y! R% _% NMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
$ X, i% b# K' o" l% R: }# b$ dMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
0 K1 H% ^1 G  v5 m0 rMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);$ }+ v8 y- R: Y
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
+ x- C5 e: |  z6 mMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
. V! ?! {2 t( Q( I+ YMCASP_RX_MODE_DMA);; ~7 v  f6 t9 e# D  t3 S
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,+ W( g) K3 E3 _& c6 P
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
# @! v; r# R, R) jMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
# C2 V2 Y: `' c0 a) ]MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
+ j* i. I7 T" h4 ]! X4 kMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
* ~- p% W) R# X( A  yMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
+ u9 X( p3 H; l  q( Z5 a1 CMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
0 t& a% v  D; G3 YMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 5 j! w' p, N6 D7 c4 W, Q
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
9 }" k$ N' `1 T5 O, u. X/ Z$ e0x00, 0xFF);
/* configure the clock for transmitter */
8 }& O7 r5 H5 [: NMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);* q) g( ?/ [1 E- M& S
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); : w7 h% x$ J- H7 C
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
3 s, g5 g4 W4 E$ ]$ S; S/ ^0x00, 0xFF);
  K4 f- k) L; [" T1 ?  ?% N; P3 ?8 t
2 w4 I* B* o& g: U0 R& M/* Enable synchronization of RX and TX sections */
: Q* k0 ~  L: yMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
3 ~! }  B- y% T7 `5 CMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
$ F. i  M0 a& L2 M: \8 M$ TMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
- p3 X7 B: _4 I. P( O2 |% ~** Set the serializers, Currently only one serializer is set as# N  l  `( `! b0 U: g; t1 h
** transmitter and one serializer as receiver.0 c9 @5 [* r7 D& H" |4 ~
*/
5 C" T* O' H/ c6 R+ |McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
  X6 R' `! c) wMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*, a! J$ _- ~" [+ }4 e8 W# B: \
** Configure the McASP pins / D% U, b+ q! F1 T" I
** Input - Frame Sync, Clock and Serializer Rx2 w. C0 w& ]6 v  f; r  Z4 @
** Output - Serializer Tx is connected to the input of the codec
' y) N0 @) f% W5 W+ w3 b; E$ [*/
& f0 U4 C7 @. z; x7 IMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);9 C( B; Y4 {) Z7 M+ B/ _
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));8 n0 Q4 P2 N* l! p& n4 v% Z  B
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
% O6 X9 z8 c/ D% i| MCASP_PIN_ACLKX% ^" b6 O5 f7 [# M! e
| MCASP_PIN_AHCLKX
$ q. m! i7 E7 g| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */8 }# U. ^7 y7 U
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR   r; R5 M7 G$ w* r
| MCASP_TX_CLKFAIL
1 p1 d3 N- s" V  r: P, }& D| MCASP_TX_SYNCERROR
+ K0 g; C5 W4 ~( N% U" i| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
& W+ t( x! O, E5 R) W9 H8 l6 M9 t| MCASP_RX_CLKFAIL) M& r. }; E/ X- }& a3 h! |4 R2 ]
| MCASP_RX_SYNCERROR - F% t/ B, z" K! U4 M
| MCASP_RX_OVERRUN);1 K6 `1 i2 e; i; k% Z4 i7 Q
}
static void I2SDataTxRxActivate(void)
1 y9 ^4 i" d) i# s9 t{
" A1 y, x$ J! m. {, U/* Start the clocks */) M0 B, f8 {- z
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
$ L' q3 _: U6 X# Y- v% YMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
" k4 S0 r$ M" o0 O/ z! lEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
) Q2 P8 ~9 |. r1 G" h- a; h+ k7 sEDMA3_TRIG_MODE_EVENT);
! ]( l, y6 d6 o  R- v4 R' {; }EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 6 f: ]# K0 A$ _1 d+ O5 K
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
; f# g% p: S9 |' E5 VMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
4 ^: c7 O9 A: t; IMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */& n+ W1 z. A& h$ K
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */, J4 Z% C+ a9 g8 x9 E8 y1 A1 J
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
5 X9 h, O! U0 l0 x2 \# g$ tMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);2 B& V3 R! b; ?3 K, i5 B
}

+ ?7 f8 w7 I% ]2 b1 l' A. K
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

/ w7 }# ^3 W) S3 F
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-9-26 02:55 , Processed in 0.044003 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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