MCASP自环配置。 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1212

积分

金牌会员

Rank: 6Rank: 6

积分
1212
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,
- g1 \1 @' ]' linput mcasp_ahclkx,8 G7 H+ j9 S8 e. F3 g+ p4 }% _. d! T* d
input mcasp_aclkx,7 Q9 |0 \# _. B# t
input axr0,
2 P- \6 l: q9 \' ~
6 r# T$ P2 S( k  I! \output mcasp_afsr,4 `" }4 Y1 ~- c& @
output mcasp_ahclkr,
; w# H' D3 b! X# l( Q4 ?1 G) boutput mcasp_aclkr,
/ z- G: v* M9 routput axr1,# G* }, N% ~' N* L2 v! j- V$ c
assign mcasp_afsr = mcasp_afsx;
; a$ `9 F  D- [! |9 y" nassign mcasp_aclkr = mcasp_aclkx;1 N9 V! @& p6 M) M3 P6 N7 i
assign mcasp_ahclkr = mcasp_ahclkx;. o# q6 M1 Y( d# y  C- P6 v
assign axr1 = axr0;

: T) [  ?* R6 W( p! g1 f
( J& @. z. Y! r4 T1 B4 K
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

1 g; h  x' F9 ~+ \
static void McASPI2SConfigure(void)- u& n8 i2 P1 _, P& B4 ~: F
{
4 Z, v$ W" Q; m- p- Y# dMcASPRxReset(SOC_MCASP_0_CTRL_REGS);. M6 C% u% ^6 H3 r) B# c9 I
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */6 W9 ]+ \- i) U9 y7 S1 k) p* K
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);. [- S1 ]( F0 u) q5 ^
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
  M( K; M) H* _" S; PMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,% }& q3 n  H' y' d$ l6 D
MCASP_RX_MODE_DMA);5 e/ Y7 |! Y+ a9 X- Z
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,+ g) r; y) _8 Q% d
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */7 N2 k, \- X$ j% u7 ~) [: t
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, + V+ K3 E8 r% f, o1 g& I  m5 L
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);6 D* b8 E. q; G' J$ I) r+ q. K
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
4 }' w9 n; ~+ Y$ |6 d' W' sMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */: ^9 E8 w  Y9 L+ U4 q8 J& x/ }' o# r
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
  d) ^/ E- L& V+ i# hMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 3 W/ _  m. n1 g$ P. g
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
' W& A: z' p# n" C8 a! p' A3 x9 p0x00, 0xFF);
/* configure the clock for transmitter */$ N1 j! \* M$ F* p3 k1 ?$ x7 |: G
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);7 O, \8 Q, d: a; ]& J0 x
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); 0 n/ r! \" l0 \4 @# R5 J
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
$ F. Y/ ]$ ^' K! O, C  A" `0x00, 0xFF);
2 N! Q) m$ f/ \6 [7 _# n3 U* Z/ ~& G& v4 y( c
/* Enable synchronization of RX and TX sections */
' o: h/ G3 z+ h  V  W$ vMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */+ H- K2 v, f/ |$ q: R8 U( T5 |
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
) B7 V4 l" d5 C& `& j# aMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
- q+ Z1 g# j& A  ]6 Y/ f** Set the serializers, Currently only one serializer is set as: j9 k' R, ]/ a  X; a
** transmitter and one serializer as receiver.0 G$ y: u) {9 z9 }
*/
8 H; q' }* t" v2 n" Y' VMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);+ w5 j, O. K( e! S( e8 r% u
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*0 O+ u& o) C" Q' n8 x: `# j
** Configure the McASP pins
* L1 t5 D7 |) R( @- D) }% T0 [! p** Input - Frame Sync, Clock and Serializer Rx/ A' \' S4 a$ o
** Output - Serializer Tx is connected to the input of the codec ! `3 |% f% p% f4 \; l
*/' k) Y, `) X) O9 |
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);: C; Q" X' J, E+ l8 f9 [
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));! c- |( t! X, S
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
( ^5 _/ X) q  V3 e- E8 E| MCASP_PIN_ACLKX
5 l1 M# m  C' I, U3 ]1 B+ c/ }| MCASP_PIN_AHCLKX5 @- d, j7 ?- E1 @. K  x) t2 Q
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
4 @1 H9 M6 b5 W- \7 A4 n  KMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR 8 v8 g, J0 G2 y& `4 M; w
| MCASP_TX_CLKFAIL ; M3 }* [2 a8 K' b6 g7 ]9 p
| MCASP_TX_SYNCERROR; v4 C) ~+ N0 F4 M  H( e, w
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
" Z. P7 @- T" X* s, [| MCASP_RX_CLKFAIL) L* W* m6 Q0 G# m) Y
| MCASP_RX_SYNCERROR
4 R* N; F$ v5 z8 m; X3 c' v| MCASP_RX_OVERRUN);$ p0 l# F$ ]( y
}
static void I2SDataTxRxActivate(void)
2 T; v# n. J# R1 w$ k4 W{
. W3 L: i! a  h5 h9 Q" s) L# O/* Start the clocks */' }9 }# o" F* q" K
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);& v6 L4 b( T6 q: _! h$ A
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
" \  f% L2 S* `, N- _! Z# y. MEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,9 P5 B& [. I0 v8 j0 j* i8 S* u
EDMA3_TRIG_MODE_EVENT);* C7 \/ c! ^( d+ k3 M
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 5 |* t( R# x/ J: q$ P
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
% C$ V8 A2 a1 H# S  I' xMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);" c2 R5 ~" b: T5 O
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
" a3 u! [2 W6 O/ Nwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
! z0 t# Z; @! Z" H) RMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);% }+ {8 W) _1 `
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);9 w* E6 P) V* O
}

" v2 `1 r9 @) l
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
0 O/ Y0 N/ k( H" |/ @0 w% c
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-25 14:27 , Processed in 0.044872 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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