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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10683|回复: 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,6 y( Z9 w5 b4 Y- `
input mcasp_ahclkx,, N  A" M- a& K% W; J1 l- U5 Y2 F
input mcasp_aclkx,- l; k% u0 X" h
input axr0,
% r& Z) [; U& `) m# L" b; \, C9 m
7 s3 i$ w/ }, Q, Noutput mcasp_afsr,
, {. `! i3 q! z4 w+ g, Ooutput mcasp_ahclkr,; T- W/ F0 ?! B2 \% l& p5 V
output mcasp_aclkr,
7 `6 d- I! |* P0 G" Youtput axr1,/ [2 ?: _" f6 {  |( g$ v
assign mcasp_afsr = mcasp_afsx;7 {' @. G' j+ C2 U0 Z
assign mcasp_aclkr = mcasp_aclkx;
' J  ]) `6 B" Z8 q6 }assign mcasp_ahclkr = mcasp_ahclkx;
) g# J/ Y5 J" v4 P0 J+ I$ tassign axr1 = axr0;

7 I! X& p1 y6 \+ z8 z# a  Q% j# I9 T" I
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

3 M5 ?+ M6 k/ _2 }
static void McASPI2SConfigure(void)
+ _& C6 ^3 Q% z: c{
6 x. j: o1 R9 r  x) W. BMcASPRxReset(SOC_MCASP_0_CTRL_REGS);, q: w& E; |* x6 j. c" O9 D1 r
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
4 v5 y6 J8 F! k) G$ r5 ]$ WMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
0 X6 q" b0 ~, h9 y: U$ V7 jMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
1 k; N! x6 g: k2 V) e1 aMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
7 n+ I2 i5 T4 H  CMCASP_RX_MODE_DMA);
: w$ y7 R) a5 W* @. aMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,% i( L7 E8 I9 u" S0 N& Z+ Q
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
& z" O/ U. O+ R6 M8 e# z$ T7 ~McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
' e& z/ N+ ^& zMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
* \5 s! n' i6 G# HMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
1 }3 {! K1 Q/ q9 z. }MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
) a$ t2 B' E2 [$ g9 v5 k9 X* x8 sMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);5 l  f+ u5 o- f$ H2 o* [9 N4 {
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); * g/ m! D* j' @! d& M
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,/ Z: b" V; Q9 `, x$ P, U
0x00, 0xFF);
/* configure the clock for transmitter */6 ^6 P! j0 s+ S. _, n
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
/ {+ h6 D. Q6 _" F* `9 DMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); 2 U9 g+ e0 |- v- z' [, l
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,/ P+ H* a/ y, I4 C7 g
0x00, 0xFF);- y( Y! a2 n8 A! L
8 D: P' q( d# `" g
/* Enable synchronization of RX and TX sections */ 1 v( S# j9 V1 h6 `
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
0 G/ y. i" r' e+ z5 zMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/ R! c& S( e( x0 ?) n3 pMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*2 @- n6 c: h2 l4 y1 }
** Set the serializers, Currently only one serializer is set as
' Y: g3 R$ x- \** transmitter and one serializer as receiver.5 ?; o# d' ~* c6 H/ P! {2 X8 T" [4 t0 B
*/
2 d8 V5 z1 w, F: f; N: z. lMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);9 ?2 f; n& z6 j( I3 {* p
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*$ K" x8 K( U* k' }7 H4 S: O4 G
** Configure the McASP pins , v+ p) n) m# a, O0 b" `( t3 Q  s
** Input - Frame Sync, Clock and Serializer Rx
/ P+ g4 z$ g: m+ p! A0 p** Output - Serializer Tx is connected to the input of the codec
( k" ~& b7 m3 `  ?*/5 z) R2 c5 \3 M$ u
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
2 }$ L1 R3 z7 ^4 f7 w0 LMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));: t* \. u% A/ v7 O0 m
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
% X  f7 T) |% L% Q5 B: b' || MCASP_PIN_ACLKX
4 D- x3 C5 _) t! P. {| MCASP_PIN_AHCLKX+ z$ P: ?. A1 L* A  I! p7 s
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */) V) A3 s" x. c8 v
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
9 R/ `- o  S7 Y$ I. \/ F| MCASP_TX_CLKFAIL , n) W* h8 D  J. ]" |
| MCASP_TX_SYNCERROR
7 D7 o+ u& t! |. J! ?5 C| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
& r6 `/ g& o6 l  w| MCASP_RX_CLKFAIL
' a9 m9 T3 }4 n| MCASP_RX_SYNCERROR
" k+ \+ m# d# t! N# I+ ^3 D| MCASP_RX_OVERRUN);# ^$ e% V8 \6 F! s
}
static void I2SDataTxRxActivate(void)
2 _! m+ C: t: d1 }4 S1 [. m* [{
. j5 ^' K& h2 X4 P" s1 t/* Start the clocks */
$ `1 T7 X* j* \# ?0 v9 c/ u9 l( }" PMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
* C$ i/ ^' G) r" @" e6 CMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */$ \& g1 a- l8 d1 V
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
" I9 a5 f8 \) y2 a2 m6 KEDMA3_TRIG_MODE_EVENT);0 A0 D2 k/ ]% ~% k, d8 D
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
' v: J! T! {  r7 {0 HEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */3 c* ?1 A1 Z1 \% n
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
6 C; i1 n) _$ G6 B7 X) B1 ]McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
* T2 w" A" [' M* s; e3 A$ w$ ]while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */* Q. K0 N) [8 a# K
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);$ u, c) k: c! N/ c) q
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);3 w) a* K4 k5 X% _$ O3 R
}

( u. r0 x& U& i  c! D
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

' h% F( m" b5 Q( O. X, |$ o
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-13 01:32 , Processed in 0.039472 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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