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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1213

积分

金牌会员

Rank: 6Rank: 6

积分
1213
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,- g# I* h/ T. a0 r1 f3 L2 p( P
input mcasp_ahclkx,
! D4 g! a5 U" Ginput mcasp_aclkx,
1 G/ n9 v3 F, ^input axr0,
2 n2 E7 x: p  Z+ V6 ^2 G( Z6 O  W. A2 f  r, ^: o7 W
output mcasp_afsr,
# u9 p, |8 Z3 G: e5 ^/ ~5 Y  ^output mcasp_ahclkr,
/ m1 E# j" x. B) a9 @output mcasp_aclkr,
  Q, j  X& _! M+ }# {output axr1,
" K. S$ |* P- G0 c
assign mcasp_afsr = mcasp_afsx;
2 L7 v' r9 @: c2 Kassign mcasp_aclkr = mcasp_aclkx;
0 M; R( G) _$ F# m$ K/ N* L4 ^, ?assign mcasp_ahclkr = mcasp_ahclkx;8 j! d8 X& I: a: I' w# P( d9 K
assign axr1 = axr0;
, x) D4 {6 ?6 S. q$ K
* w6 O# L9 @2 c. f
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
( u3 e9 z  X) B
static void McASPI2SConfigure(void)6 K5 }. J/ r/ z8 p
{
+ C- M) I# h8 O9 F3 v# n2 YMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
# Q' N/ E8 I- r& u* vMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */  q' u+ F6 Q7 H9 r3 B1 d
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);1 c- d/ G, d/ }+ w" D0 o: [
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */8 m7 _( Y. b+ g. t; j
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
2 H! j: j4 i2 t( c! D, D. o# I* v( fMCASP_RX_MODE_DMA);' A, [4 {3 w: b) ]
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,' ]* R9 x4 z, N7 m! C
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */$ k1 J3 R* i1 T; U: e3 F5 S6 q
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 8 E* @3 M1 {  ~
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);4 b' G1 G* [$ l( O! X' Z
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
5 \8 Y7 j4 E) @( B  n; p7 iMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */1 H' T% W) }( L' H8 R7 n/ F9 [' c9 \1 q
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);7 n5 L) {8 A7 m( t, ?* C3 b
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 9 S, w+ G  U# K, G, Q- B; S/ ]
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,( J% U. q% S0 t9 s# d
0x00, 0xFF);
/* configure the clock for transmitter */8 {1 [; B; D  r1 `9 \& f9 t
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
' O- U- k! m" y; f& f1 u+ ?: DMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); ( _9 l- r$ K/ V9 S
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,0 D9 X* A& U* d& J1 j( @
0x00, 0xFF);9 m8 ~7 {9 y' n5 }( n
5 M" w0 |) Q" ]+ \* O
/* Enable synchronization of RX and TX sections */ % W6 m7 s0 P3 \! q/ n: A4 U% `% _
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
+ A& ~% h1 R+ o  ~& |% lMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
0 ?& u  U! ~& L, u$ C# nMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
7 s% o. X) J& Q: V! p** Set the serializers, Currently only one serializer is set as6 C* c0 L  @/ e! W8 V0 f# Y2 C3 R
** transmitter and one serializer as receiver.( O7 V$ ?$ f* J* m* y
*/; z" E# T- m9 q) ?% t5 s5 `8 Z
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);+ T7 I4 I/ o( N
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
3 v, t( a" A/ q& {! f** Configure the McASP pins ) b1 l/ p3 A/ O. p+ E. v
** Input - Frame Sync, Clock and Serializer Rx, `4 t" i8 o+ x$ n# }" Z
** Output - Serializer Tx is connected to the input of the codec
' X( u) A) o3 n0 Q) V# j*/
& y: V& C4 w# j; |: ~' kMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
0 D0 S9 H' m8 M  {" q2 l, i) l4 JMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));* J, o0 Y7 X6 e6 B4 S+ F
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
0 Q7 p3 d. _4 w/ e4 M( g| MCASP_PIN_ACLKX9 P0 E  Y0 ^' ?+ o/ w5 w
| MCASP_PIN_AHCLKX
* w, s! |- S- g6 f| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
* A2 m" Y3 G% A& J+ x9 f4 vMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR : M% H, E% x& C  @# K* U
| MCASP_TX_CLKFAIL
- h. D% N4 O/ @! j2 P7 || MCASP_TX_SYNCERROR
9 w* W6 P, {. g0 U+ I% l1 [| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR ) _  ?  j8 b! Q# u) O- k
| MCASP_RX_CLKFAIL& H  C/ S. _$ O) i8 r, J6 M
| MCASP_RX_SYNCERROR
5 p, C% Q, e0 H" g; Q! ^| MCASP_RX_OVERRUN);
4 W* O$ d/ U/ e+ }- q# P$ Q9 @9 y}
static void I2SDataTxRxActivate(void)" ~) j! E3 a3 I5 O* e
{
3 ]+ s8 X- F, ^9 H/* Start the clocks */
* ^4 j0 {4 Y7 hMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);( @. B. D* {1 W( l: s* L  }" H/ ]
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */1 v& e( a0 g# ^/ `
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
5 u  e! W, T; N+ D: m, i4 j) U! o" OEDMA3_TRIG_MODE_EVENT);& u' p2 s3 E8 l# S6 d
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
: b. [' ?4 a; p/ FEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
" a, p1 o( @' [" j! ]" vMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
2 c+ c/ H" b' b' [* t$ s( eMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */6 T( L3 V& h8 P+ g) r5 k$ @% C
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
& D1 Y9 i9 X9 Z7 bMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
& B  g0 Q  {/ b+ A! U6 H: G; vMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
. ^. z/ p/ T, m/ [( j}

/ {: G6 T1 @) y; }
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
' D$ o6 f' b# W9 B9 u
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则


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

GMT+8, 2026-1-9 18:01 , Processed in 0.041502 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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