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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10371|回复: 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,
, x; r$ L4 C8 Z( F" Z% {9 cinput mcasp_ahclkx,- q# H- @! c5 @  t, V
input mcasp_aclkx,
" I" p# _1 h5 t0 Y) Iinput axr0,
  V) T# o: h7 U2 Y  ]
/ s! U8 l1 `8 F9 {; a  Voutput mcasp_afsr,
! @0 {" @# j! u  ^- Aoutput mcasp_ahclkr,
' f# R5 s2 M/ m& F* Coutput mcasp_aclkr,, e) k0 U& q! J, [) J0 v
output axr1,
+ n/ k4 G8 k% v, `: Z% h+ t' e
assign mcasp_afsr = mcasp_afsx;
/ n' d$ ^# `7 Qassign mcasp_aclkr = mcasp_aclkx;
* P+ o$ z* t, O' u. J& N9 B" Fassign mcasp_ahclkr = mcasp_ahclkx;
; f$ _" b7 w0 ^2 H, |2 H1 Eassign axr1 = axr0;

, A! t' v7 y7 n6 m+ z$ k, p, b; g. B6 d8 b8 J: m
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

8 N5 b4 y( N$ f  w! z
static void McASPI2SConfigure(void)- [, w, m6 y, n8 ^
{; I8 O0 o" p$ S1 h. U
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
3 z4 _' g9 V& {& {) h5 s/ s; l& pMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */' }2 K( Z( V' o# m+ I4 O
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);  Q. D5 K" J3 t. d* d2 u4 W
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units *// a# u% z# _  e) R7 ~" S
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
: [  f2 c$ r0 T; O9 z7 v- lMCASP_RX_MODE_DMA);
; A  Q2 \! l  ]% J$ R( r- XMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,' B9 w" Q7 M8 I% G- d" Y
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
0 q2 I) K$ ^6 x1 k) J! v$ a! _3 @McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
* p: ^4 Y9 }. J* @MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
3 m$ _/ w% l" V6 H! L/ i$ K; JMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, ) @$ M8 i% x9 F- M% d
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */9 a# z6 P. j0 r
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);7 P$ k/ o( m& Q+ U: X, E
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
6 E# g! i0 N2 L. d6 b, vMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,- c: b8 J& t1 D7 c0 V# [3 H/ ?
0x00, 0xFF);
/* configure the clock for transmitter */3 P6 |# r. x% {5 F9 K
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
# o  |& p3 n6 Z/ L8 U  O& CMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); , Q  K  e  E$ w8 Y
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,* d, P: W, M' F
0x00, 0xFF);' P/ g/ l* S, }

. d6 C9 h5 q- {' ^5 f4 ~- @3 s* k/* Enable synchronization of RX and TX sections */ / y% w( n, I2 O2 |' R5 \/ b6 c
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
* o4 k* K0 p. c; q6 vMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
6 l9 K7 A, M& K! d4 j8 IMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*- t7 i% M+ i# `
** Set the serializers, Currently only one serializer is set as
! P0 Q% K, Z" I. ]** transmitter and one serializer as receiver.
( ~& j- f, n: C) h: ]; h! {! ~+ }*/( l% ?: V9 h- I" V
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
' `' w; e3 L8 R; S' [: lMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
) _2 E4 _. r: k# N- F. _** Configure the McASP pins
- k  U( V5 r  z$ e: d2 N9 \** Input - Frame Sync, Clock and Serializer Rx
% R2 @3 O6 q3 z  I% _& M' f** Output - Serializer Tx is connected to the input of the codec * w0 G3 t  r) z3 i- ?
*/
# S7 u* w1 t6 T+ p3 _McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
# \  w, g, A& a9 f3 RMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));  K5 g3 z' c- D; Q
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX; ^, x) y5 e& Z! e+ f$ D/ y
| MCASP_PIN_ACLKX- J. O0 }% J/ G
| MCASP_PIN_AHCLKX
1 {- b0 A+ T  R) H5 b3 J3 j  E| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */* W! G3 D3 F9 L1 r9 w+ r& |
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
: n& n" t+ J3 B, f| MCASP_TX_CLKFAIL
8 Z' Z( ^" k& l; ?, h( s6 X" i| MCASP_TX_SYNCERROR" d! N0 b1 B4 h0 A5 t9 D4 @
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR 2 u, J' y% F6 m! d- ~' V
| MCASP_RX_CLKFAIL
% V( J* p  r- H. ^9 ^6 N! a- a| MCASP_RX_SYNCERROR 7 `  k9 F3 g8 y( `& i5 S5 t
| MCASP_RX_OVERRUN);
% u/ i, ]6 [- W! H6 x" W}
static void I2SDataTxRxActivate(void)
& Y3 v1 s/ R- B4 R5 T{
8 B1 G, I' t! G0 l+ H/* Start the clocks */
/ R3 ]( \- ?3 u) ^1 VMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);, g7 O" h6 g1 ^% o$ B
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
8 a& ^+ I/ r6 e% VEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,% H8 z; ?0 e: V! w% t: r3 G
EDMA3_TRIG_MODE_EVENT);( y( f% C5 L) ~9 ?6 @/ Z& M5 H3 v
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, ( B7 T4 C1 o( H) g: N
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */% q  x: Y1 r6 @5 E
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);6 k- z* N2 C, X; @3 e
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */) I4 w2 @. q$ Q  e5 O" s* A
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
! t* f: U  |: c! D5 EMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
0 u: o) W2 n, {4 X9 ]& ~McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
% E% f( M, n8 ^}
4 Z) B( |' L" B
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
3 z0 e  s$ b6 Q$ E
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

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

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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