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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9968|回复: 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,+ B, S+ H5 X2 S+ b7 M
input mcasp_ahclkx,% ^  `+ o5 X  A% e) ^" h
input mcasp_aclkx,/ [5 W, V8 m1 O3 Z3 H' X0 @
input axr0,8 v$ S1 a# y  _( j! G
" j7 \- c, y0 V$ g* j* s) Y( _% d; R
output mcasp_afsr,
/ o. [; R7 A6 p: f" n& B& @$ D* }output mcasp_ahclkr,* i! F. W: m) Z6 _6 i9 M/ E
output mcasp_aclkr,
1 W4 {. r+ A' U. s4 g4 @8 \( poutput axr1,- n1 H% X6 D9 O7 w# I! ]7 T5 c
assign mcasp_afsr = mcasp_afsx;; R3 t: w; s: u
assign mcasp_aclkr = mcasp_aclkx;
+ L; N+ q4 H& m% G( v: Q5 y7 n9 A! sassign mcasp_ahclkr = mcasp_ahclkx;
0 I! F! `7 L. h; O. m/ c& xassign axr1 = axr0;
& M9 v3 h! j2 K* C: H5 A

2 ^2 K5 f( ~+ O" n
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
& \, |$ \9 V8 O0 {
static void McASPI2SConfigure(void)
& [: |; j, [% \4 A4 D( I{- H" s3 o4 C6 b9 g' t, ~+ o
McASPRxReset(SOC_MCASP_0_CTRL_REGS);, Z, x; D/ Q% h
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
, v( a# E) v5 yMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
7 `+ A! I; C& o/ `6 xMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
4 Q% H6 O# M( j! i* @1 aMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,9 f6 ]( [: P4 V$ J
MCASP_RX_MODE_DMA);
- @# g) X( `% G! QMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,- s1 y+ M' b/ a- f
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
1 H* }/ h) [3 Y: xMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
4 P0 ?4 v+ C0 G; C8 k/ z' @MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);! u& e0 K( v. P: L1 \4 a9 I8 \/ |7 C
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 3 @# `: ?. P( a: t% W0 }# F
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
9 i( u: {: r# K! b4 ^McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
& y) v8 r6 u# y: n/ x2 rMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); ; |0 ]7 S9 H! P" a$ c* d: q
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
0 O2 F& `% T3 ^/ Q9 u2 ^0x00, 0xFF);
/* configure the clock for transmitter */
/ C5 @, c/ n( i( d: g; o6 wMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);9 j  z9 ?8 b7 s1 e# o3 ]7 C
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); ' S  c7 q# w, ?. G. {) B
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,6 D6 A- b# L8 P$ ]7 F8 K) x
0x00, 0xFF);
& Z1 q5 J- O6 ?1 m4 c9 L1 _' m: E& Y
2 P8 [& {3 U/ t% f7 T/* Enable synchronization of RX and TX sections */ 0 f: T, A! d9 f0 H5 I
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */: @% e8 U: K; ]6 C
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);2 E. m4 \& ^/ a9 u
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
0 h4 a9 ]  E. ~! G  O& l** Set the serializers, Currently only one serializer is set as0 y+ Q$ g! d- [  X( |7 B) S1 c
** transmitter and one serializer as receiver.9 l: v6 Z  J8 K5 g0 |/ R1 |3 }
*/. ?* n2 {% N6 o: [8 r# D/ B
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);" j' y5 M) m8 i7 ]
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/** p3 Q1 _+ y" ~% E
** Configure the McASP pins + T0 L* g4 j+ d3 B% H2 y+ Z
** Input - Frame Sync, Clock and Serializer Rx
% N6 Q: ~2 G3 L# x5 y( V0 ?7 K** Output - Serializer Tx is connected to the input of the codec
' g& ?7 W3 z0 X1 z) `, }2 N*/
4 b- e4 O% c5 T" |McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);  Q( o5 t+ j: ^
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
7 v/ i6 X4 _+ P( `) a0 m( s7 MMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
' t8 n  Z, P0 p! [| MCASP_PIN_ACLKX
" |3 t6 K# r, S9 V| MCASP_PIN_AHCLKX
3 h  \. L1 e2 Y( L| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
/ f1 v( M6 Y2 C% R" uMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR " y6 T" O5 |' v
| MCASP_TX_CLKFAIL
0 }; N" t$ w3 c; u- F| MCASP_TX_SYNCERROR/ _0 g$ s9 p2 E3 o7 S* q( }
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
2 C2 @4 s4 U3 S9 b| MCASP_RX_CLKFAIL
: T0 ~, I! v8 k5 q$ ~9 S| MCASP_RX_SYNCERROR $ ]$ h; ?% z4 Z7 i7 A. e
| MCASP_RX_OVERRUN);
; ?& P8 g# h1 |1 G, T. }" A7 }( A}
static void I2SDataTxRxActivate(void)7 l. A* ], I$ D$ Q- z8 X
{
9 y; H" x& A  b' l5 E: x; _/* Start the clocks */
$ J. Y2 Z2 E# z8 G' V. RMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
# K* S8 Q8 m, U$ `+ O# {McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
+ }' z' \  k1 {' @/ N6 tEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
7 F5 V: A" b! h3 [, q4 bEDMA3_TRIG_MODE_EVENT);/ \, ~. m3 B) ^6 ]# u0 r1 R
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
/ K3 `: u2 S1 q6 W( w6 x, zEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */' _2 O- \( e1 `0 [8 l% N
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);- P" R# u$ ]- {. b
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */! u7 l- X: ~# X/ _8 k
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
- ~, M  ]5 u; p6 lMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);- r! H' }! J$ s2 d& i/ K7 C
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);: E) h# K; ]5 K' U- m
}

- H7 R5 {+ u6 S- a
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
7 o, F0 u, I7 `4 l5 b% C. I
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-25 11:22 , Processed in 0.070291 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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