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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8682|回复: 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,5 I9 B9 z2 g1 p
input mcasp_ahclkx,# r+ F6 Z( y" y. ]' B5 h+ w
input mcasp_aclkx,1 D1 K" b' h1 N2 h' i5 b, ]& K
input axr0,
% b+ B: w1 X* {  o0 O3 o$ j" y2 C
output mcasp_afsr,
6 D0 W$ z. H, v& K/ I8 ]1 houtput mcasp_ahclkr,4 R9 K+ e% [5 H
output mcasp_aclkr,
5 g) E" ]; s, ?4 Ooutput axr1,$ J3 D( P' t6 \* B7 c
assign mcasp_afsr = mcasp_afsx;
; [9 q7 T6 E2 a3 }1 s$ oassign mcasp_aclkr = mcasp_aclkx;
/ j! Z2 \; k4 k( L* ^- a( lassign mcasp_ahclkr = mcasp_ahclkx;
; _/ Z1 b% q* Sassign axr1 = axr0;

# X  Y( l# {2 Q% }
  k3 F& W. i' G7 S( {5 |! e
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

9 V% K# Q( F$ ?; {) M6 v
static void McASPI2SConfigure(void)
6 \+ W4 a( {; ]& M{6 |& ], s0 A7 x# a5 D0 X
McASPRxReset(SOC_MCASP_0_CTRL_REGS);; m: U5 R5 p! q1 \. G/ A* x
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
: ^9 Q  g$ C$ M; \% H% c' z6 D( }McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
6 O- @( U  i9 t$ HMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
3 q; P! i' P3 H* V) cMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,/ ?$ R( x; t- s' G9 ^) }& M6 V
MCASP_RX_MODE_DMA);
9 c# r7 d6 |+ ?" H6 H9 [7 x( Z! a1 _McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
7 ^) m" J* R  A: ?( _8 zMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */1 c5 g/ N" c' U9 J* t5 ]
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, * n6 E% U5 w" C, T* b4 S
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);( c7 f, F9 j5 ?8 W% k. T# h
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
' v$ I- w- N5 \) s+ L4 C% U7 hMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */, J$ w7 U* R8 t5 q) l2 i
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);- {7 I. j" q& _$ m
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
. f8 i% ^, {# }0 a0 uMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,; w% S  h$ ^% K( H
0x00, 0xFF);
/* configure the clock for transmitter */+ L: e: \, @: t8 s
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);: o# w+ Z% w8 h! k9 H7 `! I1 `
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
" \, @7 l6 e7 U9 Y- Y5 NMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,$ f; V( m1 u8 H" C! `3 U
0x00, 0xFF);* z# F4 `4 L0 b0 O0 l3 T

* n5 M2 g' L6 O: f8 [/* Enable synchronization of RX and TX sections */ # t0 S0 E8 d6 U* a8 }
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */, v0 E+ F! E7 F: W1 Y
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/ R& R: s+ s4 G1 X' z6 iMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
% b3 u/ C9 y, A' b4 N0 _7 _8 q** Set the serializers, Currently only one serializer is set as: i# t0 Z& f, K! s" ?+ B
** transmitter and one serializer as receiver.
8 w5 V9 s9 T- d8 t& ]) h*/
) W; T6 x+ F+ y8 C2 iMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
/ x6 _) T- N$ P+ a( f9 l. sMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
9 x, ~% H5 m+ u  `) `** Configure the McASP pins
3 j  _# u1 A& m** Input - Frame Sync, Clock and Serializer Rx/ d& m0 E  b; D& T
** Output - Serializer Tx is connected to the input of the codec 1 a2 `& |0 u/ @/ S7 h* l
*/4 a' r$ B3 h$ B8 x6 z
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
- A6 r! x, K; Z: r6 w$ g# mMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));. Y" O% H% U' r( N  ?$ p, W( Y
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
- z9 L* e8 O) U* S+ ]| MCASP_PIN_ACLKX
: v& R0 `( y# z/ g: b) L| MCASP_PIN_AHCLKX2 k- h( V7 L: _- s
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */- E% K3 ^7 Y0 Z; A9 M6 y
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
) |$ R2 i& s, K) k0 V- v% m8 f| MCASP_TX_CLKFAIL 8 f3 X$ Q! J$ \" n  m
| MCASP_TX_SYNCERROR2 F. F, T( m! I. n
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR $ X0 P- B' p3 y& I& @
| MCASP_RX_CLKFAIL% t/ Q# R. u% v
| MCASP_RX_SYNCERROR / m) D( u% R$ w+ B# N$ n1 F& I0 X
| MCASP_RX_OVERRUN);
+ a0 V# t' a4 U% _! d}
static void I2SDataTxRxActivate(void)
$ `# F5 r1 K4 Z; o3 L{
8 N; Z' B8 b5 {7 J" o2 e/* Start the clocks */" P' \- S" s2 s# `3 n* K
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
# V3 e/ }$ x' j9 H" X; H) t* cMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */  o( W: k+ u5 V8 h9 |" A5 Q  w
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,9 P6 t+ S8 N* c( ~7 J) O$ r
EDMA3_TRIG_MODE_EVENT);
% C4 K5 ~+ `2 {: U1 S: [4 J( [7 a5 ~EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, . i& c4 ]2 h! p1 E/ s
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */5 F7 y' U3 {* s3 @+ G$ A! |
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
) U; F8 i) n) m. K% s' z8 P8 }McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */0 B# o9 Z1 y( x# N+ P! \
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */% u6 e2 [9 L) @9 o1 }# @/ }1 ]
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
% Q; o0 z; L; k$ VMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
! d3 a% U" W5 \}

5 J; N+ J* V) e" j' U
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
/ Y1 u! t& q4 v. [- m" i( ]# o
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-1 18:48 , Processed in 0.042483 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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