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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10919|回复: 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," i; A2 `: u: K' j
input mcasp_ahclkx,
; }$ ?' |6 k6 |* I" k+ B+ Rinput mcasp_aclkx,: i$ Q# i6 `8 {4 w& o! J
input axr0,
9 v! B; x$ t! {  d, H: V, O" z* Q& h
output mcasp_afsr,8 l1 A& I# ]+ A/ v" l
output mcasp_ahclkr,
# V" g( B3 l& z& v0 A& toutput mcasp_aclkr,2 v/ T2 H, M5 U4 Y
output axr1,
4 W' F6 }: Z* s7 ^
assign mcasp_afsr = mcasp_afsx;! F" v* w/ ]0 [
assign mcasp_aclkr = mcasp_aclkx;$ |! c7 w/ Y( y
assign mcasp_ahclkr = mcasp_ahclkx;/ g" M8 q8 Y3 o8 T8 N6 w/ _/ T
assign axr1 = axr0;
* u! o4 _1 q$ h# B
3 Y2 V: R0 \) Q/ u
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
: U" E4 L& C0 f- s
static void McASPI2SConfigure(void)
! ]! N! g% [& V0 M3 P{
7 g7 Z) J  ~6 D* ^  |' m( zMcASPRxReset(SOC_MCASP_0_CTRL_REGS);2 D+ s1 m/ Q7 E& F7 s+ J$ B
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer *// S  @  x7 g' o4 O- Y
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);$ x' U2 f/ X6 y4 [: k/ U3 e) h
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */! a# R0 r2 i0 `( k
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,2 \% s: Q$ u, p5 x# V
MCASP_RX_MODE_DMA);
; f" y. s5 O* ]1 O  L; }McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
- u' S" z3 l# k! |# G# SMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
( x" |" r) w- O4 g( NMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
/ q6 h, x" n) m9 l' S! y7 bMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
4 L2 M. o6 N: W1 jMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 5 z0 k5 C3 T7 b2 W
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
7 }* E. F/ _; t9 z' i  jMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);; \0 W/ \% a3 f8 B# J( X2 H
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); ) C+ [3 c: T5 X0 _) D7 ?0 K2 T
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
. ^" T' U9 V9 m% N* O0x00, 0xFF);
/* configure the clock for transmitter */
+ {$ k* ?/ ?& B& N4 d. kMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
& a5 O: i. r  w) A& z* ~) TMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); # Y6 V! }" Q! C0 k& @3 t; H
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,6 ^( r& F% N9 x; |2 U
0x00, 0xFF);
. G) K3 g2 d. [+ m3 y% e( F! }+ C  K- ^& u5 a- G
/* Enable synchronization of RX and TX sections */ ' B. c# x! n) t2 x7 X
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */* J* L% R+ ~  m9 y8 D: K
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
% k) L) Z. ^+ Z6 D& xMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
2 ^" S- b* `( N3 o% `8 {** Set the serializers, Currently only one serializer is set as
( o$ O- j7 t9 x** transmitter and one serializer as receiver.
" r0 S. r1 ?! S! a9 n7 u/ [*/
+ ]4 J* N/ r& D+ s; hMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
4 N8 a/ k; W9 ~3 @3 ~McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*" \& y3 q) _" y0 p5 |! c
** Configure the McASP pins
; t. F3 {* f# M5 Q# e9 J1 t1 j** Input - Frame Sync, Clock and Serializer Rx
1 \8 }8 ~- E# o9 ]7 C" c7 c  x+ z** Output - Serializer Tx is connected to the input of the codec 6 Z1 g, c3 _) p4 _5 ]
*/! c; j; `6 }9 k5 s% A! h) Y5 C9 I, T
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
% r, k! ^3 Q  f% {McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));: n! x, o& I0 k0 h$ w2 R# n# }5 L
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX% L' [1 P; Z" A' |* }- F0 b
| MCASP_PIN_ACLKX
& w* m+ e; ]5 q) o3 a| MCASP_PIN_AHCLKX8 ]" O9 }3 ~$ r1 j, G  n& I
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */; O6 A1 ]0 z, @2 [* V' o
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR + G  E+ O5 N2 _6 r! I
| MCASP_TX_CLKFAIL . ]9 \" z# d3 |! B( f( W2 a; l
| MCASP_TX_SYNCERROR7 _. H5 w. o( C6 b
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR - o* @- _: b0 S# U0 c) i
| MCASP_RX_CLKFAIL
' i1 w3 ?& e- Z& ?* p- W9 Z| MCASP_RX_SYNCERROR & g% j5 i/ a3 z
| MCASP_RX_OVERRUN);) V4 Z9 l' ^( L3 K2 S
}
static void I2SDataTxRxActivate(void)
" y( j. }, J0 \- Y6 n) r{2 L" g) [6 R) h9 ]
/* Start the clocks */9 B  B5 ?# M6 E/ p: g: E8 K' v. V
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
3 o! \4 a# y, P, @7 t* SMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
1 p- \4 o( z* }5 _' ?" C$ K9 OEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
' @: W# w/ R/ P3 m9 p$ }( w8 S6 }8 UEDMA3_TRIG_MODE_EVENT);
+ k3 e" N! e+ {# k6 aEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
  p4 [' H  ?- ]EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */! G, Y7 }9 B$ P, E( h
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
' q% [2 N9 G, t" O3 {. g) v/ OMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */5 G, _& ~0 }8 h
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */9 @8 D3 f9 ~: i0 @
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
! g, F# G7 }) n$ a; ]; w8 BMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);# ]1 G  Q% o  X3 i3 H1 n
}

& C9 S; P3 S& x
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

, ?3 K6 R/ m8 ~$ w* D$ S
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-19 08:04 , Processed in 0.042147 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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