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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 11329|回复: 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,
, x7 m/ K) ?0 a+ M7 Linput mcasp_ahclkx,% K- J% m3 T0 P9 `/ o! S
input mcasp_aclkx,
2 O; S5 x- ?8 W0 ]input axr0,
5 |1 Z4 M" \9 n& F, T; c7 K0 C
5 T4 t; m- b; ^/ Y6 E! [7 w% zoutput mcasp_afsr,
, g9 U! _2 O% u: {output mcasp_ahclkr,
  c$ G! j0 n& k1 E- z  ^output mcasp_aclkr,
6 A) {# ^) {7 `! coutput axr1,
1 ^: E1 L3 t8 ?! \
assign mcasp_afsr = mcasp_afsx;3 p* ^$ [0 h- ~( ]5 y& T! S8 ~
assign mcasp_aclkr = mcasp_aclkx;
' T9 |, ^! v. Q! H- B* \( L0 u5 \assign mcasp_ahclkr = mcasp_ahclkx;
. T: u5 V+ X: @' xassign axr1 = axr0;
. o* @1 a& @6 m/ q( o

, Z, c- n1 k8 ^+ X
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

3 \: H; ^8 j# q0 R% A8 \
static void McASPI2SConfigure(void)( w5 d9 K! K6 A% a
{/ ]' p: M) n8 y% S2 E0 z
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
  k5 A6 a3 U& S/ P& i0 I, ~. q0 OMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
# L( J: K, Q- m; w! pMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);, L9 B1 O* C" h" U" F
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */" h; g* F" f1 M6 S
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
6 m6 W: T: F! w* e6 w& i3 _+ l1 L. }MCASP_RX_MODE_DMA);/ d2 ^, o  v: N- P0 q5 y6 _3 v8 A
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,1 j6 ]) Y2 `1 {6 h/ Z
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
; m4 J0 g; s: DMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, % Q* O6 y8 ~: g; f& M
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
2 d, h) R: l$ U7 d: c' lMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
9 w) F7 `  ~. `# p) `MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */7 X& \! n, D" s, K1 y' u
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
+ Y0 P5 n4 E3 E" c+ r$ d0 tMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); , y- y- L7 o$ l" g( ^+ b) d  V
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
! p- {, D) f% k( }! G0x00, 0xFF);
/* configure the clock for transmitter */
, B2 {) `0 _* p( ~2 f  \McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);2 K( _) j$ D: N: B; d( a2 j" J; o& [
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
5 R, Q; n8 D. z( L! o# vMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
& m! x! r. ~* ]0 D+ w' b0x00, 0xFF);
* t% y  q2 x5 [6 C6 f" R. K- Q
/* Enable synchronization of RX and TX sections */ 8 y  D( V) a# y! _% ^( h6 e
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */; L* u/ ~; t" `& J
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);* A4 l% m% q, z% o; Z: k& V4 b3 \
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
2 H) s$ G+ D# }. x% F% e* L- z" U** Set the serializers, Currently only one serializer is set as% _. a3 }0 Q/ I) u
** transmitter and one serializer as receiver.* X6 e) c3 v" F# O, D3 n
*/* _2 a0 c# ]9 p. u2 X. w- W2 M# v0 q
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);/ W, u/ u. ~3 [, E6 ]" L6 m  M
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*/ a1 T% Z5 ~! ?: {; \
** Configure the McASP pins
/ F2 M# O* n/ E0 \8 S  O2 Z** Input - Frame Sync, Clock and Serializer Rx
& ]0 d6 ^3 G. T- W2 a7 f( v** Output - Serializer Tx is connected to the input of the codec + z& @4 A' J" D8 _7 W: j: ]
*/8 k; V$ v% {" ?# S3 K% M5 @
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);2 L. V* m; s6 {5 t
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));/ i' ~4 D* r2 p" @/ }
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
/ |3 `+ T  R( X( G2 z4 I| MCASP_PIN_ACLKX
$ {$ @/ R6 `& _- n0 j1 C5 w* H, X" R, I| MCASP_PIN_AHCLKX- [7 U; O! y2 C4 a
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */8 b0 X" q, l* i+ T) H4 i) P* ~
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR - d! T# b% m: N
| MCASP_TX_CLKFAIL 1 s" C0 {5 I0 h7 [5 }# T
| MCASP_TX_SYNCERROR/ C0 z2 m, Q) D
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
; z2 w* s) U) X| MCASP_RX_CLKFAIL7 m1 j) [5 |3 ?- D3 [. C
| MCASP_RX_SYNCERROR
( p! b- U2 b/ ]- `1 o0 O7 R| MCASP_RX_OVERRUN);
; f/ b$ n# V+ M- B5 [}
static void I2SDataTxRxActivate(void)
9 l* i2 u8 `7 l{
! u9 y( H/ A" `$ }  f& {& H/* Start the clocks */' V$ o) v6 r6 `/ f
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
* c$ ?% R5 @3 ]* q) nMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */( R. F8 J2 A% a* `  D! O; h) J
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,, P( A" q* H$ y, j2 U+ v+ h
EDMA3_TRIG_MODE_EVENT);
/ _' P4 R: @5 ]* G( I/ O/ R/ aEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, ) B  ^% z; x" o
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
. F4 J8 H+ ^1 Q; x" hMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);  b: a! v# n2 S6 `  e2 x
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */* @" K# a' g$ M1 v) V
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
% ?3 g: u' I: P' {McASPRxEnable(SOC_MCASP_0_CTRL_REGS);4 Q- b6 _; n% r+ h
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);& \+ j% W- F: u/ |/ {
}
$ k9 l% V7 |3 @
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
$ ~6 ^( \2 S: }% M# J. J( p
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-2 11:34 , Processed in 0.039463 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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