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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1211

积分

金牌会员

Rank: 6Rank: 6

积分
1211
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,+ S7 T1 ^6 r2 {; R4 ]  N9 A4 |. J
input mcasp_ahclkx,
8 K4 _; Z/ N% Y& A4 r7 Binput mcasp_aclkx,
/ z) @& E  S: C6 ^: Sinput axr0,
& f0 a( B6 N4 G: E8 w  o
& l9 u* Q2 I( [1 u* |output mcasp_afsr,$ G+ s% r% u! P- h$ d" u; z
output mcasp_ahclkr,
3 a% T! ?9 C6 A' l- L( }: @7 uoutput mcasp_aclkr,
* T; j7 E9 `# F/ d9 l0 W/ Woutput axr1,
/ t1 ^) G8 V8 @% i. ~* w( }1 |; `
assign mcasp_afsr = mcasp_afsx;
% E6 s4 W& W5 s9 N7 m9 cassign mcasp_aclkr = mcasp_aclkx;* ]) V  ^, j) [8 H+ q- j
assign mcasp_ahclkr = mcasp_ahclkx;: }9 Y8 F4 }* U, u4 P$ w; m
assign axr1 = axr0;
# M' }! \" v8 ^4 S5 ^- F

$ e% R: l8 L! ]/ k
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

* c% ~8 v( x) Z7 d; d$ s
static void McASPI2SConfigure(void)
# ]- x1 c6 ?) k9 L' }' \; u5 o{5 w% C3 s6 e$ S' t& m4 t* O3 t- v
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
' f9 X/ j4 O% iMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */, E0 b4 |6 v0 m0 q" @) S
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);+ q6 y  P- t9 |1 ^" D
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
, C! V4 c: v: b3 u5 z! A. C3 `2 {. dMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,  A! E# B# ]+ y# \8 ^. k9 R
MCASP_RX_MODE_DMA);
+ C" ]2 N' I9 a0 F3 ZMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
: Z# p8 X, U: V# p* V8 v6 BMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */1 o7 o7 J2 N7 \3 _
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 9 o' S& R. K( T/ c" \* N
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);# G7 x; C0 K/ x/ r; G
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
/ t( N! R8 B) P* z1 ?0 ZMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */' M) M5 m* N% v. j( A
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
/ Q" C: `+ Y! q( {0 H2 L: v# _McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
" y& F- m/ I4 `7 _McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,$ r* p* q% K2 `' }: {
0x00, 0xFF);
/* configure the clock for transmitter */. ~0 K4 j7 Y8 m) _' o2 O5 L
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
9 f$ O: e% E! a' j! ^McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
1 P  v% a, ~$ q' z, V7 i  {McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
) m/ Y* z+ y  y0x00, 0xFF);
& b8 m' f* ?3 C: v& c/ q5 ]) ~
5 [$ I9 `; \+ p* f0 I3 r4 x' \/* Enable synchronization of RX and TX sections */
; z+ W( N8 H# ^9 B+ cMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */5 x# c$ w1 ~+ ]% B
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);; G! N: y/ [$ N. _: i
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
9 q! y; c  A# r$ V4 C5 e** Set the serializers, Currently only one serializer is set as
  H6 D5 M7 g( [; `. O** transmitter and one serializer as receiver.  H# D7 T# m3 }4 F2 r  G
*/9 \$ i# u9 z' T6 E' W
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
1 w9 _3 z( c3 E' Y7 z2 _McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*  A* S1 w# ^! l$ `
** Configure the McASP pins
" f# ]" p7 m) Q0 m** Input - Frame Sync, Clock and Serializer Rx$ X6 o0 V6 N. Q8 \' z6 C
** Output - Serializer Tx is connected to the input of the codec # l3 J' `: m& U( f
*/, C/ {, f' ^* U1 E* d0 v0 `* ]
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
1 w" q( D, I. o; |8 n$ f1 oMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
) |9 P4 _. x, `3 {6 ?6 e4 LMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX: t: d2 H$ B( _7 h+ W" H
| MCASP_PIN_ACLKX
  i; s* F5 @; m  z6 t2 x) |+ v0 k| MCASP_PIN_AHCLKX+ a& m5 r0 Z2 o8 x
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
  O3 J" {- i5 V3 jMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
# I8 u+ A6 B# b( L; q| MCASP_TX_CLKFAIL 6 g; b: b6 o! G4 t
| MCASP_TX_SYNCERROR4 y" ]3 B+ r* K- U" N1 B2 _
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
% T( `, M8 x( a: D# P| MCASP_RX_CLKFAIL  Q$ l' z5 h4 a! I0 [
| MCASP_RX_SYNCERROR
+ j/ |/ R3 t8 h; F3 g* R| MCASP_RX_OVERRUN);
: d- o( x3 w+ u3 ?5 K# z}
static void I2SDataTxRxActivate(void)) B& {3 U5 y. k6 ?: G* q  K1 ^
{
; a( v* O$ A; k' r" i- J( j" o' n/* Start the clocks */  h' a' ~$ y0 ^. k3 F/ e' J
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
5 v! K7 h$ F) O, pMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
3 U3 i( k0 E0 K: X0 SEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
) i# J, \/ n6 z! f/ wEDMA3_TRIG_MODE_EVENT);, A0 w  Z! F+ j
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, & X/ w5 z, F4 M. i: i
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
- S7 _$ P  M% B6 U1 @/ U5 KMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
" W+ [6 T' s' ]! n4 p. |( vMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
) N8 z! n: [3 \0 m% n" mwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
. C: L1 \2 A. x& ^. c! IMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);$ |) k( X7 w- O% H& `
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
2 h2 D6 f2 a9 G. p" ?6 r}

  E2 ^  p* L: P2 ^5 u& O6 L
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

6 U. d" _- k  U# }8 X0 v
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-22 01:14 , Processed in 0.055459 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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