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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8586|回复: 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,
& ?7 p3 E: U2 H$ u; M- E* u) d% sinput mcasp_ahclkx," P2 ?) Z1 w# D
input mcasp_aclkx,) h* g' T# p0 j' u" t- b' W
input axr0,8 p- ~; o- i. l1 ]# B

% ?. }$ J/ z  ?$ Z6 Toutput mcasp_afsr,
, U9 B" K! _8 `7 _3 youtput mcasp_ahclkr,
3 }' B6 L9 y" h4 R4 H9 Q7 eoutput mcasp_aclkr,
& ]: i: n3 q3 `* [6 d( v: Routput axr1,5 V$ e; L' P& g+ y7 _
assign mcasp_afsr = mcasp_afsx;
  ^6 C8 f' o( v2 y" u+ `/ rassign mcasp_aclkr = mcasp_aclkx;
* Z: o, n6 n9 j7 _assign mcasp_ahclkr = mcasp_ahclkx;: F$ N5 T- T8 S3 R4 x7 c
assign axr1 = axr0;
8 G& E$ f- t  l, f+ {
. x3 P( C/ W" u* s$ y
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

- v( P  Y& \1 A9 _6 ~
static void McASPI2SConfigure(void). p# t- C8 w- @* p- q( s
{
& O* o# j4 F; b$ J% uMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
5 i7 E8 e8 y' a3 QMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
$ x( S2 ], t# S  PMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
* A' H! O8 t8 r+ k$ GMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */" a! R1 m# c& j) W1 [
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
. t# N2 |2 m# b& A; u' ^% }MCASP_RX_MODE_DMA);
/ c& H. T6 D6 l# |) P" R: IMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
3 y* R' `  _" x7 X3 B# HMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */; j3 E9 `7 j6 G( W
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
6 _! l0 v- l; `9 @0 {1 e+ EMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
0 `& {1 c( W4 P6 }. lMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, & ~  R7 ^: ?2 V* Q2 k
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
+ z! {6 f4 m+ `: BMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
. x1 L8 U% g" D4 M) p9 mMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
6 Z8 S- F. W7 B/ g, F; gMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
7 @7 m7 }% S/ l, d0x00, 0xFF);
/* configure the clock for transmitter */
+ e" F' h9 @8 |. e& IMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);! B5 g8 z( z6 R
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); 3 w! I& _. P5 _0 E* K" J/ C  x: S5 l
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,) j6 F2 x; r% c2 I" f/ [
0x00, 0xFF);2 K# }4 y  c9 q# ]

& |9 T' y+ Y" f/* Enable synchronization of RX and TX sections */
9 Y3 u0 J7 c( y: wMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */$ W" A0 Q6 f7 K5 c; r/ y% n5 N7 z7 r, g
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
- e) D6 E) {, d5 G7 Y- K9 |McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
# y& w% A) P/ N* @% a8 R8 h** Set the serializers, Currently only one serializer is set as$ Z3 D6 p2 c7 D" h* M4 `& {4 d
** transmitter and one serializer as receiver.; P+ V! P2 }5 ~' M
*/0 [3 M' w/ K' D
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
# q- X) V* g' F$ w; bMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*' V* g, {$ @: j# O$ Y! f
** Configure the McASP pins
( Q5 C. J* ]9 e6 I% i" j: w** Input - Frame Sync, Clock and Serializer Rx( r: c4 a4 |1 h: H* S
** Output - Serializer Tx is connected to the input of the codec $ V/ s3 f  z( V7 R5 ]- Y
*/9 X" K4 S+ u3 T. W& ], b7 j
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
9 y: l/ F- `& g/ f+ r# K* M* eMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));0 Z% V3 Z6 R8 _2 i4 w
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
0 Z3 s) j9 {# c5 ]! V) d; w$ i| MCASP_PIN_ACLKX5 M! c( f- v3 S
| MCASP_PIN_AHCLKX$ O* Q) }) {6 Y  u* {; w5 o9 k: H: D" d
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
( ?. o* x- _: I, y% bMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR & E0 c+ _. G  [3 \
| MCASP_TX_CLKFAIL   v: I6 }; o7 y/ l1 M
| MCASP_TX_SYNCERROR/ \( Y0 o( `1 \0 I" U
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR ' {- }8 h  B* r1 G7 }
| MCASP_RX_CLKFAIL4 O* Z; C6 C# ?* G+ m  ~; o6 j0 ^5 h5 \1 k
| MCASP_RX_SYNCERROR 3 p$ J! E' u6 g: v, b( }
| MCASP_RX_OVERRUN);
% G. J2 s/ v2 `* O) Z7 ~}
static void I2SDataTxRxActivate(void)4 f1 [$ n1 j9 l- k& s
{
* r' x3 A- j( b) L/* Start the clocks */
8 W# a. b- p2 f" F' y) h9 _McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
1 F9 {  Q' ?1 b) m5 k# UMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer *// l7 ?- W8 t  q
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,4 Z# F) Q0 Y: @
EDMA3_TRIG_MODE_EVENT);* R2 C2 [2 n% l( f3 S0 `
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
" Z, t6 k2 M/ I; c/ XEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */! n( ]. R' _1 [: m7 m
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
  U: E" U8 C( o  uMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
9 L& B$ }; u6 ?1 Mwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */3 b. {- s. T+ s
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
' `8 E& H8 O! g0 [4 kMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
% |3 S2 f0 U9 R3 |* P$ G3 F$ }}
/ }6 V2 w- E. w! ^- F
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

! ~( t# z4 @" q* G' k" y
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-28 03:54 , Processed in 0.042450 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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