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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9593|回复: 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,
" `9 ?- m! Y  F! f8 Cinput mcasp_ahclkx,
3 k& v8 C7 O* D/ g* b3 m7 Dinput mcasp_aclkx,. z* e( F# R: \/ B1 c8 ?) @8 W' f( {
input axr0,
; N; d# e7 {1 {* g$ b4 P# Z$ g4 l1 o1 i. ~4 g
output mcasp_afsr,
3 P- l, N$ c6 b% [output mcasp_ahclkr,
! S' @! D7 @7 \, {0 foutput mcasp_aclkr,
. g) ~( U& E$ ?- v- G/ uoutput axr1,. W5 `$ B! W; F/ J: J( \: }' W
assign mcasp_afsr = mcasp_afsx;) ]$ J- ?2 G  ]1 v  V
assign mcasp_aclkr = mcasp_aclkx;
  s* [& ~0 O1 ^. A( U# O) tassign mcasp_ahclkr = mcasp_ahclkx;
' R( M- p+ B! H$ ]  J" i: wassign axr1 = axr0;

4 i7 @* m9 j0 z/ K7 @5 X: K
+ A, ]* ^" m1 Y/ l
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
) k6 \+ O& c8 f+ a8 N2 O9 D
static void McASPI2SConfigure(void)
# s* Q/ e; d$ X{' s! Y3 c8 ^7 M2 n! l
McASPRxReset(SOC_MCASP_0_CTRL_REGS);& l2 ?7 j/ N3 J3 p) ^6 F
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
+ B; c/ |2 n/ {- J  o' nMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
" U& S7 b+ k3 Z! `$ u3 FMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */5 c! h7 i6 p2 k* T+ ?. d1 f
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
1 x; a* T* V8 X4 ?MCASP_RX_MODE_DMA);
2 J8 A/ y4 z8 JMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
, g! R7 ^  O( o: iMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
6 B2 `* g6 V3 x0 s+ DMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, " b4 g; x& c, D$ j/ V/ |& Q& A
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
; O+ B* _8 m: |: v" z% bMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, ( S) B+ m& {: x. j  S- e
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */$ K6 a- `" C0 y/ ^
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);/ e7 s+ n$ o7 r' B+ a. e8 H
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 5 P5 x! q5 X' z- b$ `* X- u$ I
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
0 p8 k8 `3 I* `" L8 Y' R. `# _0x00, 0xFF);
/* configure the clock for transmitter */# `  B: {0 _7 R% v& ]! I" u2 u1 t
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);  y# v! ~- W$ N# b
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); # ~- u+ Y+ g* j8 T$ u) T& O
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
% v' K9 g8 y/ K3 S  Z9 j& L, g0x00, 0xFF);) F% S! V; o9 B0 K. `% L
) }  i1 r% t5 @( O+ M" F- u+ ^
/* Enable synchronization of RX and TX sections */ $ t* V- f# A+ a
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */: l$ t, l' m% L5 t/ O4 [
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
0 T% p! K, y& A9 E9 c  w7 u( sMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
! U( C+ H8 J) D; A+ u** Set the serializers, Currently only one serializer is set as" t. i+ e% b& y$ C
** transmitter and one serializer as receiver.* A  f  E' q1 Y: `6 u  s: F/ |
*/
' r6 t- G1 `; p! P/ iMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
; _- R: k/ o; M9 O% Z! x% @McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*' o& S' G$ v& }1 X% T
** Configure the McASP pins 5 @1 p' {; `4 `( O
** Input - Frame Sync, Clock and Serializer Rx
" c( Z! W  \+ a7 n6 q** Output - Serializer Tx is connected to the input of the codec
/ J5 B7 k  e8 C- b7 x*/4 |6 O9 @1 F. j; W! x- Q
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
) q0 e8 U0 k5 k1 _& PMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));: n0 o: a8 O: V, {# P$ F
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX; N7 }2 N# {* |, u/ i) a* h8 R
| MCASP_PIN_ACLKX
' O; ?3 F& F7 s/ ]' I! m| MCASP_PIN_AHCLKX
' n( |( m  c0 `( t# _| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
5 o2 C( ]2 W- b4 dMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR   U; _  Y- q, V/ j
| MCASP_TX_CLKFAIL
/ I. |8 G3 E1 V* S9 ]' t| MCASP_TX_SYNCERROR
9 H1 E% l9 R. ?. |# X- t6 o| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
$ g5 w+ P- }* N6 `" k| MCASP_RX_CLKFAIL* i. Q6 @! P  K$ g# Y
| MCASP_RX_SYNCERROR
' w5 b. v: G, x4 [) Q1 l. O. B| MCASP_RX_OVERRUN);& e! c8 F) ?* P& H
}
static void I2SDataTxRxActivate(void)% h8 U2 D, {" I) f1 U: W8 @, q
{5 x5 H4 V6 Y& `4 q6 Z1 _
/* Start the clocks */
* y' g% _5 v' G( B( e' l' iMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
  {. H% ^9 S( U9 ^" ZMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */. F5 z" K6 _3 B, H  ^8 L  q/ O  r
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,3 V6 A( U- d, ^& d9 C
EDMA3_TRIG_MODE_EVENT);4 }/ }* u% ?* |' Q( d+ m* u- P
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
7 E6 b$ j. c- J* W4 MEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
. ?5 G4 Q3 r. J8 G: l8 u# ~McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
  G# C* ^% N$ M- _McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */% c% h1 g% z& b9 K8 r  E
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */! c" ~6 B) d  i1 ?* N4 [9 |( p
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
! u  ^2 }# f6 u4 H' q! FMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);: c+ C( S5 E! S6 h- p9 ]) I9 ]* }
}
5 k0 e+ m' ^) r( G! Z/ x- t1 O3 {
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

0 ?: j0 L+ p0 b: x- ^( L& Q+ f3 N8 [
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-14 20:57 , Processed in 0.043551 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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