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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 13134|回复: 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,/ r; F& ^* _8 G9 R& A) @0 o
input mcasp_ahclkx,7 a+ `3 V: }( `9 Q1 u; E0 A( r
input mcasp_aclkx,9 ], z5 X3 S( X$ C7 G2 T% c
input axr0,
( p+ }. j0 k( ~# ~# {/ T8 B
' M/ i2 \( m  m  m+ houtput mcasp_afsr,
3 Z* Y5 N; t' o7 boutput mcasp_ahclkr,9 `8 r& K" c* V
output mcasp_aclkr,
, Z0 U1 S: O: J5 W: W1 j, Z7 }3 ~' Soutput axr1,
! B! v3 z- y* Q
assign mcasp_afsr = mcasp_afsx;. \, u6 Q! O! I0 }+ x' k7 V
assign mcasp_aclkr = mcasp_aclkx;
) z& e: z& s& @) j6 ^6 R& _# }assign mcasp_ahclkr = mcasp_ahclkx;
, I0 Z' W9 M1 A" O! A& O  {assign axr1 = axr0;

; _" u* `* b; o% f  _  @) b
: X% x  C- V6 V
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
8 h4 A: z5 K( X8 }) h3 k6 l* ]
static void McASPI2SConfigure(void), V( G  f0 C8 {- V4 q( z
{$ Y. H+ |( p" G: L, {2 t4 m0 ~
McASPRxReset(SOC_MCASP_0_CTRL_REGS);9 e% T! \/ T) V3 l9 `7 P1 d1 D
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
( ^1 j0 s+ i. {, J& `4 T9 @McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);3 k- `% N% V: a' c4 O
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */! h7 U+ h! N3 u: E) e
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
5 s7 O7 G# u/ HMCASP_RX_MODE_DMA);
7 T8 M# G+ ?0 s5 t5 DMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
' A  G- H9 r6 K% u$ o8 t* NMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */2 P' V% j! j% o
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
! P0 t  a9 M6 P2 IMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);+ b' N$ j) R7 m' a) V9 H: S( m" @0 ?
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, " t! v; T3 v& ~8 x6 Y* D2 j7 r
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
" g) c9 B# T4 b2 K* d/ BMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);  E9 \$ n" L6 z& D6 V, N4 k2 i
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
; y4 T0 ~9 i& L1 eMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,* e8 M- N* ~. _% k
0x00, 0xFF);
/* configure the clock for transmitter */" r" N  g- ?' o- v" v2 W
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);& P4 I) V: [. U3 s- }1 t" b
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); / Q4 h' T) _) s' J# v2 ]
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,5 Z2 H' e( @& E7 U
0x00, 0xFF);
) k8 ]0 C/ ]) F% Y8 f( ], S# U' _
/ a; i# e4 P8 ^/* Enable synchronization of RX and TX sections */ ( S5 ?8 L4 U: h  A, D- w) X$ U
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */! w& `" V9 M- Y( Y
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);% P0 B3 `5 ^$ T+ W
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
  S( K: T4 W4 Z0 N" Y: n! l** Set the serializers, Currently only one serializer is set as8 a* Z/ R1 u$ a6 ?
** transmitter and one serializer as receiver.
2 e3 n* G7 ^. f*/
# {- L! @) `1 t, y- {5 HMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
8 t' {  o$ ~$ Q4 O: ^& h% oMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
* k; |* ^6 X! L" P) m8 v** Configure the McASP pins , @4 V/ \( B7 f( X* @" m4 R
** Input - Frame Sync, Clock and Serializer Rx9 b% v3 b" D- @6 s
** Output - Serializer Tx is connected to the input of the codec ; h" |' L# E& B+ L
*/
$ K+ V6 M6 K! r  }. Q3 DMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);, u: G2 l1 \8 w5 X! E9 Q. a, ?
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
+ A: V4 C: y) K- B4 @. sMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
% d0 Z$ F! ]+ ~| MCASP_PIN_ACLKX
9 m* o1 L4 q3 g* P3 ^| MCASP_PIN_AHCLKX' ?5 ]* Z0 g# c6 g! j+ C! @
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */' |- P5 }% u! d5 r* o" Q
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR 1 ~7 Y7 g8 Q  d$ M; w- P
| MCASP_TX_CLKFAIL 0 A6 f1 [/ a: x' ]9 o
| MCASP_TX_SYNCERROR9 y5 @% Y, j- x. Y8 `1 ~
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
$ R8 [- l+ ]1 T8 W' j+ a| MCASP_RX_CLKFAIL
/ h3 P+ I5 {3 D6 T5 z| MCASP_RX_SYNCERROR # W, F0 c: E# X+ z
| MCASP_RX_OVERRUN);
9 w" E. t) ~+ J5 C4 C}
static void I2SDataTxRxActivate(void)6 m* i8 k* a$ n4 u, X* z4 }+ S
{" T- Z! d+ e* c0 |3 `& s" J
/* Start the clocks */7 w. X/ a7 Z) E) ~' h8 X
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);- L9 D/ }; A2 T. j
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */, o+ M# M7 O0 W, Y  t$ [* I
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,& S7 M& h' w0 g! p- Y9 J5 N0 s* |5 p: j
EDMA3_TRIG_MODE_EVENT);
7 G% x# ^: c+ y1 Q% wEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 6 O2 w3 f: q  Z4 Q5 q* \8 i5 A1 m" X5 V
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */$ S( v% B. [/ }: n* U" h0 |& u- c
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
: z) B4 J7 b2 Z3 FMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */+ s- B, s* Q! s
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
# M5 ?, I! @6 e6 q, U" B6 `McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
3 A: P/ g& d8 qMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
3 e: G& n/ v9 G, w/ u' T}
; ~- R4 A) V: s5 I% G
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

3 V4 w2 b; b! Q- K
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-8-31 13:40 , Processed in 0.047546 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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