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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1216

积分

金牌会员

Rank: 6Rank: 6

积分
1216
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,
3 J' e5 v3 o/ h# y3 Y7 iinput mcasp_ahclkx,
9 `& t6 w% J# F1 A% rinput mcasp_aclkx,
6 J0 r! v2 M+ t2 U) \input axr0,
; t% D0 y0 L" Z) m* w( A* S# a& R4 |% n) J
output mcasp_afsr,
& a# _4 k% t$ T& A2 x8 uoutput mcasp_ahclkr,
/ l2 N5 q  S) ^output mcasp_aclkr,/ s7 E& I! J; Q9 w3 V
output axr1,0 d5 z4 F8 Y8 `0 j2 ]
assign mcasp_afsr = mcasp_afsx;
. W6 O2 \* C9 F3 C; kassign mcasp_aclkr = mcasp_aclkx;0 x& E' ^) O. {) d& a
assign mcasp_ahclkr = mcasp_ahclkx;
  P: v4 \! |0 {- ]assign axr1 = axr0;

+ Q7 M& m- B8 ]
* w# A; j% V: @; }8 j% ?
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
+ c5 o1 o% z5 T: Y9 G7 Y& @/ F
static void McASPI2SConfigure(void)* b3 t6 M9 k% j3 ^
{& u* j6 S( W" ]/ `4 \% [/ s& l
McASPRxReset(SOC_MCASP_0_CTRL_REGS);  m5 p  R+ f& j2 F) @7 P
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */# o0 a: H5 ^) x' G: s2 p
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
7 }) o- m/ j! h% D3 IMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */& f% b) ]( {/ K+ }
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,, }: A' D+ J1 `( T2 c; z
MCASP_RX_MODE_DMA);" Y7 ?$ A/ w0 C# v- T& Z
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
' \2 j) o3 \# \* W% wMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
9 L- U" @( J5 Z# C8 hMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
, v0 ~4 t' j7 V& Z6 M5 i. sMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);9 O7 [; Y/ W$ f$ N1 q" d
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
2 o8 W/ U5 V: M* H/ c2 `# bMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */- z. G2 e) R1 f% V# q& G6 h
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
7 r( W) Y4 a! }' H. S* m3 ZMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); ( W# Y7 [1 [% B+ H+ W4 x6 Z
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,( V, B# o- g- @2 @2 e6 D
0x00, 0xFF);
/* configure the clock for transmitter */* ?/ B/ R1 y+ _
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
: r( p. M6 o) C2 R6 ~/ J9 SMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
  u. E4 P' \* XMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
, D" v( |2 A6 R' L( J9 I1 |. V( S0x00, 0xFF);4 W; w! o' v3 ^% P; N' w/ _
2 m  B; Y+ ]! R
/* Enable synchronization of RX and TX sections */ $ ]! U; t0 e. D% P; }
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
7 `  s4 W0 J$ g$ _9 I+ VMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);2 T: I6 B" H8 e- s5 e( R$ i/ I
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
. z: ^, a0 u! h) ?# y$ E/ S** Set the serializers, Currently only one serializer is set as
9 o" P4 W% h* ~. G6 ?# ]+ M** transmitter and one serializer as receiver.
0 J# ?0 r3 u& a7 {: i% p*/
% r6 a8 j* e4 P' J0 pMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);) E0 z( `; O* i, _2 Y; o! v- m
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*8 O7 Q9 h# p; w) L4 u" {" U
** Configure the McASP pins
8 m6 V$ L4 g) b: E% P& T** Input - Frame Sync, Clock and Serializer Rx
0 e/ n; n, V3 \5 g$ Y- Y** Output - Serializer Tx is connected to the input of the codec : y- G" M  b6 K1 E5 }) ]9 p
*/
7 S; r, I( J, }+ H. cMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
! c' `; x6 I& z5 LMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
) i& k/ f9 U2 p' F& G* p. E* AMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX' z. k" s( a7 }1 A  k
| MCASP_PIN_ACLKX
, Y+ B, I4 P- J* \' Y! g* h, Y| MCASP_PIN_AHCLKX
* w( j4 U& @! K" b  Z| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */- u( g5 Q) n% c/ N
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR 9 h$ F- }+ U) O% [0 O* B
| MCASP_TX_CLKFAIL
9 ]* F( Q* \: E| MCASP_TX_SYNCERROR. o6 Y$ a/ |. U
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
1 x, U; J- B! Q$ ^. i| MCASP_RX_CLKFAIL
9 H- }6 L% l$ ?; ^  I6 I| MCASP_RX_SYNCERROR : i! [2 X2 b' a8 }9 t4 o
| MCASP_RX_OVERRUN);4 C0 {! _6 F2 `6 M) L) P3 t
}
static void I2SDataTxRxActivate(void)
  b/ k! |) V; X' ^3 W2 |{
, z5 \8 A% u6 h/* Start the clocks */, d. Z. H1 [. v+ M5 I5 k* a6 V
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);( M- y$ D% p2 E( R6 }4 I' D
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */4 d2 Q- X- c* e3 \# L/ z
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
) M+ g" @0 C, q2 F) Z7 j5 QEDMA3_TRIG_MODE_EVENT);
: o! H* G( x: X- z, EEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
3 {9 C2 U% W2 ~1 g* o9 X8 KEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
  E: m. M4 c% g0 W  H( g! X$ s3 ~McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);1 V7 |5 n0 s2 v  X6 l' z9 e) u
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
' N7 P! v4 M" F9 K8 J% [1 [! Rwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
# ]$ u/ V) X% k5 aMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);$ q: Q0 l7 u+ n; s5 L$ l: C
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
+ s: L+ u1 b! R}
$ ~) \/ u8 s$ L: h4 M
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
- U7 P$ L8 }! ~
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-9-10 09:06 , Processed in 0.043867 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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