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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8704|回复: 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,
5 G7 h3 F- |+ f0 T# p' kinput mcasp_ahclkx,' n% X* I* `( g9 w2 M7 X' ~6 v
input mcasp_aclkx,/ w6 b& O9 |5 ?8 G
input axr0,4 F7 C6 Z) z8 V5 u; i/ ^1 }
, [( }$ [# S$ x' y
output mcasp_afsr,
; K7 l/ m' P, c& noutput mcasp_ahclkr,
) _$ _- b5 z& `6 ?: Aoutput mcasp_aclkr,
$ J9 k6 v. E* k7 ~( k# ]  Moutput axr1,$ N0 x) v6 s5 a0 A5 x. `
assign mcasp_afsr = mcasp_afsx;
$ G* ?( }. P5 `, h- Q; i! Nassign mcasp_aclkr = mcasp_aclkx;
! Y  X6 o, K7 U6 a6 |assign mcasp_ahclkr = mcasp_ahclkx;; ?+ Z; f: @/ u/ a9 }# D: S" u& E
assign axr1 = axr0;

1 Z. J# p# g5 e  E/ x% h* W) P' ^; C+ B: K
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

7 N( W% d. G7 j* d0 Q3 p  o" Q+ F; _
static void McASPI2SConfigure(void)8 g7 O# A  ^1 a, f. K
{( _% a/ f3 }! f4 V7 v+ A
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
% H. }7 z! C9 x0 c) p! a' XMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */5 L+ B$ u; i: Y" [1 s% _
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
. X2 w% n% ~1 j9 I5 \McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
5 R8 b$ D( G/ f6 P& j; V. jMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
" U7 d* |" W5 ~. QMCASP_RX_MODE_DMA);  \8 u% q3 t) x4 @$ O- G
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
# L' n" u8 d& s/ `MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */$ D& l: ^7 q3 K3 [
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, + Z% O0 B( G# n: [
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
% T& l+ \/ `  {% HMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, ( z7 }2 I, F* R
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
9 n) |$ d. g# E" V* A- i7 vMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);6 M) s0 D: V% i- L" T
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
2 L6 n2 ]/ [6 m0 U& {( {9 _! [& DMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
+ h# c1 a: R: T( k1 \; l! `! F+ _$ J: a0x00, 0xFF);
/* configure the clock for transmitter */
2 W7 l' H' {: j7 EMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
$ w( @+ @( B9 H% l5 d( DMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); ! g" y0 W, x; _
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
9 t" L. H) a8 p0x00, 0xFF);
( g. X. N' Z$ P$ ?% ?0 g' ^
& H; P  w' K1 m7 a; w9 E/ g6 B/* Enable synchronization of RX and TX sections */ - y4 I2 a4 G( e9 J# x: i
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
, ?0 S# J9 r3 t4 M9 ~. ?) _McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
! |% c4 g* b" `9 G9 K0 eMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*3 A9 y' `$ {- h- g% l2 e1 \$ Y
** Set the serializers, Currently only one serializer is set as: i$ x8 B) W- ~
** transmitter and one serializer as receiver.7 X8 @- B0 i' x. X  ^( A
*/
0 L0 |, U$ @1 {% b% ^7 E7 g1 xMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);) _6 ?/ J" d) k3 t5 c! s
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
/ o, G- Z3 n" x/ q/ L** Configure the McASP pins
) Q  ?3 V) Z( l) E** Input - Frame Sync, Clock and Serializer Rx- i( d2 }2 h, \7 c$ [" Y$ G
** Output - Serializer Tx is connected to the input of the codec ( n+ C5 _3 L! h& Z
*/  c2 L; W7 L5 t+ H7 `
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
" ~2 U2 P5 s/ Z' JMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
* t8 d" W( g- P, }; n+ O# iMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
! `+ G# A, W' f7 T# w| MCASP_PIN_ACLKX
  Z& E  ^5 J8 C1 c( g% O& d7 a| MCASP_PIN_AHCLKX, H  ^" \# u0 V& U* J# P$ I
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */: R  K) e, a' V8 ^. S) n
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
: f; u6 R' g. s: x! Y# H# R3 [| MCASP_TX_CLKFAIL
8 W; d8 n+ l: X* O  h| MCASP_TX_SYNCERROR
! s* D: {& _- n- Y* `1 o- @| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR 7 `+ z6 E% q) }; N; r: u
| MCASP_RX_CLKFAIL
1 a4 X( j# E! x: V: D+ W| MCASP_RX_SYNCERROR 6 V" @3 J, c( ~& Z/ R
| MCASP_RX_OVERRUN);
0 }3 ^0 b6 j4 b, {. Z}
static void I2SDataTxRxActivate(void)' h& H* r5 x, n/ P
{- h/ p( N7 D& a
/* Start the clocks */
) b* Y$ I1 B# I4 AMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
' _% O4 A( E5 y% m) FMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */# Q. I9 n6 L+ i  z6 z4 ]
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
: r# z9 x, T# I3 EEDMA3_TRIG_MODE_EVENT);( [! e9 J9 K* E0 m; b
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, + ]/ u4 N! j1 ]. S( D% H! T
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */! @2 x0 u9 e+ F- m' d3 Y
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);$ G' T, h! E. w* L7 t6 x
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */& x: T+ L6 }. Q* ?2 z! K
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
# _9 g- X/ a5 E5 V& C# YMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);% R7 D) Z/ R# p0 M5 K+ ~; ]
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);1 z1 J8 ?* I. Z
}
3 C6 [- D& O' G) ^) q
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

! r6 J9 Z4 z4 C0 C
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-2 15:39 , Processed in 0.036577 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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