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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8985|回复: 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,$ _; j$ N9 h9 i  X) r: X
input mcasp_ahclkx,
8 `$ s* |0 {5 M. linput mcasp_aclkx,2 L3 n* i! D6 S) N7 k' |" z. A/ c6 k+ |
input axr0,( h* e  j# ]7 ^/ ~+ q# Y7 c* J

! F- _' `5 u% `) b* H; v7 E5 routput mcasp_afsr,3 h( `- ?0 w6 O  m  Y6 i& E( b% J
output mcasp_ahclkr,$ M' |0 j+ ^/ K7 W6 T7 i& @2 L
output mcasp_aclkr,* |4 L6 W5 m( i; }" x
output axr1,
7 F' s/ }  o% w9 n! l) z
assign mcasp_afsr = mcasp_afsx;
; b8 q( P/ B' ?# ]0 K0 g$ @+ Xassign mcasp_aclkr = mcasp_aclkx;$ A0 I- W; o( n  @
assign mcasp_ahclkr = mcasp_ahclkx;
& r+ Z" z: V5 W3 u, _assign axr1 = axr0;
7 Q# b& C1 D8 q. p# t8 {# J

+ G! R7 O2 P: _2 h4 q
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

7 s8 r& H7 t6 o# S' o
static void McASPI2SConfigure(void)
( U0 M' F) V9 R- A8 d{
# `2 u! {/ x+ S, E( \' |* PMcASPRxReset(SOC_MCASP_0_CTRL_REGS);( K8 f8 t+ o, v  T4 q4 ~, S3 R% U
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
0 E& d+ ^$ e. Y3 {+ O7 EMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);1 f3 D  b$ u# b$ }; ?9 F' z  ?
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
+ u+ ~8 i) x4 Y( a! ~McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,) H9 H' T8 p# J* z  u$ a
MCASP_RX_MODE_DMA);2 Q3 [4 ?* {& ~  }
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
5 D* L# O3 N! l; s+ g  ^MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
: w7 v) t- }& E7 R, N. Z+ G$ hMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, # \3 w9 v) `  `: x; C) A$ O! g
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
2 p* @) n1 y. F: r% S' zMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 8 Q8 w6 ]& D6 x
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */6 V' e6 G: ?8 Z1 Q: G* R
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);3 H4 j2 J4 n5 r, J9 v' E; m: J
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 5 R0 z0 n% i. C0 H! z
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,4 ^, G3 |, X/ g0 ^) P
0x00, 0xFF);
/* configure the clock for transmitter */
) x, P- L/ F8 a% I. P& nMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);0 Q" [# H/ H5 w6 x
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); + _% I3 t7 ?% X& F
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,; b' M( Q% w" A
0x00, 0xFF);
% }  d) s% h. t- Y8 i
! Z% @" D- ~7 B$ C9 s9 a8 E/* Enable synchronization of RX and TX sections */ 5 ^/ e. j* h% m" v# D
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
- y- |7 N) [. [. zMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
8 ]/ {! d# K' u2 ?: p! F( {) ZMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
% n; {+ o; a1 H- ~* J** Set the serializers, Currently only one serializer is set as
, D' z# C- a6 s& |0 f+ q! U** transmitter and one serializer as receiver.
  ]- I, f( `  k/ ~# g*/
# x; K# g# Y5 {- O( ?McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);: V2 e' w( N9 S$ d' m
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*# Z  W" H, v: w) ]" K
** Configure the McASP pins $ [2 e& |1 Y3 |9 P5 g* {
** Input - Frame Sync, Clock and Serializer Rx1 i' m& m+ }! ~+ Y( O# i* K; T! Y# N
** Output - Serializer Tx is connected to the input of the codec 6 s8 E+ _; @# I
*/$ M5 k  ?, q$ Y7 }" G9 H: _
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);" s" f' _# Z5 f9 T2 u' v3 j
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));- |4 G5 @. |$ f3 s  d
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX8 N) Z* T" H2 p' P1 ?
| MCASP_PIN_ACLKX% f! i4 v6 [- ^, w, H+ v
| MCASP_PIN_AHCLKX) p9 Y* {/ u( R, E& D
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */. Y4 o% ]5 j7 Z5 ]* q) O
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
' V) y5 L9 o5 v* R) _0 a| MCASP_TX_CLKFAIL ! c# b1 r/ U5 W0 C+ n
| MCASP_TX_SYNCERROR7 u& c& M" M. g
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
& r; \# f- F; N$ h1 n: T| MCASP_RX_CLKFAIL' a- v, ]6 ]: r  t( b' C
| MCASP_RX_SYNCERROR
4 r* k2 `% @0 W$ ?) ~1 Z  X| MCASP_RX_OVERRUN);
/ y4 ^0 @. g2 T& P4 R$ s. y}
static void I2SDataTxRxActivate(void)' {  }, \3 [. U# m% i$ g; ^9 n
{
8 ?- }7 j" E; }/* Start the clocks */) h5 P7 E+ K0 E+ I# P! X
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
9 L2 @  V+ L2 N# a& W) z2 G4 |McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
4 x& \# Y; l. o$ l% F5 _EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,: ?! V; b5 W, S6 i2 O1 v
EDMA3_TRIG_MODE_EVENT);
# l0 K/ c% p6 X  ?7 WEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, $ f5 |3 |0 y2 [% I, {! Z7 |3 u
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */; j- n7 H$ z5 p' ~; r
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);' e# i- d2 l, N( {$ r2 x  a" j: r, w
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */" a8 \8 m1 j& u2 p3 x
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
& [. b4 O6 U* X+ u3 a. pMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
% u( G" T" o( T; X6 s' IMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
; q: o# X$ N6 ?2 Q" m7 U( K) m}

( H4 g! r. z7 f; y
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
3 ]( }) n6 |- `* S) w* E; [
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-12 18:07 , Processed in 0.040349 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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