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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9325|回复: 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,- n1 c$ r: a; _& V! s
input mcasp_ahclkx,
, p* M1 U$ I3 I+ R% ]input mcasp_aclkx,; g9 J3 s* G( {! C8 I6 K1 {
input axr0,% P* Y" @  z7 z# ^; O8 X

: L1 G' f7 y% q: A7 ^8 v! M! Eoutput mcasp_afsr,
1 G% d1 y% \) s- n! Eoutput mcasp_ahclkr,+ ?6 B' R9 H+ i0 M( v4 m5 l
output mcasp_aclkr,
) ?: _" b8 I: a: k( V) Youtput axr1,
5 D5 |* [! s/ D  B' w
assign mcasp_afsr = mcasp_afsx;/ b! x- I" {/ ?8 H% Q; ~2 @; y5 s* r
assign mcasp_aclkr = mcasp_aclkx;- x  Y% U" n  E# \
assign mcasp_ahclkr = mcasp_ahclkx;$ ~2 m" c! g4 v' ]
assign axr1 = axr0;
# o2 o/ P* K$ [  f/ H' f

% q) L( ~" C6 x5 d! Z) A* {, N# m! F+ N* ]
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

$ k$ C( `$ \( u4 }
static void McASPI2SConfigure(void)
1 E+ X; d7 h& R; E# D$ r1 ~{! C) U  l* s: ]/ e2 L
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
; v7 A# `  F* f# AMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */3 d. A" }9 |' y1 M
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);& B. e0 p5 E  ?- j
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */3 E/ ~  H7 O# N! y1 ^3 n. w8 ^
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
8 T2 a: C; w% A5 KMCASP_RX_MODE_DMA);. m, g4 K( I. g5 f" q: N  {
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,$ @% h2 v1 _# K$ t; Q& \
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */% p) B% {$ v% E; ~; _
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, ; b/ Q0 h/ a; p  K9 f
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
/ n2 j5 l5 ~( @) fMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
6 D* }0 w3 N: Y% ~' h* S" vMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
# K! ^$ s/ Z5 l$ n$ ZMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
/ K  j5 x6 l2 t" G$ Y) l3 W  X( `! eMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); - @) r! s' F7 u5 d8 p, L
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,; C- ?1 Z- u% Z1 V. O) n: h! R
0x00, 0xFF);
/* configure the clock for transmitter */
/ S/ K% Y4 }* B9 S) u: SMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
, r) U* y% ~- p6 [McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); 9 |/ a2 s! S0 U) \
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
8 K$ e1 A* ^& D# c1 f0x00, 0xFF);& i- \. i0 T9 u6 I

8 f4 {6 H# k6 y& ~/* Enable synchronization of RX and TX sections */ , z  N9 A+ d; w3 X! k# ]( b
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */- S1 [, g! ^3 ]1 X/ e" L
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);$ e5 D& D, j& c4 d" ?
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
0 w; `. K( _9 z( J' O** Set the serializers, Currently only one serializer is set as  Q% @  h% x% T* |/ i6 Y
** transmitter and one serializer as receiver.
6 O9 X7 m, p$ B*/2 {" [, A8 h6 ], y
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);8 N/ t3 h3 S5 i# Y& p# a! G8 |
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
0 d; V4 z% K5 e& A4 S** Configure the McASP pins
/ Y8 a  }# o/ v** Input - Frame Sync, Clock and Serializer Rx4 k; \4 m: T  \! r7 w- ~6 f
** Output - Serializer Tx is connected to the input of the codec $ |) s, }, e" H) w
*/
" V" R8 D, R* S: R( sMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
  G2 Y  d8 d9 q8 J( O5 S( A! m) pMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
0 Q0 Z5 j6 d$ {McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
$ }2 N! |6 U0 U& V7 V| MCASP_PIN_ACLKX8 i% ^/ l- g5 ~( A* U
| MCASP_PIN_AHCLKX6 T% y& t  k+ I  J/ C, E5 L/ @
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
3 Q- H. d% n8 M( y9 p; l+ mMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR , f  u$ P( Q: a+ D8 D: p
| MCASP_TX_CLKFAIL
/ ?& Y- D- E- @6 P. C6 @| MCASP_TX_SYNCERROR, U& U5 ^( s% n4 R
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
" k6 F# s/ H5 G0 s1 C6 {$ x, u| MCASP_RX_CLKFAIL
6 y( g6 k0 V; \0 A6 l' m/ `/ \| MCASP_RX_SYNCERROR , M3 }4 j9 M/ @7 ^' P& F0 C
| MCASP_RX_OVERRUN);2 A8 L) [9 z  f( H/ |1 A* J
}
static void I2SDataTxRxActivate(void)
% X5 H& Z* b) M8 Q9 }/ O6 e{' Q% F1 F/ O; e# i2 p3 y8 J( N' e
/* Start the clocks */
" O; g/ X+ c4 xMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);- [- C1 V( N+ `2 P5 P
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
7 h% j- M% i7 xEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
; n2 \! Y7 I8 s1 yEDMA3_TRIG_MODE_EVENT);0 [/ z6 l, m2 N
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, - v2 \4 z9 v8 g* c
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */0 \$ R$ x9 R8 r7 P  C! e, H
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
& s6 W  F6 F. o' }9 XMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
: [8 f* i- n+ e1 |while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
& H; r, [$ X9 j# T) f( w, u8 }McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
; T9 K( D* q; t5 u2 {) ^McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
, t- ~6 P0 A: O7 D) a/ q! m}

6 ~$ X8 K% A/ C; l; v" r
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
9 j+ F8 L7 ~6 ?1 i$ `" O3 s
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-2 15:12 , Processed in 0.038633 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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