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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 11662|回复: 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,
% M' l7 q  D" U" L* y  H4 zinput mcasp_ahclkx,
3 n7 d' R7 F7 n  Qinput mcasp_aclkx,* G/ C0 D# z# w+ q
input axr0,
% v7 C! u& T4 _$ Y( Z2 z2 w7 t9 K" ?( I2 c8 c( L
output mcasp_afsr,3 F/ W& |2 Y! L, T3 Q
output mcasp_ahclkr,
2 O$ ?, o6 h  t$ _( W/ F$ s7 Aoutput mcasp_aclkr,
: _5 g0 ~" F0 O% L8 V& `output axr1,
& T. c  x2 V7 }- ]0 M. W" B/ F
assign mcasp_afsr = mcasp_afsx;
* \' F8 m4 L1 }assign mcasp_aclkr = mcasp_aclkx;
7 @. E6 I* C/ i3 g9 r- Cassign mcasp_ahclkr = mcasp_ahclkx;
; n+ k( N- x. Lassign axr1 = axr0;

+ y, u, x4 P2 N0 R7 b6 A* ?; s1 m7 Y. [* u
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
5 q0 x( J* d: i% Y; H
static void McASPI2SConfigure(void)
0 ]& Y8 S2 Q. H- m{
* O- s7 w- ~0 X3 dMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
, x8 e% G1 @  K- g2 AMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
8 H  r' n$ C% Y9 c! s: e% O& y. i: lMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);  K* L  z1 q& x: d
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
- A- M- Q1 P/ x4 m& X9 \% `5 k( @McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
. C9 L# g& s5 d: u# @MCASP_RX_MODE_DMA);
0 a' S. n9 ^, x) P6 zMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
# A. S) q% y1 G! C  Q7 n' O, iMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */9 h( L- h; B1 L4 S5 H. x& x
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 5 U7 I. s5 H2 h
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
$ U$ R, `" T) s  O; Q8 B' ~# mMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
$ h: X* W* h4 t% LMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */% C1 j! N$ a* r* C$ q: d5 p
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);1 G9 `+ T' O1 F' b/ o& G2 `9 ?
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
2 e" Z# Y# c9 y/ @McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,% h6 B) c5 z! @5 r0 N; t1 h
0x00, 0xFF);
/* configure the clock for transmitter */
1 u  Z& c3 t. S+ d7 {# u5 `  _( vMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);' z. E8 O8 d5 Q( B* l: ^5 c5 P3 n! s0 v
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); # _9 B0 ^$ D+ ?3 N: q+ B
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,9 K- {% Y9 o) U; p( o
0x00, 0xFF);! C+ y4 G. l) d" y

1 T& r# u5 h2 Y( K; @% O% L& |/* Enable synchronization of RX and TX sections */ 3 I- G' Q1 \5 X1 @+ w4 z+ d
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
& X7 e' Z- J" @2 N$ vMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);  W) t' ?( }3 I) ^
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*$ h- u5 B7 o; I* ^1 p6 C+ V) q
** Set the serializers, Currently only one serializer is set as
! F- k9 O+ ^; o! i** transmitter and one serializer as receiver./ Q) i& k7 N7 e7 j0 ]: r
*/
- k5 D$ K+ c3 F  lMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);6 t# ^& E+ y6 ^# j0 G
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
5 w& I- v1 K$ e5 m# Z0 J- w' g7 B** Configure the McASP pins 4 r. x& F1 _& L$ B5 |2 e2 Y" h' E
** Input - Frame Sync, Clock and Serializer Rx  C/ Z) @& h" G% i
** Output - Serializer Tx is connected to the input of the codec 8 P/ J: k7 H  o
*/
0 n8 D8 S# T8 X- y5 U- I& M/ c0 {, yMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);, V1 \+ G$ c/ |0 h
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));0 |  x8 I; b, k. K
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
' T2 Y% p, I4 @0 u8 {( l* \| MCASP_PIN_ACLKX
) W7 R8 H6 [1 \9 U* ]- A| MCASP_PIN_AHCLKX
7 J- H, v6 H; _% }5 Z/ z5 C4 E| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
0 Y' R% B8 x# j9 I5 EMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
: D, y6 t1 T8 B& N3 l. X| MCASP_TX_CLKFAIL , Y+ W7 r) U4 C0 \. y3 P" G
| MCASP_TX_SYNCERROR( }. M5 r( a! |+ m% T. T
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR 3 d. g$ V6 Q. J& S: J
| MCASP_RX_CLKFAIL+ T# E6 p; }4 E& T- T- i$ t
| MCASP_RX_SYNCERROR 4 J7 d; [& y5 r/ f! Q7 s8 f
| MCASP_RX_OVERRUN);
& \( S' f$ L" g! x' ^}
static void I2SDataTxRxActivate(void)6 M! ]5 T& M1 l  S3 B2 A
{
* I  j: X$ i; p- q/* Start the clocks */: u3 n7 I- p/ E) p8 Z% u1 k
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
& X, d) U& c2 X8 B, p2 U3 P2 U8 DMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
$ r; L- M& `! A  }4 ?EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
  m+ K5 D+ D3 O. dEDMA3_TRIG_MODE_EVENT);! t) X9 o. x, F" q3 r8 b
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, , N2 j# @% k4 t2 E+ E
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
- E2 ]. r7 c( {9 \) U+ V4 ]6 KMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);- G# _7 X2 z, a8 L! W$ i
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
+ [! y" o$ k7 R9 Jwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */' N+ `$ s4 d9 U. x) k$ R1 W- T6 \& z
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
) j7 R- L) M  U0 c8 ?# ]$ pMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);9 V* t" b3 P+ Y
}

, n" U, w8 d' s5 ]) k
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
% @' u- u8 a! ?' e
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-11 05:42 , Processed in 0.039434 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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