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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1215

积分

金牌会员

Rank: 6Rank: 6

积分
1215
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,
5 G6 D' [5 L7 Zinput mcasp_ahclkx,, V$ B  z6 ~  S9 A/ t+ D$ w
input mcasp_aclkx,7 K! v. g5 A/ r% ?: N
input axr0,
/ S' A) M7 x( P
* R9 e  J5 c# q/ ~. Noutput mcasp_afsr,
: X/ r+ P& c2 I# foutput mcasp_ahclkr,4 s; c! B2 J" Z2 C# z
output mcasp_aclkr,4 w6 ~3 r9 F0 d1 `, ?6 f4 Z. ]
output axr1,
. N, W; O- v: W" L! X6 p
assign mcasp_afsr = mcasp_afsx;
: a. @% f0 }# v% n) ?% |/ J5 Sassign mcasp_aclkr = mcasp_aclkx;" l: I7 j2 W% E/ G9 @* v
assign mcasp_ahclkr = mcasp_ahclkx;2 L: J* h2 z2 P" P* W2 I8 y8 o
assign axr1 = axr0;
5 `6 B! m& H; t: G
2 I$ h" ~" B7 V+ \! [" c8 u) e* ~
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

  r/ V4 j/ e% e8 `" \
static void McASPI2SConfigure(void)
2 K1 Y( I  \5 i2 f1 }{
' u. w2 s3 c0 uMcASPRxReset(SOC_MCASP_0_CTRL_REGS);; L( F& F( q- _) |: {
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */  |! Y( `, U( t. P8 S% f# E
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);0 \% g; F0 z3 E$ m& w
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */+ y+ m" P' E0 |; |' _1 C1 n( [
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
9 L! y, [9 e& |( {, i, z4 u4 C4 Z- I5 ZMCASP_RX_MODE_DMA);
6 x8 K; L5 s3 a6 w- Z, F- e2 dMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,0 o. ?# _6 I+ |9 ~; E% w% R" S
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */. G) W% i( P: ]/ ~" m( B7 ~" A% C
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, . Z/ w9 V+ m  @0 D2 o1 t* S$ b
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);9 \3 x: m3 F' g, R( Y
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
# v/ R4 R% s' Z3 QMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */) j3 P; T% q) J: v" L+ R
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
" }  n. `9 v: ?# ~McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
& [5 F. x2 I( h7 n( N: M. T4 MMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,  Q; L8 P* K8 x2 ]
0x00, 0xFF);
/* configure the clock for transmitter */
) ~" x: }8 ~& x& @1 hMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);" r; }. O, s0 E* ~% J* i
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); + G; n0 p" f3 m* O8 B% `
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,0 P; O/ h$ k: V# p1 u6 c' T
0x00, 0xFF);
7 p' d) f1 T; Z8 k( J% v$ b# X. Q' V$ v
/* Enable synchronization of RX and TX sections */ , v+ z+ @' E9 l9 O/ e; l
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
3 q) K% l+ t/ J8 C4 r$ YMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);' i2 ~) u9 y: ~/ o
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*0 f0 h7 z+ ]4 a8 F1 H* _
** Set the serializers, Currently only one serializer is set as' j, p( z' T) q; ^9 C
** transmitter and one serializer as receiver.
; f% a" I4 }, u/ d; B) L*/
, r1 j# |% w1 T3 CMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);9 U2 I$ y8 \! n& e# ]+ g3 _
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*$ D! W6 F; z+ r" F; R
** Configure the McASP pins 4 l8 u6 ]( |8 O* ?, r
** Input - Frame Sync, Clock and Serializer Rx
7 b' O: K  V  H  T9 U% K! L- a** Output - Serializer Tx is connected to the input of the codec % g3 O& A# r. @& I
*/# }" _# e# `8 e7 Y5 ^, H( f
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
# j- h% H+ Q1 w" k! ?# N1 q  sMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));' T4 O' \, V, I- g; i  ^7 s
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
  S: a9 r2 O* O, Y/ Y- ?- Y| MCASP_PIN_ACLKX) r# H' _. f, [+ J+ |1 Z- G) N
| MCASP_PIN_AHCLKX
9 [4 _4 C  V; z+ p/ U: R" ~! l| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */! h7 D( E" n. N- }0 Y! p
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR 0 J% T$ R' `' p6 f, y1 m
| MCASP_TX_CLKFAIL
# A/ c! v% _6 f" A* B5 g5 U| MCASP_TX_SYNCERROR
( n# |5 p. k! g  q" _$ h; x' x| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
6 Z; ]# w2 O7 o) h+ _| MCASP_RX_CLKFAIL
- W" _# W: w/ h0 O" o| MCASP_RX_SYNCERROR
  o* z! |* `) Y5 H$ P' S1 ~; L| MCASP_RX_OVERRUN);
* `* q% Y( I. f}
static void I2SDataTxRxActivate(void)
4 W* }4 {( _# C, E2 D7 U+ Z( M- x$ v, \{9 }' {& d% v) X/ i; o
/* Start the clocks */( S( Q) f1 A) g; j
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
$ Z$ ~' D7 |7 L$ ]! pMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer *// U! W6 S2 w1 X) u% l- q' L' J
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
, W* q" ?- ?% j2 yEDMA3_TRIG_MODE_EVENT);
# J6 W8 O% @+ U& EEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
: B5 ^! Q8 m/ u3 F7 T3 hEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
: S0 Z. n% K) u# ]; q. ~! w* fMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);& @0 J* c+ O1 U* H
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
. `1 b7 L5 N  swhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */6 w. w& N6 ^) [- r! W: Z
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
, e/ G; W# C; z& ]. sMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);3 L# D! I' c3 g0 ]* z
}
' S3 v! V2 ?0 b$ j+ _
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

3 H  t8 |6 o! x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-25 18:38 , Processed in 0.043463 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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