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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1214

积分

金牌会员

Rank: 6Rank: 6

积分
1214
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,
9 h/ {* a4 M* f' Tinput mcasp_ahclkx,* h9 C4 h# m, W4 \+ D7 A
input mcasp_aclkx,
& y& B$ x  ~% W- x2 iinput axr0,
# D  a0 H; }1 h. W
6 R& Q; u6 b- _output mcasp_afsr,
  ^2 x1 v8 l: L( G3 eoutput mcasp_ahclkr,
* c! F; L+ X, R3 p9 N  Zoutput mcasp_aclkr,
" G# s' g& r' j' x/ G, Doutput axr1,' w- q+ i1 O4 [: h# X
assign mcasp_afsr = mcasp_afsx;4 M' p8 W5 o6 o8 R; Z2 {5 i, ^
assign mcasp_aclkr = mcasp_aclkx;& I  n# H/ U; P- r0 R6 v; J2 J
assign mcasp_ahclkr = mcasp_ahclkx;
- C' z, O- P! Q# ~$ Q. _assign axr1 = axr0;

! @% c1 {0 _4 n7 b* ~6 `; \2 n* K4 }% U: s- `
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
' k# V" s# Q, l9 S
static void McASPI2SConfigure(void)
+ I$ c' C% Z/ G5 l: G{+ {( @. A" s: n
McASPRxReset(SOC_MCASP_0_CTRL_REGS);% t! S! [+ D% g+ K0 {/ s" }
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */. D$ @! M9 p) j  a
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);! G+ b/ H6 P0 d8 x" u) K
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
' o& ^/ B% N: V4 ^McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
: y0 ^  M1 `  ?  }  r5 Z# jMCASP_RX_MODE_DMA);
% |* |) t4 S3 J8 ]McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
- ]: l' z. c0 F- r( G: iMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */5 w7 D6 b. W' d8 b
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, . \3 `1 x1 @1 L7 d, {3 [* T( p' o
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);' Y4 ~% v9 n! W
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 7 H& z$ W# O0 `" m6 q) V
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */; f! a. r. z* N9 u3 ]
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
: a+ \& `. n3 t( X4 XMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 8 e' n, h+ j( v1 z3 x9 _$ u
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32," b, ~, T/ r4 O6 b% M/ b: v
0x00, 0xFF);
/* configure the clock for transmitter */
4 m3 |) e: ?$ E- [4 E  r! lMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
( F' V1 H9 l  {7 Z  s7 l) z) {  w# ?McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); . K7 i. O  W1 D( g2 p  [& B* R( Q* p
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,  c% b! }: }# I1 B5 ?" J; O% l
0x00, 0xFF);
: `. e0 m0 ^, }9 x3 b5 ?2 _8 J1 D( z( j, I8 O# a- k
/* Enable synchronization of RX and TX sections */
+ [; L  b/ G; m' J6 WMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
, }9 y" S9 h1 X, ?0 OMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);3 m$ t6 \, N; |7 m# l
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*9 n+ O" L/ g, \0 n0 G
** Set the serializers, Currently only one serializer is set as! P0 r2 q9 t& z9 S! u5 g
** transmitter and one serializer as receiver.4 T" g0 L1 N$ h3 m
*/  a& K, g8 {; \0 U6 s& D3 K2 k/ Z2 G
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
2 r9 L7 ^* C" d1 T- `. vMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*: \$ @- `2 h5 q0 z3 E* L
** Configure the McASP pins + h/ |/ H, o  Z5 d* J
** Input - Frame Sync, Clock and Serializer Rx: j8 w/ ^! n: N9 T/ {7 i! H
** Output - Serializer Tx is connected to the input of the codec
1 p2 I* X" Y9 B; B$ h*/
' @9 h4 r4 g$ HMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
( \$ Y4 z4 g+ U( K" M8 BMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
+ U% J6 Q. W7 H# _; t9 p+ }McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
7 ]& @0 @& h9 C3 x4 P| MCASP_PIN_ACLKX( _2 ~2 U/ S& s4 h4 X  M! M. B
| MCASP_PIN_AHCLKX& @( M+ k; r0 o/ ]
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */' _% {( w( @' e2 ]; R9 P
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR & \, v! }. d/ o  R
| MCASP_TX_CLKFAIL % c5 u7 r$ u3 x1 G9 p
| MCASP_TX_SYNCERROR
8 A/ }/ m7 v  m& R| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
) C5 w3 j- s" E$ n& d% T| MCASP_RX_CLKFAIL
" z9 n  a1 T* O1 J  @2 I| MCASP_RX_SYNCERROR " N. W( s# a( z
| MCASP_RX_OVERRUN);
7 a# L. M( P+ Q2 _}
static void I2SDataTxRxActivate(void)0 f$ _6 l7 c6 I6 r2 t* W4 |
{
2 P" m( [: B5 I  }" i) t% d. y/* Start the clocks */  L% M7 H$ e2 X
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
+ g) |1 H+ \. H% }- _+ G" x. xMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */& Y7 r, F" }) h6 k2 g
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
7 c! ^% x5 `* c6 y; v+ Q# d  O7 t" A) @EDMA3_TRIG_MODE_EVENT);
6 R* ^! D* Q  r) }# z$ z5 e+ OEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
& u& x/ ^# x& aEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */, }$ b- m: s- L* r1 u4 C9 F# f
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
5 _9 x4 t# Y6 iMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */. S" N: M$ U5 j& E6 y
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
/ N+ y4 D+ Y( }1 \( GMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
0 }5 o  C' F" _6 a/ UMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);4 v! D' W0 V" G  G" ~; t* q7 j
}
  d' j" k2 _$ a3 F' `4 D
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

8 W! Q/ O# t3 ?6 A8 P& r
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-30 21:19 , Processed in 0.053104 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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