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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12383|回复: 0
打印 上一主题 下一主题

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1216

积分

金牌会员

Rank: 6Rank: 6

积分
1216
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,# J( p' M" s6 E7 ?% q) j& p5 B
input mcasp_ahclkx,5 u- F6 I( W: B+ \* T  R# }
input mcasp_aclkx,  V, S8 A/ v/ H% X4 @; f+ m
input axr0,, y/ k! u/ R6 U( r
/ P2 c- w: p% s. G2 r: I# n9 C- `6 k9 F
output mcasp_afsr,
* |( `$ ^0 ~0 i2 a1 B: k4 Eoutput mcasp_ahclkr,6 C1 R+ b+ j1 N: m# c" ?, Y
output mcasp_aclkr,
3 H1 @* d( @& zoutput axr1,
% s- |  `3 ~* u" Z# O! e( |
assign mcasp_afsr = mcasp_afsx;
$ ], Z) w- w- z5 j5 P  I% qassign mcasp_aclkr = mcasp_aclkx;- M0 _: r( a! t* X9 k# K
assign mcasp_ahclkr = mcasp_ahclkx;
% L7 Q  L1 Z1 s5 {5 j( t1 t+ d, ]9 R) wassign axr1 = axr0;
( i4 Z; {/ X5 m/ y$ t& M6 M
4 q+ l0 @9 g) i5 m" e1 m9 Z6 y- {. Z
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

0 P5 e8 ?9 F. ?8 {
static void McASPI2SConfigure(void); n1 y7 I% ?- F5 G* G( N
{
, a" G/ w3 `3 z, p2 gMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
9 @9 O; v  h2 ~: X7 m6 i6 jMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
6 _$ T- K+ A' \# H6 w* q) g' VMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
2 N8 j6 ?" Y% C# c0 y% w% fMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */! @' v0 o) p$ G. f
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
: J: P  C$ U/ iMCASP_RX_MODE_DMA);( D) r" h1 g0 N) \# T+ F
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
" S# a( `/ {7 \MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */1 J5 X4 w% f% h) e  {! D
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 6 a% G3 V- r9 u( O; K
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
) N' @4 b: L. F6 S- ?9 xMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
* [& m4 e' C5 C3 s1 AMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
% _3 T0 d& |& W2 q* iMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);7 x7 q9 M/ }& Z( U' U5 E
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); ( O) O3 w6 a' S: S
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
$ a0 S; s( e! ~( j0x00, 0xFF);
/* configure the clock for transmitter */
& b+ e! ^# r6 R0 L; w2 ?McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);* Y6 `" `/ P2 Y  H
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
) w! E% ~8 G  q/ o& |6 sMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,' T  D- P' @) N  f* {* j$ K
0x00, 0xFF);  E( w0 r4 b: T/ \9 O

. B( H, f  C3 ~+ C/ Q& S# u* P/* Enable synchronization of RX and TX sections */ # d; a7 ^9 v# s8 E
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
" }' Z1 o( ]3 h9 F, oMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
8 |8 @5 u) Y2 r9 V5 S% v8 kMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
$ f- B# J% U# J7 }  V2 F** Set the serializers, Currently only one serializer is set as! P7 c5 |6 [: h5 e! T6 R+ N, |+ [: z  J
** transmitter and one serializer as receiver.
/ _) h+ Z" e$ I*/
) g# u6 T9 l* K0 R7 dMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
6 o* h4 ?( B, kMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*" v2 X% k+ \: [/ w) L6 u4 H
** Configure the McASP pins $ r- t  z* I" M5 Z% p9 B. v3 j( l$ L
** Input - Frame Sync, Clock and Serializer Rx
* Y- n$ n) B" O** Output - Serializer Tx is connected to the input of the codec
' m$ D/ W1 E$ p0 i; u*/6 k* j- J% q' I; n2 l' Y+ A/ J
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);. j1 s; E  w  W! |$ t' ]
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
/ G% Q$ f! y- e2 F: s# J! x+ z5 {5 q, RMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
2 q1 ]1 c" d) T| MCASP_PIN_ACLKX1 C4 C3 t7 L5 {) b( k2 N
| MCASP_PIN_AHCLKX
6 @" O) K+ @/ u- b) G5 l2 B0 }| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */+ s- N( F. ^1 S4 k, a3 Q
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR , {; E5 C& k: O$ Y* W3 O$ r" h
| MCASP_TX_CLKFAIL
8 I7 d1 R2 p6 s! @. e4 z) V! _| MCASP_TX_SYNCERROR0 K! U2 Q# u& \* a, \9 ^
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR ( `5 E6 x$ _* f6 w  G- r0 n
| MCASP_RX_CLKFAIL) f, a! R# Q5 H& I3 b
| MCASP_RX_SYNCERROR
( c- b# f1 Q$ e| MCASP_RX_OVERRUN);! v. N; q. ^% ^7 E: ^
}
static void I2SDataTxRxActivate(void)
  D4 X( |7 @! y4 L{
8 t- e( ]# [! b6 v/* Start the clocks */1 Z) v* \# Q# H
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
, M  b  n: {# Q3 q" fMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
" E$ r" T2 _% `' }EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,0 S/ Y/ [' M. V; f
EDMA3_TRIG_MODE_EVENT);
9 {3 o) B3 d( \9 m- B( Z1 t9 _+ rEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
0 V# H. e: u! d" `6 {3 [; OEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
& k; H+ d# t1 o6 J0 wMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
2 B; u7 }: k! [) Y; u& ?0 GMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
% c: o' C+ ~2 S# k; }' Qwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */3 L0 H& E7 E+ `" O  Q
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);, ?6 n: `6 |+ D* g+ U" F; [6 R0 r
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);: e3 Q  W! a" X, f* y
}
* `3 v) G9 P; u2 `
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
# f) d% m/ }7 S: [
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-4-7 03:43 , Processed in 0.040066 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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