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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9165|回复: 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,9 b. B- v9 Q0 l
input mcasp_ahclkx,2 R. L: J2 ?) j: R" U
input mcasp_aclkx,$ @* [- E# L$ q: L3 N% O9 ~' G
input axr0," `: s* \6 S) k: Y: F

) v5 {2 B5 s8 p$ F* ]* X1 zoutput mcasp_afsr,2 B6 _. W: X+ }3 M" I
output mcasp_ahclkr,
# o  Z: D  V/ m, j8 r# m4 {output mcasp_aclkr,
" W# H' I! I! z% V& a; koutput axr1,
$ y2 j5 _( C% V. H, V) u1 }
assign mcasp_afsr = mcasp_afsx;
% Q( k# ~6 L* v; g4 m$ sassign mcasp_aclkr = mcasp_aclkx;
: f9 `, M( [4 a+ X9 |assign mcasp_ahclkr = mcasp_ahclkx;
( z1 D; }" [  w0 o. o8 fassign axr1 = axr0;
" I. g( V4 y1 ~. E. }/ v; I0 P4 y

+ [* D% v# _& y
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

3 s+ p$ a' H: a( X
static void McASPI2SConfigure(void)
; `: l7 ^+ R- W3 [{, t3 U" D4 n1 X# C
McASPRxReset(SOC_MCASP_0_CTRL_REGS);  r6 ]% }* _. l
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
& T: U9 i" r" m8 d9 hMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);0 x0 U" A; U7 {7 U7 m1 \
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
% z$ S  ?6 m4 YMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,9 z0 @2 t* T9 F
MCASP_RX_MODE_DMA);, E# I' ^7 g8 z- z  o  z/ R
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,! r! \. V$ k( T4 o/ d7 _
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
, i0 ~: c# l* y6 uMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
  l) T* N- u3 R  r% O( SMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
& Q, U/ g% H% P. s4 H: i# dMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, * ~3 O& [9 T% F& T( l
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */( M% X4 B6 O! l3 B( m2 f
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
8 c: |  g) b* g$ J) RMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 3 B+ |& U3 u2 j" L" U
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,$ c+ i* z7 D+ R" X
0x00, 0xFF);
/* configure the clock for transmitter */3 @) [! ^( r, f: A. u
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
" S3 a1 f* B' M1 O3 W( d4 wMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
3 u0 t( r9 ~9 G! u* g+ LMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
% s8 z2 ~% Q) ^' l0x00, 0xFF);, b# i" r2 u1 ^7 O0 v& ]

! W! s& ?4 K& K7 E) Q$ [5 {( |/* Enable synchronization of RX and TX sections */ 2 B+ ~) e/ |" i2 B6 e2 {) t; G, U
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
. n9 `2 k+ m3 j, t* F' \- @McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);( C) g$ Y" w: K* y( M0 X$ ~+ N5 N
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*# T9 M) i9 t4 b
** Set the serializers, Currently only one serializer is set as% c# k1 l4 h( _9 @1 V: n
** transmitter and one serializer as receiver.) X! W) @( p, E" c+ d$ v1 i
*/
4 T1 C2 o4 m/ WMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);0 [; Y4 t' ^) f
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
) O  n9 R2 k/ G6 p/ n2 O. S** Configure the McASP pins
2 q, c! G2 a" Y+ C3 b0 w9 _  B** Input - Frame Sync, Clock and Serializer Rx% |# o' I, l8 ^: O6 [, X
** Output - Serializer Tx is connected to the input of the codec 6 U; _! N  ~) @% c4 p2 V8 q4 }
*/
5 d4 g& @+ B7 f% Q8 WMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
2 a! h6 }+ n# n& Z3 Y+ F1 a- N8 \McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));/ R8 Z. Y) k6 W3 [2 \' h2 l
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
% O+ X* C5 z+ e8 B5 p  Z| MCASP_PIN_ACLKX+ s& F6 A3 Q' i: H6 k1 D4 X: n
| MCASP_PIN_AHCLKX, }" w5 B, L, r' p/ R' Z
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */6 v! A6 l2 s1 ^: J# a2 R# c3 Q
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
5 V  W: m) U# _( x) B- {& Z| MCASP_TX_CLKFAIL
; R+ J) i2 c$ j) h6 ?+ a| MCASP_TX_SYNCERROR9 I  {0 P4 S' }/ H0 z5 X9 Y3 b
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
/ w; R. D, y) g1 E8 c| MCASP_RX_CLKFAIL
/ H5 Y/ @6 @1 _: i+ y. z7 e0 }- k| MCASP_RX_SYNCERROR ( D( \8 P. J9 G
| MCASP_RX_OVERRUN);
' b& F$ s; h; ~  i}
static void I2SDataTxRxActivate(void)
4 Y9 A) ~7 h6 C{7 g1 ]* r7 E8 C* P3 W
/* Start the clocks */
' l' r- _, f, }% e, b  B* EMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);% ]- C$ b. n6 ^2 {- m5 l
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */6 b0 z0 Z+ A: H
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
) L5 w# q8 ?5 pEDMA3_TRIG_MODE_EVENT);* c1 }0 m! Z1 u
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, ' L6 F3 F; f  N% I# M0 X
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
& G5 G  D" m6 l& o% I& L& T0 QMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);6 ]! _6 I  C$ C! a2 X" ^: {
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
8 s. r3 L- R0 p5 ]4 q2 Swhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */! Y: L7 E6 Q$ O! g2 A& w+ V8 E
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
4 U" A2 W3 V; Y* K* D( jMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);3 \+ X& Y% u4 r! ~. G
}
  W' r8 z" b9 [' m' f' |
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
0 c1 l2 ~+ d7 c' ]; b# |: {
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-24 09:51 , Processed in 0.037172 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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