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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 11085|回复: 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,
7 O, Z; `+ Q) G4 Y: @7 h3 @0 y1 binput mcasp_ahclkx,
) i6 p( S' |  y) u7 Q. Qinput mcasp_aclkx,* k8 M, I9 `0 b: r4 P
input axr0,
6 |$ L( b- ~6 K/ D
* l/ U% `% I4 m6 X; Moutput mcasp_afsr,$ f1 N; y# q5 J; ^% a* L
output mcasp_ahclkr,
) }% {% M+ W3 Z. {9 doutput mcasp_aclkr,
2 n) A) X0 L; y% G" voutput axr1,1 z8 D4 l3 G* I/ D7 \2 y
assign mcasp_afsr = mcasp_afsx;
; U5 ?% a- w( T6 V4 q1 passign mcasp_aclkr = mcasp_aclkx;5 P3 ~: X8 I6 g+ d  e
assign mcasp_ahclkr = mcasp_ahclkx;2 q" Y3 }5 [& @) c
assign axr1 = axr0;

; }' g! K  G2 M0 L: W' `! P
* T5 p: t8 E! f5 K) I7 Y
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

0 V+ F. F9 U( u8 X% d
static void McASPI2SConfigure(void)1 n* e2 r* K+ z/ i
{+ F( l% f6 l* ]& G' \
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
1 ^7 M+ b# x. N3 n# k/ j7 XMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
% Z: g- F% T7 j2 R9 q3 e2 HMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);* Z8 d5 w( ?" e4 C# x  B
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
9 u* [$ [' U& Z2 HMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,' w; Q' g4 l) v: I( G
MCASP_RX_MODE_DMA);
+ N2 @  s9 C' p" SMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,$ z; x3 H. \' ]& U& ]' r6 E
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
% p) S' O8 m* i8 W$ ?McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, : s3 b7 J1 c  I6 o
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);. y: X0 T, B3 F1 ?/ [
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
1 I6 ]$ r* s, F3 z. iMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
; v. r. Q" h" v* L. D# pMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
4 |$ [5 [" }8 i2 AMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); ) I$ c% p% G: X4 J) E& n3 E& h
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,7 {9 [3 [6 p. w) m  H1 L
0x00, 0xFF);
/* configure the clock for transmitter */  ^" i# X8 Y: D' k
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);: u/ x) o$ \; Y- v* z( L$ [! {% k
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); ; H% s; J- }  z3 i# k2 y
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
/ F1 W2 k% D, G7 Z5 p) W, @0x00, 0xFF);
1 M2 Z* K! O/ D2 l# M0 ?7 x* v, t
/* Enable synchronization of RX and TX sections */ + q1 p2 t* L- c8 w0 b3 u
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
/ d6 M* w# C) I1 rMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);& U) \$ ~6 X' @% _+ I8 G
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*+ g% m0 u' C4 l4 q
** Set the serializers, Currently only one serializer is set as
" U* h) H7 _& v  c7 M7 [' k** transmitter and one serializer as receiver.( J' x! `: M' f2 Z1 j& t1 p
*/# t" E8 @* E5 }8 l1 o) I" D
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);4 Y7 A) B! M0 `) ^# d% p
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*0 N5 F0 ^$ o- c4 c
** Configure the McASP pins
0 [) M1 E9 A* W% S** Input - Frame Sync, Clock and Serializer Rx
+ F3 S! G! b9 C$ F/ b& o** Output - Serializer Tx is connected to the input of the codec
! u& q  e$ y' ?% m$ N/ K*// j. l0 E1 C9 F: T: m1 R
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);% |: I7 w* w: q2 ~# m
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));& m2 j" Q1 x. v7 o' i, `2 ^
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX8 a3 I7 ?) f  ~6 f5 Y; y
| MCASP_PIN_ACLKX
& r4 g  {7 p! K| MCASP_PIN_AHCLKX! R) u; d1 A( j% o* A% r
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
7 ?+ |: ^/ P; OMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
; f7 n; L7 X$ e: Q2 w| MCASP_TX_CLKFAIL ; w6 s1 Q. R4 D9 U
| MCASP_TX_SYNCERROR2 n4 k) J) Q6 v9 S; J; n) i) d
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
8 Q' {0 Y" c9 t- y* ^" E* M7 A| MCASP_RX_CLKFAIL) _- P: f) }& n+ ~
| MCASP_RX_SYNCERROR ) j$ }% E% n! y2 w* y
| MCASP_RX_OVERRUN);
3 a  W. }2 a! q2 J: P8 [}
static void I2SDataTxRxActivate(void)
4 e7 i6 e) l2 s2 I2 M9 i# ^{* l3 T' m3 f% h- Z
/* Start the clocks */
  F" ]& \/ r" f2 s& g( ~1 BMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);6 }' O$ t  L% P  M$ U4 T
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */& A# g# F' k* V
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,, h, O! e4 X# o5 \" I+ f' V3 n- T' l
EDMA3_TRIG_MODE_EVENT);, ^+ y8 s% O0 `' B
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
# u1 B/ R7 K) [2 J5 U' WEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */+ `7 H" T! v+ b3 R  U; }. A
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
3 Q3 {+ P) o( p7 W; Q$ PMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
# r- \, h6 i/ D5 @& L4 kwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */+ v/ z3 \* G. a$ m3 o; B
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
( q. h2 T  G/ s" ^0 ZMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);  }4 |, _8 M# X5 t  D# Z/ P
}

+ p/ e' f$ B  Q' u& h4 j+ P7 w
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

$ C0 `) \% P, J# v
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-24 03:44 , Processed in 0.039300 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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