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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1214

积分

金牌会员

Rank: 6Rank: 6

积分
1214
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,- g' g5 W9 V. [9 p2 `/ y/ s* b
input mcasp_ahclkx,
- f6 s% P' J% ~# X" ^input mcasp_aclkx,
3 t& m8 A  v2 O( R2 M' |input axr0,
- ~" @" \7 `, I" R  V# o- p6 i+ [! w5 |4 Y
output mcasp_afsr,
9 o9 n9 f+ t5 E- F0 t/ Y) ~5 moutput mcasp_ahclkr,
8 {- @/ {4 p4 }0 U2 Y1 joutput mcasp_aclkr,+ N+ A" i# O1 _& E5 y5 K( g
output axr1,
, n( N* s% @: g( g. Q- f# z1 s
assign mcasp_afsr = mcasp_afsx;7 o0 |8 u" u* Z2 ^4 ^( @' Z
assign mcasp_aclkr = mcasp_aclkx;
. v2 z4 Q4 r* jassign mcasp_ahclkr = mcasp_ahclkx;
1 h$ N) |. Z  b- P! m' p! wassign axr1 = axr0;
( `$ \" j' v4 e. n$ l3 G  G

! }7 U7 f# ~% k0 c$ f0 p% g
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

- Z7 k9 P# l; W( `' s( e
static void McASPI2SConfigure(void)
8 K" Q, `4 Q+ M" f; O) @{3 U4 }8 g# M! i0 ~  o
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
  [6 ]# z. }9 mMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
% T4 p5 N* `& a" _9 _3 a& tMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);( N+ N9 z8 [0 m( T; X  r8 Q- V
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
. w- E" E4 p8 ~1 q7 m* }McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
. y8 J, Z( B3 `8 Z& gMCASP_RX_MODE_DMA);+ l" x: n( y% j3 s, m" {
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,, s- ~  v: m8 j& I
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */( F, U/ n, Y( D) s
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, ! Y. Z) ^" m9 q
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);; B. k4 q* K1 [& I* V* S% F
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
& ^4 n$ I4 y; {. n& k7 M# C, SMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */3 d; H. Y* Y# `5 p+ J
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
2 J1 w, q# K! N! K& x" P' b  H# @McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); ' L9 w+ M1 ?! B  B  i& E
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
/ J6 g2 e: p4 [' v& g6 U8 g0x00, 0xFF);
/* configure the clock for transmitter */
2 N7 e8 h2 z  }0 ~0 K  W# [McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
' y- d5 ~1 L, @3 Y9 CMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); # y+ T: v3 O1 G& c2 L) P
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,, Z! @+ A+ L3 n' Y
0x00, 0xFF);  ^6 |2 K' @0 n; V
( p& U7 K$ Y; H! K( F
/* Enable synchronization of RX and TX sections */ + T! ]" e* [# e: y+ R3 W# _, b
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
1 B8 {- p$ Y2 V& r$ g9 `5 |5 u6 ZMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);9 T- t" Y4 H+ [# x* u
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*/ ?, l6 J. T! [
** Set the serializers, Currently only one serializer is set as+ G" G& S% R/ u# R
** transmitter and one serializer as receiver.
/ n  i! J8 ^1 `( d+ v*/
, H; ?( z& |$ @  t: ^+ @, k2 AMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);8 V2 u$ F  `4 e+ y5 ?& E
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
( N. q  r+ Z  Y9 n** Configure the McASP pins
3 Z3 Z) \+ u/ e& V) V** Input - Frame Sync, Clock and Serializer Rx) u$ K  [! T. y- q% L6 a
** Output - Serializer Tx is connected to the input of the codec 2 Q# o/ ]0 w3 E
*/
- C' N5 s  \: d8 ?& YMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);' X: N5 R- x' q" _$ x" u
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
5 {, g8 K9 ^' A, Z, @' F3 d- ~9 pMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
( O' {' z1 r; T) g| MCASP_PIN_ACLKX
0 Y# R4 R9 r, H# A* K; h, p| MCASP_PIN_AHCLKX
8 Z8 _+ ~, E  f) M! s) G| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */8 O) \3 N2 n- ^! A
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR ( j4 I# o% X0 s& Z3 N$ T9 i
| MCASP_TX_CLKFAIL
7 V" u$ ~' Y$ v* M| MCASP_TX_SYNCERROR
! F% d. @( D* p  u| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
1 X: B8 T1 `0 L| MCASP_RX_CLKFAIL2 U' W$ u- ]' N+ f# f
| MCASP_RX_SYNCERROR
9 b  \0 Z4 N- V9 y| MCASP_RX_OVERRUN);4 q% p9 D9 e: e- a; z
}
static void I2SDataTxRxActivate(void)& C. w8 e* H: u, R
{- [" e) h) |: ]% r' G1 M) P
/* Start the clocks */
0 P( d& y% l8 h. d) e+ k7 IMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);( z9 r0 X% `# {  c. k) K( ^
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
3 f; k/ K) p$ Z' O7 K/ WEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,. y$ W, e% h: V0 I
EDMA3_TRIG_MODE_EVENT);( M6 g) v* H, c, |. N( Q
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
* t7 a2 J$ h4 Y4 Y) a/ Z; v: ~EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */( \/ h% M% X4 F6 ]' p5 [) u
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);( O( k8 C* v3 u! T: ^4 G$ m( |- `
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
+ l" W! a9 g# o  U  a, p* [/ ]6 [while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */3 U3 p. @) x* _% Y/ \% @
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
/ `7 p/ o1 Y+ }7 NMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);8 b. K$ i. U) b
}

& o, K! W, d- f2 J3 O: Q3 @
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
" z3 n& h% w! i4 |
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-15 04:55 , Processed in 0.039820 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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