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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12133|回复: 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,
4 y+ a+ z  B  e+ Pinput mcasp_ahclkx,6 T4 X$ m# P: k) M8 b' @. O% I
input mcasp_aclkx,
& @' ~2 J: }! c) u: s1 p& q* |4 einput axr0," l8 \0 A4 ?) u. C1 q0 g' G

8 E8 }. S2 t+ ]& o3 ]output mcasp_afsr,
2 H3 |8 x* u! Routput mcasp_ahclkr,
3 Z. b% i$ F  _3 H1 G% s) |+ E7 loutput mcasp_aclkr,7 Y" H$ {- p$ f- e0 `
output axr1,
6 p5 N' B2 M$ X& N3 L
assign mcasp_afsr = mcasp_afsx;
5 W2 e9 Q8 V5 Qassign mcasp_aclkr = mcasp_aclkx;% k( ^7 e  Y! X- j# Z
assign mcasp_ahclkr = mcasp_ahclkx;" f/ t$ c) q7 Z) ^+ \: Y
assign axr1 = axr0;
) c" S/ ~+ g0 i1 o1 D' |) c

+ y2 g1 d1 [  L3 J5 H& d
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
) `& l( J" u" F' p. R6 b. h
static void McASPI2SConfigure(void)
' a) |8 p- l* Q7 }! Z& c  O! W7 A{) a5 S  [+ v0 |' W
McASPRxReset(SOC_MCASP_0_CTRL_REGS);' a5 C& b: a3 o5 i6 P4 k; e, q& D: v
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
; t3 l8 W0 _2 U3 x. l1 D1 m& p1 FMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
6 t. {$ j: O4 q" J% ~' KMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
( [0 R  ?3 f" Z& pMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,( J3 |1 ]" f% K$ t2 ]
MCASP_RX_MODE_DMA);* e& [* e: ?1 X7 f7 j
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
. F, j# R' M' H9 i! w0 pMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
- @$ k- `: ~- @' A* l. C2 f+ @) EMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,   c2 V0 G2 M  @
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
  {$ i; O$ f- L( K, x' z1 j) Y7 m2 ^McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
5 R& D4 _7 j2 P7 g! KMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */& b) S2 v9 p' l9 n4 A$ o
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);: z5 Y* r6 _: b  {: {3 l; v
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
$ f1 R" B+ g& v- m: }* w: J( UMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,% M; [  t8 ?) t1 X
0x00, 0xFF);
/* configure the clock for transmitter */& D: A9 F1 V1 O( [4 A( L+ |; r" k  Y
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);# e7 r3 i  x4 Q+ ]0 W
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); 8 R( b$ b0 m: L
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
3 {2 {" z! A5 Y! k- ~0x00, 0xFF);
6 x) z& Z/ A6 J
. w% j0 S9 {4 s5 I) T. U/* Enable synchronization of RX and TX sections */
6 T5 [- _' E0 w  o# \- @McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
4 c9 J% U3 M& O6 d: {McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
1 E% a+ A" j5 v( oMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*9 L" W( r2 K5 F9 E2 C/ S
** Set the serializers, Currently only one serializer is set as
6 t' G7 L% d  ~* B7 |7 M: T** transmitter and one serializer as receiver./ k! H3 I* p! S9 F' S& Q- v6 M# i
*/8 w7 O" M* @5 d& B
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
( F5 H5 R/ w$ v9 x  @  R: lMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*3 @" F' A5 [% w6 v# [; `- \, V
** Configure the McASP pins
$ }3 N4 d  \3 r. h** Input - Frame Sync, Clock and Serializer Rx# i/ l- T2 ?0 E2 r9 {* P$ d# s* \
** Output - Serializer Tx is connected to the input of the codec
% g$ ]( ]! ~  `# ?, a. T/ q*/
6 E  {% F8 @3 r0 Y% RMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
  {% I$ w/ s" d2 V) g# z& tMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
; H$ p0 u! i) u6 O0 P4 G: [McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX2 }* M2 P  C* m+ J, B
| MCASP_PIN_ACLKX
! E5 t( I! s) ^9 s: W: j. ~| MCASP_PIN_AHCLKX
9 g5 f! P! m- U: V: z0 }| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
( m- J3 a, x8 q& Y. @# qMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR 0 O! q" ?' U. k- u# D( x' `9 s
| MCASP_TX_CLKFAIL
! Q: [, ]. t0 A  }0 N| MCASP_TX_SYNCERROR5 ~9 G; y- @3 a" v6 O* L
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR 0 T  `3 L7 x1 |1 p8 m
| MCASP_RX_CLKFAIL) I  u, U/ c8 U  v( W9 J
| MCASP_RX_SYNCERROR
9 x1 v8 ~) P6 b| MCASP_RX_OVERRUN);
0 ^* D& j; d/ k}
static void I2SDataTxRxActivate(void)/ }+ P# S7 u/ h+ M; j
{
) t8 d: V4 L. L; L/* Start the clocks */
4 |" \1 s/ R8 S5 V( [McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
+ b7 V1 \3 h3 w! N  ?) o+ _) aMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */; r& W- f: A3 B9 T) F/ `  ^1 f
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,3 E9 D5 {; O8 z: t
EDMA3_TRIG_MODE_EVENT);
, q! `' b4 ~+ oEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
% w% Y) Y" [5 mEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */6 l; w3 l0 F& k$ D9 t( b- ^; l$ [
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
- K3 c7 P! D/ d; S1 gMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
3 a( z! {. `. o* H! cwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
4 C2 R5 l$ ^8 a" UMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
! d! Y# ?) _0 m  B, R" QMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);% {9 o5 n/ b1 u1 X3 ^+ {1 [
}
0 s0 |$ s  q! F! x
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
$ v$ L+ b& Z: R0 ]! ^6 ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-29 17:57 , Processed in 0.041973 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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