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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12376|回复: 0
打印 上一主题 下一主题

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1216

积分

金牌会员

Rank: 6Rank: 6

积分
1216
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,
2 T- a, e% n$ _. A% c7 Finput mcasp_ahclkx,
; c# T; ?3 B: Finput mcasp_aclkx,* s% T& W8 S# D9 h2 y: w
input axr0,
7 }4 `* N' n7 J3 T. g, V6 m& D! b, l! z! s! X8 R, f$ w
output mcasp_afsr,
, c2 ?7 W0 ^. Q7 D- o: @1 routput mcasp_ahclkr,
) y/ m, F( R  ^7 U0 t9 Eoutput mcasp_aclkr,
/ V( a* U- A5 E4 G6 c2 Koutput axr1,
( a% \0 F3 c# j8 h
assign mcasp_afsr = mcasp_afsx;
& {1 {' G+ _6 u! K4 N6 T. W2 B4 Zassign mcasp_aclkr = mcasp_aclkx;! V* D% |9 ~( N+ ~  \. F
assign mcasp_ahclkr = mcasp_ahclkx;, H( D/ _- Y" [3 \9 H6 o) T2 _) d
assign axr1 = axr0;
1 ?# q. W5 p( z5 c
8 W% @. v0 t* X
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

' s% E' F$ m# `: ?
static void McASPI2SConfigure(void)
/ @- W) e4 j7 P% d  k{
& Y  L) u1 T: o1 D! j& X5 f2 xMcASPRxReset(SOC_MCASP_0_CTRL_REGS);7 M' p" ]) D) x! x
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
! ]" V& t( B7 p' R- o% rMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);5 d* V1 X. d7 j: X! q4 _7 w
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
7 k! J3 G8 f: n- R- }# ?McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
1 ~5 f. @/ C7 d5 w; oMCASP_RX_MODE_DMA);4 a; `7 Q. d4 ]6 \; @: q& j
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,8 P1 Q8 f% R9 w0 \
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
$ ?+ C% d0 z! V9 ]McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
: l" i0 o* x0 EMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
" H0 J/ W8 x" R8 u: oMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, , ]/ m( \+ n* i$ w/ n" Y# o6 A# P
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */( d8 ^8 P" P3 k7 F0 S5 F
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
" E* L- e7 }: f+ T  S6 q* dMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
6 e( P" B" F6 g: w  S6 uMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
; ]- r: k. F4 L+ a! K8 H/ ^/ X2 N8 Q2 ^0x00, 0xFF);
/* configure the clock for transmitter */: o: d$ h  x4 g5 U+ t/ M' k6 m0 v
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
5 n& o+ h+ b' T2 PMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); : S, D2 K3 p, D( X( Y, ^0 [
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,9 a6 y; W8 Y" z* V2 E
0x00, 0xFF);
8 M1 v5 m# i3 b7 I+ z5 Z# P  A$ B' R3 n: D$ N
/* Enable synchronization of RX and TX sections */ 8 R; w1 j2 v+ V  j* G5 c4 g
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
! f9 i: k& k; m% e/ x; DMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);1 _  ?& B" T4 \- c% R( J: a* \
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*- t! \, Y1 b% ~. M. |0 w3 s1 I7 x
** Set the serializers, Currently only one serializer is set as: b6 E1 J; `1 v" ^- D
** transmitter and one serializer as receiver.7 w  Q: I0 n6 v# F1 y' w' ]
*// y% ], X1 O9 y8 n1 w" _4 h
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
& ]# k* |9 {* L) B* F: h! b/ ~McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
# x" J: y! x% @+ Z4 H# x7 X) r. O** Configure the McASP pins
+ B( _# K7 g6 A" a6 P+ i% W7 g$ N. p** Input - Frame Sync, Clock and Serializer Rx1 S; I" C8 P8 l8 {# K& i' N- `
** Output - Serializer Tx is connected to the input of the codec
) f/ D6 ~) Q. J; E$ J7 a; k*/
* w4 m2 O( ?' ?8 m& IMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);" ^9 m3 K. _6 c7 A- T+ c( h& E
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
" D3 f/ X% ~1 u1 @. FMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX4 B1 a$ ~. G) g5 K" m
| MCASP_PIN_ACLKX* V; p( ?* s( n$ v( _1 Q! b
| MCASP_PIN_AHCLKX# c8 p+ f9 C1 E+ K+ Q
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
1 r' T: u, z' }1 w6 D) sMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR " Y' |! t' T! \2 t
| MCASP_TX_CLKFAIL * s- P8 Q3 j% R* C- z
| MCASP_TX_SYNCERROR3 [1 S' Q; b  L! v
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
& Q2 g3 Z2 Z# H+ X4 L# o| MCASP_RX_CLKFAIL
+ J8 v) L) [: N" {8 N- o| MCASP_RX_SYNCERROR , Y" S* `, Y  \
| MCASP_RX_OVERRUN);
% `3 m5 a3 D+ K, s) w8 q3 x}
static void I2SDataTxRxActivate(void)
5 g$ }) h* |! A* r4 o{' F  ~$ l# ^; |: o
/* Start the clocks */  v4 F0 E. N( h5 \
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
- s% p( Q; o7 u5 K; i5 uMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
1 B. l3 [  @; q. N" H" O3 TEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,& K& H% F2 L/ W6 }
EDMA3_TRIG_MODE_EVENT);( C$ H: Q9 Y6 j) l5 G- I" n
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, , j" v# s& U' `! _* o; h0 l$ {
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
. D5 H% T! j4 }$ V3 bMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
; T% W. C# K$ {6 D# T$ CMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
# [/ e& y$ G5 G" ~; g# a* V5 [5 @while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
& ~- y* W7 V0 c# m2 Z/ b/ SMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);( V: E; \+ t2 X$ m2 Q& b
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
. `$ f& Y3 o+ G" p}

/ t/ P. H/ v; j1 J% k% i8 \6 _. R! \
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
7 B" D9 x  \1 |, M- F
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-4-7 01:39 , Processed in 0.040762 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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