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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12525|回复: 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,' K, ~0 a, ?" E- D
input mcasp_ahclkx,
7 A& n) r. w6 w/ Winput mcasp_aclkx,/ K/ ^$ c: Q( n  D! b! {' d! e
input axr0,& h5 }/ g7 A8 K3 Z7 g

6 B6 b5 v- s1 H& \- Q7 coutput mcasp_afsr,
, }& Q& u6 x& voutput mcasp_ahclkr,3 ]3 _8 J: ^* R; l" j5 M
output mcasp_aclkr,* k1 `- \8 P# q! J
output axr1,  T) m5 ^2 H6 H0 t- \1 A* E
assign mcasp_afsr = mcasp_afsx;
) ]: I: {) d$ s  i2 T# R9 p5 `$ yassign mcasp_aclkr = mcasp_aclkx;
* i' |& W- f$ S6 |assign mcasp_ahclkr = mcasp_ahclkx;! n  ?  b$ l" ]. R5 Y
assign axr1 = axr0;

3 I4 q* r' ^" e" d' r& a, K8 ^
4 z/ C0 [8 ]0 t: d
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

, y# b( a" `4 r0 P
static void McASPI2SConfigure(void)" O9 P, t( e  a  F7 Q
{% _/ x, i$ A: _9 [* ^% i# l
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
4 W! K* h" f) Z9 JMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */) |! Y1 q* O0 a3 }' \. c, H! w# N: E
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);0 A7 [# J$ ^7 p; v6 v! d
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */. N( F* B6 W7 b9 `( n& V
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
5 s, u1 R. S& c8 o; S0 e" fMCASP_RX_MODE_DMA);. j  a: o- l0 T3 r6 ]4 e9 b9 \
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,/ X- B& H2 d4 `8 |
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */2 a; _- x9 j* [3 u
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, & ~7 R; m& L2 T5 z9 c7 r
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);8 l% w+ A! `1 }& e5 G
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
0 ^" z" q- m2 t* HMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
" q8 L% M, c7 u! [& ?  ]' DMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);+ u+ u, K# o& F  ]. N
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
; z1 E# M8 ^2 [' tMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
9 p6 U8 _& ^# \0x00, 0xFF);
/* configure the clock for transmitter */# N: T! ]) \) M) O4 A9 W9 S' A% q
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
) {7 Q" x3 ^5 n0 b7 RMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
( q1 J# A  t; D" e) v* ?McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
. c' v2 }* ~2 ^% T' m0x00, 0xFF);1 S2 J- m( z- i
9 I4 s6 ]3 j/ Y! E8 ^# Z4 }
/* Enable synchronization of RX and TX sections */ / z3 {8 W' t6 I" V* ?
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */: `7 O: l. [+ H- j; @
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);( x1 j# X5 ]" ]
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
, ^2 o1 y. s8 F/ h- h* E+ `' o$ b0 g0 y** Set the serializers, Currently only one serializer is set as
/ i3 B% l9 ?! o# F6 [5 m6 x** transmitter and one serializer as receiver.5 x, s3 f$ S7 y2 A7 \0 Q$ T* ?
*/
5 t5 ]  p/ E8 D! w/ G* S4 bMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
) }1 p2 E9 [- v- ^: t% LMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
% V" N0 ~  K7 T- M. o** Configure the McASP pins # @% `- m, g" e. k3 I
** Input - Frame Sync, Clock and Serializer Rx
/ K1 n5 R( s9 a) ^8 q4 f, I** Output - Serializer Tx is connected to the input of the codec # K5 F; Z2 n: n2 }# C5 y
*/, S: J" v% _& S+ b
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);' V+ P& m. O' n1 U' _
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
' f3 `1 |3 A% U* J1 \3 pMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX/ N- J& r- M, F9 a$ h! Z) I
| MCASP_PIN_ACLKX
5 U; O: x; h( e( p; g6 @2 A| MCASP_PIN_AHCLKX
3 ?$ Z9 R) {1 O0 H" i0 |& A| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */. m, m; z+ ~$ \
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
# _9 h6 k' E4 H: X( [8 R+ v( ~| MCASP_TX_CLKFAIL
) f& T2 l$ K+ s" [+ X: r| MCASP_TX_SYNCERROR/ I) @' o( Y' S" R# P, r; [7 v
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR " v$ c3 e+ e4 b  S! C# ~3 R
| MCASP_RX_CLKFAIL9 R- I- k6 c3 {" f) `& \0 v
| MCASP_RX_SYNCERROR ; ?1 f( I' T, e( r( a3 [
| MCASP_RX_OVERRUN);
2 U: q, s  b7 j+ V0 ~  o' K# H}
static void I2SDataTxRxActivate(void)
. c/ V- \. w  o{" m1 u  a9 p; I  [2 c6 p
/* Start the clocks */4 D5 ]8 l% P  C  f" R% ^) G
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
" R- J- s) k! [( n& K% j, ?McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
5 N+ `% Z+ P- {' i# fEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,0 G: ^, M6 I& j- g: M$ Y& b
EDMA3_TRIG_MODE_EVENT);& P9 g. A/ U# p* g% ^1 J
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 2 ]/ ]# X9 E' ^( w, i
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
  Z8 x' M; L8 X! g+ g4 d" O+ EMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);$ Z4 C; `8 F4 z+ c, Z
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */: M1 B1 |% Z9 W) P9 F: B* O5 i6 C9 a( A
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */$ }% Y3 X5 l% j. ?( x
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);  X; W- W1 x, c4 k3 l3 N, Q% Y
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);! x' F% c: M' n4 ~  V& L
}

7 A! f  D3 B1 Y. g+ c3 Z: t
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
' F9 ]+ c+ k8 {% m6 T
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-5-1 05:01 , Processed in 0.042067 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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