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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9335|回复: 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,
* A' i" Q' T7 a6 B5 c9 Rinput mcasp_ahclkx,  s$ I1 A" K- A  Q" t6 \8 ~, J; l
input mcasp_aclkx,/ X9 ~' O" j. y1 F6 L: I6 ?
input axr0,. I1 P/ H8 E! B& E
% q: {7 z/ ?0 _6 \# d1 b; F& X" E
output mcasp_afsr,
9 p* R( }+ @' {; ~4 ooutput mcasp_ahclkr,
9 b3 G) i4 v1 Z$ Eoutput mcasp_aclkr,* O" n$ z6 q, K% K
output axr1,
' |  r/ r7 R8 x: o9 X
assign mcasp_afsr = mcasp_afsx;
, c' B% O, a; k# K) ~+ [assign mcasp_aclkr = mcasp_aclkx;
( y2 r1 P2 ^0 w3 T1 Eassign mcasp_ahclkr = mcasp_ahclkx;) e# z5 l1 X  F' x7 E
assign axr1 = axr0;
( R3 }* V/ E' _: S7 E
0 F: y1 E4 }5 ?9 |! {2 _! h
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

5 ?" z* p) {6 |6 C3 c* Q
static void McASPI2SConfigure(void), g) c! v8 O( F; N4 o( k# s: n
{
2 m7 K& S/ v9 Y* lMcASPRxReset(SOC_MCASP_0_CTRL_REGS);# a- B. C( f. ]2 o% T1 s
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */+ ]5 @1 F8 N& s+ f$ @, i
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);# I" M5 S4 d% H
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */2 ]: n2 U- k& B
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
. p( L4 E* ~0 ^& m( s$ t/ |) b! gMCASP_RX_MODE_DMA);
1 f" d- E5 l  o( \( AMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
: C3 F; ]. w& `MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */- o% S3 I3 @' M
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, # L$ q$ ^' Z8 D1 [3 ?( F2 k
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);2 M& q9 A3 r  l: v* e8 z
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, ' q5 M# B0 ~; N, g$ W
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
6 V* v$ u6 y( h$ C' [7 BMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);8 C" l. J2 o- N) E  b( u. ?2 u
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
& v% S& [! X$ c4 p! I% X7 R% C% GMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
9 f* j2 ?* K; `; D3 k0x00, 0xFF);
/* configure the clock for transmitter */' ^9 o& k( i& N
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
0 ]: v, Z! {& g9 xMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
" R1 K. ?' y# ]$ z$ FMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,$ h4 D' {9 J( C( _: ^7 t
0x00, 0xFF);8 N" |" K; I) z1 V9 S% p8 z
% O7 _. o0 U% n6 y
/* Enable synchronization of RX and TX sections */
* p$ b6 v) P3 mMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */3 M  _! Z/ V( m
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);0 D& M" P6 Y; A4 v# S
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*3 G0 i, [1 l; h& f) n
** Set the serializers, Currently only one serializer is set as
2 d  F7 w( z% d7 F" `! Y/ b** transmitter and one serializer as receiver./ R  |% [! X6 v$ |! _, y
*/9 {5 W9 d' Z+ I
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);( \! m$ p/ U: J
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*- V9 T9 T; t& D
** Configure the McASP pins & z3 y* J! v8 F: A6 W4 v
** Input - Frame Sync, Clock and Serializer Rx# t. Q+ i( v" l4 m* v
** Output - Serializer Tx is connected to the input of the codec 7 U7 Q1 C; t6 ~* V' l$ v  r
*/
8 @0 _: |* w1 T7 O# z3 bMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);" t( j% {5 g% H8 X9 B+ u2 m, z( ^
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));" l$ d+ U1 a' |; ?  k3 _$ `3 v
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX8 a& ~9 I0 J7 u' R& n+ f
| MCASP_PIN_ACLKX  O( v& P, U+ T+ i8 G/ G9 _$ @
| MCASP_PIN_AHCLKX( l- m$ i* Z' [0 T  k! X% R
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
9 _* c! U  `7 u. P9 B. @McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR 2 r7 x, }" o2 M) C
| MCASP_TX_CLKFAIL
; Z! ?# }# O  g" _% X| MCASP_TX_SYNCERROR
* ?/ d4 g. k! |5 F* j| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
' a) {# P6 G4 c5 N. o4 }7 W| MCASP_RX_CLKFAIL9 M7 @- Z4 R  T& B
| MCASP_RX_SYNCERROR
- X! Y# K( G/ t| MCASP_RX_OVERRUN);
$ P' v) u  i4 G/ o# q; B% G. V# v}
static void I2SDataTxRxActivate(void)
2 A" `* M: O% o1 E{
; G2 `" s- J7 H9 e% \6 _; U/* Start the clocks */
0 e+ ?, p; V! uMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
4 H- R7 x5 N2 h5 s& B8 i# g/ Q! |McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */# C, D4 H' m# h: l6 W
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,; @. J5 ^. e% k2 J" s$ o
EDMA3_TRIG_MODE_EVENT);
7 o+ A, }) \9 j/ vEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 8 [& T$ d7 B% b. t$ \( ~- p
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
" E; B6 [& o+ Z! _, lMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
1 A1 w9 b1 w6 H  D9 {McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
9 C% {( f( |& B5 j& h; |while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
& d8 c; k, y9 I! z2 mMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);7 S0 }! l9 f* c- `! J
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);& u' g# T' ]4 F  T3 w* p
}

6 Y. R; z! W' Y$ d$ X; N0 T
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
" Q+ J0 E5 ~( ^3 ]! _' B
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-3 04:21 , Processed in 0.037239 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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