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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10687|回复: 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," T# {1 S% s% ~- h; j5 O
input mcasp_ahclkx,
: p+ P3 z% ]. b7 \+ Xinput mcasp_aclkx,+ ]9 S) S; G) p  v
input axr0,; R, _0 }3 h$ d3 B6 m
' I+ t+ q! u- n! N( e
output mcasp_afsr,
) E5 f- g! U7 w& j" x6 R- R$ J  Aoutput mcasp_ahclkr,
! ?) c5 d+ j8 p2 G& Woutput mcasp_aclkr,; }4 Z: ^) @3 [8 G2 J; h& }) F9 p
output axr1,$ G- t4 \4 T( Z
assign mcasp_afsr = mcasp_afsx;! u# D& e  _; h4 A( N
assign mcasp_aclkr = mcasp_aclkx;
; a2 v$ L+ T3 Z- K& v5 Aassign mcasp_ahclkr = mcasp_ahclkx;
; I" F! N* A$ x6 gassign axr1 = axr0;
" ?) V: Y% j: H7 c0 U

' k" L; R: K! C3 O* |5 p
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

  V* i# W* h1 _- H! [. b) p
static void McASPI2SConfigure(void)0 v/ `0 n! _" R: I: E
{1 ^. j$ g5 g3 i" \4 o. o3 ?' }2 N
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
0 |# p9 a; A1 h/ {' e, }! rMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
9 s; H, ^. x4 {" P9 @- ^, `McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);6 Y1 _  z9 O. e% ?( ^3 i5 P) i
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
2 j; ~! ^/ s; L* G7 x* i2 l1 h* BMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,0 |/ [% `0 C7 n% _2 [/ Y- D7 @/ r
MCASP_RX_MODE_DMA);( g2 h/ l" e1 w6 ]
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,  ?+ q& h) q  V4 I0 R$ O1 r
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */1 B7 E. Q$ V# c. `2 s1 H) U
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 8 e; w- }3 j0 X  X0 C% i
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);2 U/ ?0 v/ j3 G9 @
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, * a+ F' D( U# }7 y; K
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
7 Z1 C, {* |" E+ I: f: @+ @& nMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);$ @9 [' B. a5 j, _# T
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
. r( A5 @0 ]5 l4 \: OMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
/ p! Q% `3 ?* d, E8 J8 e4 h( W0x00, 0xFF);
/* configure the clock for transmitter */. m3 T7 D* }/ {: B, V
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
* G  s1 H8 [6 K* [McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); % U2 N* [5 _9 K2 q$ v; v2 g
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
9 Q/ F* x2 @0 N! K! R* [0x00, 0xFF);# \* J# j2 n( {! E* o, b0 j+ r8 J  A! X! W
/ N9 ?1 Q/ X5 N: @9 w, p. E
/* Enable synchronization of RX and TX sections */
  x1 g4 h* d$ x1 LMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
$ c/ N! w+ r% j- q( i5 |2 x' M' TMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
7 H+ V4 |* A) H2 M- Y& {McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
( \# Q& [% P* H( s** Set the serializers, Currently only one serializer is set as
5 u: I3 y# ~9 J0 C4 O1 k& _** transmitter and one serializer as receiver.; r/ b8 l. j7 g1 {
*/5 q; G0 c7 X) l+ y* C+ P
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
* P* @  a& \3 D) I8 E9 ]McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*% N& V5 E) c( c" U
** Configure the McASP pins # ~- N  k6 G& G7 F) p& N8 ^
** Input - Frame Sync, Clock and Serializer Rx# r0 ~9 {  q/ g. H; `4 O3 N+ ?9 A" v
** Output - Serializer Tx is connected to the input of the codec
& {$ w/ E( e1 [' J% b*/+ j  w, E7 `7 E8 H# e
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);1 i* l+ L3 ^4 d* L# ]1 m
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
9 D( V% X) U" E! wMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX0 j, U1 X! r$ e* @4 c
| MCASP_PIN_ACLKX
+ x& F1 M2 l& p, c5 ~| MCASP_PIN_AHCLKX) c3 A9 a8 Z$ C% m! _; w8 l% A
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
1 ]* W, s, I9 s( n# bMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR 3 W2 h- D3 F- P! k6 B  H( Z
| MCASP_TX_CLKFAIL
; d6 f, a# `, ?0 {1 [1 M- S6 W| MCASP_TX_SYNCERROR8 o" b" b! @- `' x" X8 x2 \0 e
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR 5 r6 E% K4 W- U! @7 A- f8 ?3 f
| MCASP_RX_CLKFAIL6 O9 E  o, T8 H
| MCASP_RX_SYNCERROR
! O  G" u6 M  |) P| MCASP_RX_OVERRUN);
) u9 N9 T" Y6 t# x& U& X}
static void I2SDataTxRxActivate(void)
" w& n/ `0 e" i9 a: j7 {( A{3 ]7 A9 `; |3 }* B- Y8 f# G
/* Start the clocks */
4 c# v7 \# z: j  z8 z; L6 _1 e0 v/ rMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
* r' f6 T4 S( X# nMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */1 L* |8 U* [7 b2 a9 {, H7 T! @* T
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
3 x, P+ I+ U* bEDMA3_TRIG_MODE_EVENT);  o+ t6 n/ r6 ?3 _# }- s; }3 y
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, ! v1 z+ _& e: I; ~
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */' n' O, z7 J8 \0 V* z! u3 k$ P
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
$ C$ n4 c+ d, c: VMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
2 W( ]2 z! p$ Vwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
! ?0 a, o( `7 k- t. Y# ZMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);+ r4 s. T* a: w- G0 d
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
. g$ s9 M+ l& l2 D}

$ w5 b2 G, t: L* x9 q1 U: A
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
! S# L. L; H0 P; X, \
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-13 02:48 , Processed in 0.041980 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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