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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9117|回复: 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,
: \; Z, b8 J. D0 qinput mcasp_ahclkx,% U$ B, P& W& O7 k) E% B0 C
input mcasp_aclkx,
1 y: T3 B: D' g  ~% j1 Finput axr0,
8 S8 w' J/ _" T' r( A. k4 A/ N1 {0 |* X: U
output mcasp_afsr,
3 t6 H& G) \4 A. H8 Toutput mcasp_ahclkr,
  ]% K9 T# i  u; doutput mcasp_aclkr,0 T  L# V$ r/ \6 Z& n
output axr1,
0 k# P( T" j  A
assign mcasp_afsr = mcasp_afsx;
; n, h; d' A( K2 i6 D0 P, Fassign mcasp_aclkr = mcasp_aclkx;
6 s7 |8 x7 T1 Y& o0 o8 Kassign mcasp_ahclkr = mcasp_ahclkx;
6 ^- i. S% K  j7 E; ?3 A2 n" A" A) Nassign axr1 = axr0;
/ t8 U5 Y$ W  v

% u4 u0 N7 l! b0 e) L& e
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
4 P# ~- J5 J3 G( f9 r# j1 N
static void McASPI2SConfigure(void)
* L- j4 J' G* g5 O" `{* t/ i$ D$ {4 L* q% o
McASPRxReset(SOC_MCASP_0_CTRL_REGS);3 p; \: `% }7 u& E; I0 q
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */( r4 C( p: Y2 x+ e& e' c8 ~7 V
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);( @  ]! V1 g4 |6 `
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
1 ^/ I2 }. q0 B' H" b& J, z, FMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,* U& z& a1 l  Z  d6 ^
MCASP_RX_MODE_DMA);- d, k6 s8 v/ f$ q7 b
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,- u* \9 v4 }: z# Q+ B  x1 X0 V
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
  X( ?! D) |/ m# Z5 p: d8 @( gMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
4 Y& {' `+ z# b. n8 t' y. WMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
( Q. Z- g7 m( _McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 8 s- Y; E: B2 H
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */' r1 w0 }  [3 b) U
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
( W/ Q$ _; n! e3 L) x- w3 `% `McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); ( w' G' f  l8 N( ^* A1 ^2 O
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,0 t, B) c# O3 U2 w9 H* {+ [5 y' Y. J
0x00, 0xFF);
/* configure the clock for transmitter */- C+ T4 @& s6 c  {) u5 u
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
/ ^4 }* O. @) R5 iMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); 0 E" `; `$ t4 }0 d5 _. n6 Z
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,1 |6 G1 C) b' Y' I
0x00, 0xFF);
% \, y) m  i, }
- N0 z- D; @: t! M0 B  H9 \/* Enable synchronization of RX and TX sections */ 4 B& K4 E: W; K* w5 M
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */4 U9 b& g$ f6 w" }
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);" I# T& ]. q5 t* J3 r' \+ L
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*1 [; u) S2 ~! j- a3 x1 n
** Set the serializers, Currently only one serializer is set as
: K. m- O, y8 f  _. N/ W** transmitter and one serializer as receiver.
/ E9 U) r5 I  `0 E# O*/
6 j8 B. b. _* V* }* Z" HMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);. |, Q( y: G2 L+ r2 L8 Z- t
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
8 x( @) ]3 i6 N' G6 g( K** Configure the McASP pins - r. l, S0 G; O" }% k) R
** Input - Frame Sync, Clock and Serializer Rx
& l( o  J' z+ S7 ^9 T** Output - Serializer Tx is connected to the input of the codec ! y+ n, q9 k0 p9 ~: H# g
*/2 }: B! K  A" W. C6 g0 S$ i8 r0 V2 }
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);) J- z6 q& [4 b3 d8 F3 J1 C
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
$ T6 \& Q3 L: K) h& k+ a, f6 qMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
2 q/ A* e- J+ E  ?* K3 B/ j| MCASP_PIN_ACLKX3 F3 e" V- s: w- d1 H5 w
| MCASP_PIN_AHCLKX- e; E3 y9 p  N0 A: i
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
0 Q% n9 M( s; X; H$ e+ lMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR 3 L$ F; H! i3 I/ k( k% F
| MCASP_TX_CLKFAIL & i8 f* y  C: [% x
| MCASP_TX_SYNCERROR
) E: A! z* O: v* ~$ N  o+ G' D: B| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
! g7 K' X% Q# s3 E: i+ x3 ]( H9 a| MCASP_RX_CLKFAIL
' J: j1 A" q( T$ c4 d0 g| MCASP_RX_SYNCERROR 3 m6 n# {) G5 C+ {6 v7 F8 t4 S8 C
| MCASP_RX_OVERRUN);
3 f! K& t6 @" P& D; _5 ^8 a}
static void I2SDataTxRxActivate(void)
( N1 k& {. [6 V5 Y{
' ~* K- f$ {5 u# o' I& j/* Start the clocks */
* F7 \" R( m4 |2 V; }McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
/ G8 o# b4 G( ~8 WMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */& [7 ^' ?8 Y$ [, j" P& m
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
2 ^( A' O  W+ m+ A, GEDMA3_TRIG_MODE_EVENT);% k# W( v" g( p7 M) o
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, & i) I' C, \8 Y/ E4 S
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */# r9 u' f3 M- T* r. Z$ z4 w7 i
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);2 t- H6 n2 z+ {) {3 `
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
- ]) b; B; ?3 Z& s, ?7 n2 Y4 mwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */( i6 b! r* `2 L% s( E( f
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
$ N6 b4 t8 [" r; [  \4 W: ?McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
+ D/ y7 y' r+ P9 t5 K9 |}

( y) g8 i) X2 a& F
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
' K6 g4 {) w1 _& f
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-19 18:47 , Processed in 0.038576 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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