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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8446|回复: 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,$ x6 a# ^7 m3 e1 y* I
input mcasp_ahclkx,8 Z" Y3 a2 C6 i1 ~# l  R4 T, A
input mcasp_aclkx,  _' _+ C  ^/ J" Z1 C; `
input axr0,) E  S# ~! N) b+ Q: K$ y
  T9 O+ n/ m  z" g# d' g
output mcasp_afsr,
3 t$ }! l! j# t0 Z" G' y- qoutput mcasp_ahclkr,) Z" H# |! H8 H( q, F# M. p  I
output mcasp_aclkr,9 U! z% V: M% a* a. q4 N4 S2 u! p
output axr1,& W. J4 j9 t5 x. t
assign mcasp_afsr = mcasp_afsx;0 N* w4 M( M1 J; I$ \- i8 V
assign mcasp_aclkr = mcasp_aclkx;% ^$ g/ y0 P( N6 p
assign mcasp_ahclkr = mcasp_ahclkx;: U" ~  f9 f6 Q7 ]; E
assign axr1 = axr0;
4 n/ ^( r1 G9 \5 F$ E/ w3 n6 T

9 W& J, M1 @5 s/ a' }
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
6 x- r6 \2 H: D% m( T
static void McASPI2SConfigure(void). R7 x# u2 T2 D! B1 d1 Z
{" J! \2 [0 C, ]( ?" r1 @
McASPRxReset(SOC_MCASP_0_CTRL_REGS);% l  A7 z5 `9 |* b2 X- B
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
0 R+ j1 R2 d$ n5 mMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);) W9 C# ]2 K' R2 `% H7 Q
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
1 h4 K+ m: n& F, m, K+ F: ]& hMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,2 i1 x' C% O$ k& S% g
MCASP_RX_MODE_DMA);. B: W' l2 ^9 o
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,1 ~) |. [" J% A
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
! s5 ]+ `- }- L( @McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, ' Y4 u4 h2 I, U, N+ X& k' `
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);$ I& M5 y- D  U
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
9 F, p- [+ S6 }# F" n9 @MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */) y: u- X9 D' m
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);+ U$ ?1 Y# T* [) h  p* ^
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); % _4 D0 {3 L8 p" h7 |$ z+ k
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
, W4 x( Q# ~+ T0 a0x00, 0xFF);
/* configure the clock for transmitter */
) X3 z# e# i6 zMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
" T7 W6 P$ Z1 ]( k  _, PMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
5 t' J3 }& k8 M+ A; h' K1 K! _5 ]0 pMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,: }- k. V. e/ Y# }" u# s) d
0x00, 0xFF);
- l8 u' Y* @) L" {" u
* U1 H+ p5 U$ }: @/* Enable synchronization of RX and TX sections */
- O. s3 F: I1 O+ X1 g6 wMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */" Y$ p. N* L! A9 N0 P, V" a
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);/ y% \9 ]; a: a% t$ m+ f
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
) _1 N+ n6 b- q% n4 b, p) R% j" O! [** Set the serializers, Currently only one serializer is set as
# \2 G( V9 g  r1 _* q** transmitter and one serializer as receiver.8 t8 b% B: }# o4 U* c+ R
*/
5 B/ Z6 f; i! t6 q9 IMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);' x. |* v7 \2 f! o
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
9 h4 R1 E9 q/ N5 O9 [1 w5 ~9 {** Configure the McASP pins
; ?& a3 c9 N2 E  t) e** Input - Frame Sync, Clock and Serializer Rx
) o4 [8 y- g+ z1 G; Q8 w3 R4 [** Output - Serializer Tx is connected to the input of the codec
# ]# I" S+ T4 [; h# J*/
* t% ^( w0 t. ^( |: P6 lMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);/ D1 L7 I' Z/ p
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));2 y- ^# d# t7 B8 j5 ^7 D, h
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX& q% v. v8 ?7 J: `; h% e
| MCASP_PIN_ACLKX: D9 ~3 r0 X8 F2 C, C
| MCASP_PIN_AHCLKX
6 Y' N* B% l& f9 p: D1 m* C5 ^. a| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */0 Y& m" c1 |/ g
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR / `/ X+ B, {) Q3 w1 l
| MCASP_TX_CLKFAIL
: E0 ]7 U7 a; B# {/ `  L# ~# J) Z| MCASP_TX_SYNCERROR
; W2 A4 ?! B' `/ B8 x* ]| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR 5 T3 l4 M5 m4 Z$ k
| MCASP_RX_CLKFAIL
' X# I  k( g9 s  C6 n| MCASP_RX_SYNCERROR 5 E+ |# }% ]+ n  _, s
| MCASP_RX_OVERRUN);$ x8 \( P( M# `1 A' B
}
static void I2SDataTxRxActivate(void)
: g7 h: z  j5 P+ Z/ g) w{: b' q4 t, p  o7 x! ~0 }; g
/* Start the clocks */
- t; ?2 l: G2 F* d4 H0 x! t3 ?McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);& y' G  r+ P$ j5 \5 T
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
& |( U1 S6 p4 w7 j3 U# L6 ]! aEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,6 x9 e% v/ t) _. i) Z9 Q& f: h
EDMA3_TRIG_MODE_EVENT);
4 h, S! g( v3 N4 {7 i( lEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
" g  R8 z* t1 MEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
' K: ]' n: ]3 ?, h# }0 `# PMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
% K  P8 Z  v* U% H# e& m+ kMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */1 U' I% B- e- k% ~# S# y, C
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
6 U5 p. G8 {) N8 V1 ~9 h) o% d! aMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
) w; B2 U2 N4 f5 Z- KMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
' \9 i9 t% A# s}

$ x2 Z& @0 o2 i$ @
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

! A7 C0 ^2 U) ~# [3 u' V6 e1 E
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-23 12:44 , Processed in 0.039741 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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